Skip to content

Commit d319467

Browse files
committed
Adjust integer boundary tests based on review feedback
1 parent ea81e51 commit d319467

23 files changed

+1636
-123
lines changed

integer.json

Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
1+
[
2+
{
3+
"description": "binary64 float (double) truncation",
4+
"schema": {
5+
"$schema": "https://json-schema.org/draft/next/schema",
6+
"type": "integer"
7+
},
8+
"tests": [
9+
{
10+
"description": "a small float whose nonzero-value fractional part is truncated in a binary64 float is not an integer",
11+
"data": 1.00000000000001,
12+
"valid": false
13+
},
14+
{
15+
"description": "a large float whose nonzero-value fractional part is truncated in a binary64 float is not an integer",
16+
"data": 9007199254740991.5,
17+
"valid": false
18+
}
19+
]
20+
},
21+
{
22+
"description": "maximum signed 32-bit integer comparison",
23+
"schema": {
24+
"$schema": "https://json-schema.org/draft/next/schema",
25+
"minimum": 2147483647,
26+
"maximum": 2147483647
27+
},
28+
"tests": [
29+
{
30+
"description": "comparison is true for equal numbers",
31+
"data": 2147483647,
32+
"valid": true
33+
},
34+
{
35+
"description": "comparison is false for inequal numbers",
36+
"data": 2147483646,
37+
"valid": false
38+
}
39+
]
40+
},
41+
{
42+
"description": "minimum signed 32-bit integer comparison",
43+
"schema": {
44+
"$schema": "https://json-schema.org/draft/next/schema",
45+
"minimum": -2147483648,
46+
"maximum": -2147483648
47+
},
48+
"tests": [
49+
{
50+
"description": "comparison is true for equal numbers",
51+
"data": -2147483648,
52+
"valid": true
53+
},
54+
{
55+
"description": "comparison is false for inequal numbers",
56+
"data": -2147483647,
57+
"valid": false
58+
}
59+
]
60+
},
61+
{
62+
"description": "maximum unsigned 32-bit integer comparison",
63+
"schema": {
64+
"$schema": "https://json-schema.org/draft/next/schema",
65+
"minimum": 4294967295,
66+
"maximum": 4294967295
67+
},
68+
"tests": [
69+
{
70+
"description": "comparison is true for equal numbers",
71+
"data": 4294967295,
72+
"valid": true
73+
},
74+
{
75+
"description": "comparison is false for inequal numbers",
76+
"data": 4294967294,
77+
"valid": false
78+
}
79+
]
80+
},
81+
{
82+
"description": "ECMAScript Number.MAX_SAFE_INTEGER (2^53-1) comparison",
83+
"schema": {
84+
"$schema": "https://json-schema.org/draft/next/schema",
85+
"minimum": 9007199254740991,
86+
"maximum": 9007199254740991
87+
},
88+
"tests": [
89+
{
90+
"description": "comparison is true for equal numbers",
91+
"data": 9007199254740991,
92+
"valid": true
93+
},
94+
{
95+
"description": "comparison is false for inequal numbers",
96+
"data": 9007199254740990,
97+
"valid": false
98+
}
99+
]
100+
},
101+
{
102+
"description": "ECMAScript Number.MIN_SAFE_INTEGER (-2^53-1) comparison",
103+
"schema": {
104+
"$schema": "https://json-schema.org/draft/next/schema",
105+
"minimum": -9007199254740991,
106+
"maximum": -9007199254740991
107+
},
108+
"tests": [
109+
{
110+
"description": "comparison is true for equal numbers",
111+
"data": -9007199254740991,
112+
"valid": true
113+
},
114+
{
115+
"description": "comparison is false for inequal numbers",
116+
"data": -9007199254740990,
117+
"valid": false
118+
}
119+
]
120+
},
121+
{
122+
"description": "maximum signed 64-bit integer comparison",
123+
"schema": {
124+
"$schema": "https://json-schema.org/draft/next/schema",
125+
"minimum": 9223372036854775807,
126+
"maximum": 9223372036854775807
127+
},
128+
"tests": [
129+
{
130+
"description": "comparison is true for equal numbers",
131+
"data": 9223372036854775807,
132+
"valid": true
133+
},
134+
{
135+
"description": "comparison is false for inequal numbers",
136+
"data": 9223372036854775806,
137+
"valid": false
138+
}
139+
]
140+
},
141+
{
142+
"description": "minimum signed 64-bit integer comparison",
143+
"schema": {
144+
"$schema": "https://json-schema.org/draft/next/schema",
145+
"minimum": -9223372036854775808,
146+
"maximum": -9223372036854775808
147+
},
148+
"tests": [
149+
{
150+
"description": "comparison is true for equal numbers",
151+
"data": -9223372036854775808,
152+
"valid": true
153+
},
154+
{
155+
"description": "comparison is false for inequal numbers",
156+
"data": -9223372036854775807,
157+
"valid": false
158+
}
159+
]
160+
},
161+
{
162+
"description": "maximum unsigned 64-bit integer comparison",
163+
"schema": {
164+
"$schema": "https://json-schema.org/draft/next/schema",
165+
"minimum": 18446744073709551615,
166+
"maximum": 18446744073709551615
167+
},
168+
"tests": [
169+
{
170+
"description": "comparison is true for equal numbers",
171+
"data": 18446744073709551615,
172+
"valid": true
173+
},
174+
{
175+
"description": "comparison is false for inequal numbers",
176+
"data": 18446744073709551614,
177+
"valid": false
178+
}
179+
]
180+
},
181+
{
182+
"description": "maximum unsigned 128-bit integer comparison",
183+
"schema": {
184+
"$schema": "https://json-schema.org/draft/next/schema",
185+
"minimum": 340282366920938463463374607431768211455,
186+
"maximum": 340282366920938463463374607431768211455
187+
},
188+
"tests": [
189+
{
190+
"description": "comparison is true for equal numbers",
191+
"data": 340282366920938463463374607431768211455,
192+
"valid": true
193+
},
194+
{
195+
"description": "comparison is false for inequal numbers",
196+
"data": 340282366920938463463374607431768211454,
197+
"valid": false
198+
}
199+
]
200+
}
201+
]

tests/draft-next/optional/bignum.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@
1515
"description": "a negative bignum is an integer",
1616
"data": -12345678910111213141516171819202122232425262728293031,
1717
"valid": true
18+
},
19+
{
20+
"description": "a bignum with a nonzero-value fractional part is not an integer",
21+
"data": 12345678910111213141516171819202122232425262728293031.5,
22+
"valid": false
1823
}
1924
]
2025
},

0 commit comments

Comments
 (0)