-
Notifications
You must be signed in to change notification settings - Fork 750
/
Copy pathfixedOffset.test.js
73 lines (61 loc) · 3.25 KB
/
fixedOffset.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/* global test expect */
import { FixedOffsetZone, IANAZone } from "../../src/luxon";
test("FixedOffsetZone.utcInstance returns a singleton", () => {
expect(FixedOffsetZone.utcInstance).toBe(FixedOffsetZone.utcInstance);
});
test("FixedOffsetZone.utcInstance provides valid UTC data", () => {
expect(FixedOffsetZone.utcInstance.type).toBe("fixed");
expect(FixedOffsetZone.utcInstance.name).toBe("UTC");
expect(FixedOffsetZone.utcInstance.offsetName()).toBe("UTC");
expect(FixedOffsetZone.utcInstance.formatOffset(0, "short")).toBe("+00:00");
expect(FixedOffsetZone.utcInstance.isUniversal).toBe(true);
expect(FixedOffsetZone.utcInstance.offset()).toBe(0);
expect(FixedOffsetZone.utcInstance.isValid).toBe(true);
});
test("FixedOffsetZone.parseSpecifier returns a valid instance from a UTC offset string", () => {
let zone = FixedOffsetZone.parseSpecifier("UTC+6");
expect(zone.isValid).toBe(true);
expect(zone.offset()).toBe(360);
expect(zone.name).toBe("UTC+6");
zone = FixedOffsetZone.parseSpecifier("UTC+06");
expect(zone.isValid).toBe(true);
expect(zone.offset()).toBe(360);
expect(zone.name).toBe("UTC+6");
zone = FixedOffsetZone.parseSpecifier("UTC-6:00");
expect(zone.isValid).toBe(true);
expect(zone.offset()).toBe(-360);
expect(zone.name).toBe("UTC-6");
});
test("FixedOffsetZone.parseSpecifier returns null for invalid data", () => {
expect(FixedOffsetZone.parseSpecifier()).toBe(null);
expect(FixedOffsetZone.parseSpecifier(null)).toBe(null);
expect(FixedOffsetZone.parseSpecifier("")).toBe(null);
expect(FixedOffsetZone.parseSpecifier("foo")).toBe(null);
expect(FixedOffsetZone.parseSpecifier("UTC+blorp")).toBe(null);
});
test("FixedOffsetZone.formatOffset is consistent despite the provided timestamp", () => {
// formatOffset accepts a timestamp to maintain the call signature of the abstract Zone class,
// but because of the nature of a fixed offset zone instance, the TS is ignored.
const zone = FixedOffsetZone.instance(-300);
expect(zone.formatOffset(0, "techie")).toBe("-0500");
// March 9th 2019. A day before DST started
expect(zone.formatOffset(1552089600, "techie")).toBe("-0500");
// March 11th 2019. A day after DST started
expect(zone.formatOffset(1552280400, "techie")).toBe("-0500");
});
test("FixedOffsetZone.formatOffset prints the correct sign before the offset", () => {
expect(FixedOffsetZone.instance(-300).formatOffset(0, "short")).toBe("-05:00");
expect(FixedOffsetZone.instance(-30).formatOffset(0, "short")).toBe("-00:30");
// Note the negative zero results in a + sign
expect(FixedOffsetZone.instance(-0).formatOffset(0, "short")).toBe("+00:00");
expect(FixedOffsetZone.instance(0).formatOffset(0, "short")).toBe("+00:00");
expect(FixedOffsetZone.instance(30).formatOffset(0, "short")).toBe("+00:30");
expect(FixedOffsetZone.instance(300).formatOffset(0, "short")).toBe("+05:00");
});
test("FixedOffsetZone.equals requires both zones to be fixed", () => {
expect(FixedOffsetZone.utcInstance.equals(IANAZone.create("UTC"))).toBe(false);
});
test("FixedOffsetZone.equals compares fixed offset values", () => {
expect(FixedOffsetZone.utcInstance.equals(FixedOffsetZone.instance(0))).toBe(true);
expect(FixedOffsetZone.instance(60).equals(FixedOffsetZone.instance(-60))).toBe(false);
});