summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2025-09-09 11:42:42 -0400
committerpommicket <pommicket@gmail.com>2025-09-09 11:42:42 -0400
commitfd62eaa814609835c87df5f24633760552ce64ea (patch)
tree6bbf1ed940bd7a977ce26cedba74049a256eb846 /tests
parentc962ff7b730dfda801a1d9d6d3e1b2fbb9f98d2f (diff)
Add interpretation tests for (u)int, disallow -2^63 as an int
Diffstat (limited to 'tests')
-rw-r--r--tests/interpretation/README.md11
-rw-r--r--tests/interpretation/int.pom47
-rw-r--r--tests/interpretation/uint.pom38
3 files changed, 96 insertions, 0 deletions
diff --git a/tests/interpretation/README.md b/tests/interpretation/README.md
index ad18e09..b263e05 100644
--- a/tests/interpretation/README.md
+++ b/tests/interpretation/README.md
@@ -1,3 +1,14 @@
# Interpretation tests
These tests check that booleans, numbers, floats, and lists are interpreted correctly.
+
+`int.pom`, `uint.pom`, `float.pom`, `boolean.pom` — These files contain two sections,
+`[good]` and `[bad]`. The keys in `good` are in pairs `k.a` and `k.b`. Their values must
+parse to the same int/uint/float/boolean as each other.
+The values in `bad` are all invalid int/uint/float/booleans, and parsing them should
+return an error.
+
+`list.pom` — The keys in this file are in pairs `k.list` and `k.sep`.
+`k.list` is a POM list, and `k.sep` is the concatenation of `x;` for each entry
+`x` in the list (none of the entries have `;` in them, so this representation is
+unambiguous).
diff --git a/tests/interpretation/int.pom b/tests/interpretation/int.pom
new file mode 100644
index 0000000..7158dc2
--- /dev/null
+++ b/tests/interpretation/int.pom
@@ -0,0 +1,47 @@
+[good]
+
+three.a = 3
+three.b = 0x3
+
+quote_three.a = "3"
+quote_three.b = `3`
+
+plus_three.a = +3
+plus_three.b = +0x3
+
+negative_three.a = -3
+negative_three.b = -0x3
+
+zero.a = 0
+zero.b = 0x0000000000000000000000000000
+
+sign_zero.a = +0
+sign_zero.b = -0
+
+hex.a = 0x0123fF
+hex.b = 74751
+
+negative_hex.a = -0Xfade
+negative_hex.b = -64222
+
+largest.a = 9223372036854775807
+largest.b = 0x7fffffffffffffff
+
+smallest.a = -9223372036854775807
+smallest.b = -0x7fffffffffffffff
+
+[bad]
+space_three = " 3"
+leading_zero = 03
+negative_leading_zero = -03
+trailing_dec = 35a
+trailing_hex = 0x35g
+decimal = 3.0
+multi_sign = -+3
+multi_sign2 = +-3
+multi_sign3 = ++3
+multi_sign4 = --3
+too_large = 9223372036854775808
+too_large_hex = 0x8000000000000000
+too_small = -9223372036854775808
+too_small_hex = -0x8000000000000000
diff --git a/tests/interpretation/uint.pom b/tests/interpretation/uint.pom
new file mode 100644
index 0000000..be15211
--- /dev/null
+++ b/tests/interpretation/uint.pom
@@ -0,0 +1,38 @@
+[good]
+
+three.a = 3
+three.b = 0x3
+
+quote_three.a = "3"
+quote_three.b = `3`
+
+plus_three.a = +3
+plus_three.b = +0x3
+
+zero.a = 0
+zero.b = 0x0000000000000000000000000000
+
+sign_zero.a = +0
+sign_zero.b = 0
+
+hex.a = 0x0123fF
+hex.b = 74751
+
+hex2.a = 0Xfade
+hex2.b = 64222
+
+largest.a = 9223372036854775807
+largest.b = 0x7fffffffffffffff
+
+[bad]
+space_three = " 3"
+leading_zero = 03
+negative = -3
+negative_hex = -0x3
+trailing_dec = 35a
+trailing_hex = 0x35g
+decimal = 3.0
+multi_sign = ++3
+too_large = 9223372036854775808
+too_large_hex = 0x8000000000000000
+negative_zero = -0