[m-rev.] diff: add test of uint{16, 64} to decimal string conversion
Julien Fischer
jfischer at opturion.com
Sun Oct 31 17:17:33 AEDT 2021
Add tests of uint{16,64} to decimal string conversion.
This is to support upcoming changes to how these conversions are implemented.
tests/hard_coded/uint{16,64}_to_string.{m,exp}:
Add the new tests.
tests/hard_coded/uint32_to_string.m:
Adjust a comment.
tests/hard_coded/Mmakefile:
Add the new tests.
Julien.
diff --git a/tests/hard_coded/Mmakefile b/tests/hard_coded/Mmakefile
index af4ab31..465020d 100644
--- a/tests/hard_coded/Mmakefile
+++ b/tests/hard_coded/Mmakefile
@@ -459,6 +459,7 @@ ORDINARY_PROGS = \
uc_export_enum \
uint16_from_bytes \
uint16_switch_test \
+ uint16_to_string \
uint32_from_bytes \
uint32_switch_test \
uint32_to_string \
@@ -467,6 +468,7 @@ ORDINARY_PROGS = \
uint64_ground_term \
uint64_string_conv \
uint64_switch_test \
+ uint64_to_string \
uint8_switch_test \
uint_string_conv \
uint_switch_test \
diff --git a/tests/hard_coded/uint16_to_string.exp b/tests/hard_coded/uint16_to_string.exp
new file mode 100644
index 0000000..691483f
--- /dev/null
+++ b/tests/hard_coded/uint16_to_string.exp
@@ -0,0 +1,28 @@
+0
+1
+2
+7
+8
+9
+10
+11
+99
+100
+101
+126
+127
+128
+254
+255
+256
+999
+1000
+1001
+9999
+10000
+10001
+32766
+32767
+32768
+65534
+65535
diff --git a/tests/hard_coded/uint16_to_string.m b/tests/hard_coded/uint16_to_string.m
new file mode 100644
index 0000000..73025c5
--- /dev/null
+++ b/tests/hard_coded/uint16_to_string.m
@@ -0,0 +1,68 @@
+%---------------------------------------------------------------------------%
+% vim: ft=mercury ts=4 sw=4 et
+%---------------------------------------------------------------------------%
+%
+% A test of uint16 to decimal string conversion.
+%
+%---------------------------------------------------------------------------%
+
+:- module uint16_to_string.
+:- interface.
+
+:- import_module io.
+
+:- pred main(io::di, io::uo) is det.
+
+%---------------------------------------------------------------------------%
+%---------------------------------------------------------------------------%
+
+:- implementation.
+
+:- import_module list.
+:- import_module string.
+:- import_module uint16.
+
+%---------------------------------------------------------------------------%
+
+main(!IO) :-
+ P = (pred(U::in, !.IO::di, !:IO::uo) is det :-
+ io.print_line(uint16_to_string(U), !IO)
+ ),
+ list.foldl(P, test_numbers, !IO).
+
+:- func test_numbers = list(uint16).
+
+test_numbers = [
+ 0u16,
+ 1u16,
+ 2u16,
+ 7u16,
+ 8u16,
+ 9u16,
+ 10u16,
+ 11u16,
+ 99u16,
+ 100u16,
+ 101u16,
+ 126u16, % max_int8 - 1
+ 127u16, % max_int8
+ 128u16, % max_int8 + 1
+ 254u16, % max_uint8 - 1
+ 255u16, % max_uint8
+ 256u16, % max_uint8 + 1
+ 999u16,
+ 1000u16,
+ 1001u16,
+ 9999u16,
+ 10000u16,
+ 10001u16,
+ 32766u16, % max_int16 - 1
+ 32767u16, % max_int16
+ 32768u16, % max_int16 + 1,
+ 65534u16, % max_uint16 - 1
+ 65535u16 % max_uint16
+].
+
+%---------------------------------------------------------------------------%
+:- end_module uint16_to_string.
+%---------------------------------------------------------------------------%
diff --git a/tests/hard_coded/uint32_to_string.m b/tests/hard_coded/uint32_to_string.m
index ee8df01..9d7e6a8 100644
--- a/tests/hard_coded/uint32_to_string.m
+++ b/tests/hard_coded/uint32_to_string.m
@@ -2,7 +2,7 @@
% vim: ft=mercury ts=4 sw=4 et
%---------------------------------------------------------------------------%
%
-% A test of uint32 to string conversion.
+% A test of uint32 to decimal string conversion.
%
%---------------------------------------------------------------------------%
diff --git a/tests/hard_coded/uint64_to_string.exp b/tests/hard_coded/uint64_to_string.exp
new file mode 100644
index 0000000..efbbde0
--- /dev/null
+++ b/tests/hard_coded/uint64_to_string.exp
@@ -0,0 +1,93 @@
+0
+1
+2
+4
+7
+8
+9
+10
+11
+15
+16
+31
+32
+64
+99
+100
+101
+126
+127
+128
+254
+255
+256
+999
+1000
+1001
+1023
+1024
+9999
+10000
+10001
+32766
+32767
+32768
+65534
+65535
+65536
+99999
+100000
+100001
+999999
+1000000
+1000001
+9999999
+10000000
+10000001
+99999999
+100000000
+100000001
+999999999
+1000000000
+1000000001
+2147483646
+2147483647
+2147483648
+4294967294
+4294967295
+4294967296
+9999999999
+10000000000
+10000000001
+99999999999
+100000000000
+100000000001
+999999999999
+1000000000000
+1000000000001
+9999999999999
+10000000000000
+10000000000001
+99999999999999
+100000000000000
+100000000000001
+999999999999999
+1000000000000000
+1000000000000001
+9999999999999999
+10000000000000000
+10000000000000001
+99999999999999999
+100000000000000000
+100000000000000001
+999999999999999999
+1000000000000000000
+1000000000000000001
+9223372036854775806
+9223372036854775807
+9223372036854775808
+9999999999999999999
+10000000000000000000
+10000000000000000001
+18446744073709551614
+18446744073709551615
diff --git a/tests/hard_coded/uint64_to_string.m b/tests/hard_coded/uint64_to_string.m
new file mode 100644
index 0000000..24c952c
--- /dev/null
+++ b/tests/hard_coded/uint64_to_string.m
@@ -0,0 +1,134 @@
+%---------------------------------------------------------------------------%
+% vim: ft=mercury ts=4 sw=4 et
+%---------------------------------------------------------------------------%
+%
+% A test of uint64 to decimal string conversion.
+%
+%---------------------------------------------------------------------------%
+
+:- module uint64_to_string.
+:- interface.
+
+:- import_module io.
+
+:- pred main(io::di, io::uo) is det.
+
+%---------------------------------------------------------------------------%
+%---------------------------------------------------------------------------%
+
+:- implementation.
+
+:- import_module int64.
+:- import_module list.
+:- import_module string.
+:- import_module uint64.
+
+%---------------------------------------------------------------------------%
+
+main(!IO) :-
+ P = (pred(U::in, !.IO::di, !:IO::uo) is det :-
+ io.print_line(uint64_to_string(U), !IO)
+ ),
+ list.foldl(P, test_numbers, !IO).
+
+:- func test_numbers = list(uint64).
+
+test_numbers = [
+ 0u64,
+ 1u64,
+ 2u64,
+ 4u64,
+ 7u64,
+ 8u64,
+ 9u64,
+ 10u64,
+ 11u64,
+ 15u64,
+ 16u64,
+ 31u64,
+ 32u64,
+ 64u64,
+ 99u64,
+ 100u64,
+ 101u64,
+ 126u64, % max_int8 - 1
+ 127u64, % max_int8
+ 128u64, % max_int8 + 1
+ 254u64, % max_uint8 - 1
+ 255u64, % max_uint8
+ 256u64, % max_uint8 + 1
+ 999u64,
+ 1000u64,
+ 1001u64,
+ 1023u64,
+ 1024u64,
+ 9999u64,
+ 10000u64,
+ 10001u64,
+ 32766u64, % max_int16 - 1
+ 32767u64, % max_int16
+ 32768u64, % max_int16 + 1
+ 65534u64, % max_uint16 - 1
+ 65535u64, % max_uint16
+ 65536u64, % max_uint16 + 1
+ 99999u64,
+ 100000u64,
+ 100001u64,
+ 999999u64,
+ 1000000u64,
+ 1000001u64,
+ 9999999u64,
+ 10000000u64,
+ 10000001u64,
+ 99999999u64,
+ 100000000u64,
+ 100000001u64,
+ 999999999u64,
+ 1000000000u64,
+ 1000000001u64,
+ 2147483646u64, % max_int32 - 1
+ 2147483647u64, % max_int32
+ 2147483648u64, % max_int32 + 1
+ 4294967294u64, % max_uint32 - 1
+ 4294967295u64, % max_uint32
+ 4294967296u64, % max_uint32 + 1
+ 9999999999u64,
+ 10000000000u64,
+ 10000000001u64,
+ 99999999999u64,
+ 100000000000u64,
+ 100000000001u64,
+ 999999999999u64,
+ 1000000000000u64,
+ 1000000000001u64,
+ 9999999999999u64,
+ 10000000000000u64,
+ 10000000000001u64,
+ 99999999999999u64,
+ 100000000000000u64,
+ 100000000000001u64,
+ 999999999999999u64,
+ 1000000000000000u64,
+ 1000000000000001u64,
+ 9999999999999999u64,
+ 10000000000000000u64,
+ 10000000000000001u64,
+ 99999999999999999u64,
+ 100000000000000000u64,
+ 100000000000000001u64,
+ 999999999999999999u64,
+ 1000000000000000000u64,
+ 1000000000000000001u64,
+ 9223372036854775806u64, % max_int64 - 1
+ 9223372036854775807u64, % max_int64
+ 9223372036854775808u64, % max_int64 + 1
+ 9999999999999999999u64,
+ 10000000000000000000u64,
+ 10000000000000000001u64,
+ 18446744073709551614u64, % max_uint64 - 1
+ 18446744073709551615u64 % max_uint64
+].
+
+%---------------------------------------------------------------------------%
+:- end_module uint64_to_string.
+%---------------------------------------------------------------------------%
More information about the reviews
mailing list