changeset 688:e338babd5670

int: add str2uXX test cases for min/max of each uint size Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Thu, 28 Feb 2019 09:12:55 -0500
parents 19bcd869e80d
children 4076dd063101
files tests/test_str2uint.c
diffstat 1 files changed, 255 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test_str2uint.c	Mon Feb 25 16:11:48 2019 -0500
+++ b/tests/test_str2uint.c	Thu Feb 28 09:12:55 2019 -0500
@@ -236,6 +236,261 @@
 		.out[B16] = ENT(0, 0, 0, 0, -ERANGE, -ERANGE, -ERANGE, -ERANGE),
 	},
 	/*
+	 * Check min/max for each uint size
+	 *
+	 * Note: We don't use base prefixes (0 & 0x) in all the inputs to
+	 * test those inputs in different bases as well - they are "free"
+	 * test cases.
+	 */
+	/* highest 8-bit ... */
+	{
+		.in       = "255", /* ... base 10 */
+		.out[B8]  = ENT(0255,  0255,  0255,  0255, 0, 0, 0, 0),
+		.out[B10] = ENT( 255,   255,   255,   255, 0, 0, 0, 0),
+		.out[B16] = ENT(   0, 0x255, 0x255, 0x255, -ERANGE, 0, 0, 0),
+	},
+	{
+		.in       = "377", /* ... base 8 (no prefix) */
+		.out[B8]  = ENT(0377,  0377,  0377,  0377, 0, 0, 0, 0),
+		.out[B10] = ENT(   0,   377,   377,   377, -ERANGE, 0, 0, 0),
+		.out[B16] = ENT(   0, 0x377, 0x377, 0x377, -ERANGE, 0, 0, 0),
+	},
+	{
+		.in       = "0377", /* ... base 8 (prefix) */
+		.out[B8]  = ENT(0377,  0377,  0377,  0377, 0, 0, 0, 0),
+		.out[B10] = ENT(   0,   377,   377,   377, -ERANGE, 0, 0, 0),
+		.out[B16] = ENT(   0, 0x377, 0x377, 0x377, -ERANGE, 0, 0, 0),
+	},
+	{
+		.in       = "ff", /* ... base 16 (no prefix) */
+		.out[B8]  = ENT(   0,    0,    0,    0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B10] = ENT(   0,    0,    0,    0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B16] = ENT(0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0),
+	},
+	{
+		.in       = "0xff", /* ... base 16 (prefix) */
+		.out[B8]  = ENT(   0,    0,    0,    0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B10] = ENT(   0,    0,    0,    0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B16] = ENT(0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0),
+	},
+	/* higest 8-bit + 1 ... */
+	{
+		.in       = "256", /* ... base 10 */
+		.out[B8]  = ENT(0256,  0256,  0256,  0256, 0, 0, 0, 0),
+		.out[B10] = ENT(   0,   256,   256,   256, -ERANGE, 0, 0, 0),
+		.out[B16] = ENT(   0, 0x256, 0x256, 0x256, -ERANGE, 0, 0, 0),
+	},
+	{
+		.in       = "400", /* ... base 8 (no prefix) */
+		.out[B8]  = ENT(0,  0400,  0400,  0400, -ERANGE, 0, 0, 0),
+		.out[B10] = ENT(0,   400,   400,   400, -ERANGE, 0, 0, 0),
+		.out[B16] = ENT(0, 0x400, 0x400, 0x400, -ERANGE, 0, 0, 0),
+	},
+	{
+		.in       = "0400", /* ... base 8 (prefix) */
+		.out[B8]  = ENT(0,  0400,  0400,  0400, -ERANGE, 0, 0, 0),
+		.out[B10] = ENT(0,   400,   400,   400, -ERANGE, 0, 0, 0),
+		.out[B16] = ENT(0, 0x400, 0x400, 0x400, -ERANGE, 0, 0, 0),
+	},
+	{
+		.in       = "100", /* ... base 16 (no prefix) */
+		.out[B8]  = ENT(0100,  0100,  0100,  0100, 0, 0, 0, 0),
+		.out[B10] = ENT( 100,   100,   100,   100, 0, 0, 0, 0),
+		.out[B16] = ENT(   0, 0x100, 0x100, 0x100, -ERANGE, 0, 0, 0),
+	},
+	{
+		.in       = "0x100", /* ... base 16 (prefix) */
+		.out[B8]  = ENT(0,     0,     0,     0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B10] = ENT(0,     0,     0,     0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B16] = ENT(0, 0x100, 0x100, 0x100, -ERANGE, 0, 0, 0),
+	},
+	/* highest 16-bit ... */
+	{
+		.in       = "65535", /* ... base 10 */
+		.out[B8]  = ENT(0, 065535,  065535,  065535, -ERANGE, 0, 0, 0),
+		.out[B10] = ENT(0,  65535,   65535,   65535, -ERANGE, 0, 0, 0),
+		.out[B16] = ENT(0,      0, 0x65535, 0x65535, -ERANGE, -ERANGE, 0, 0),
+	},
+	{
+		.in       = "177777", /* ... base 8 (no prefix) */
+		.out[B8]  = ENT(0, 0177777,  0177777,  0177777, -ERANGE, 0, 0, 0),
+		.out[B10] = ENT(0,       0,   177777,   177777, -ERANGE, -ERANGE, 0, 0),
+		.out[B16] = ENT(0,       0, 0x177777, 0x177777, -ERANGE, -ERANGE, 0, 0),
+	},
+	{
+		.in       = "0177777", /* ... base 8 (prefix) */
+		.out[B8]  = ENT(0, 0177777,  0177777,  0177777, -ERANGE, 0, 0, 0),
+		.out[B10] = ENT(0,       0,   177777,   177777, -ERANGE, -ERANGE, 0, 0),
+		.out[B16] = ENT(0,       0, 0x177777, 0x177777, -ERANGE, -ERANGE, 0, 0),
+	},
+	{
+		.in       = "ffff", /* ... base 16 (no prefix) */
+		.out[B8]  = ENT(0,      0,      0,      0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B10] = ENT(0,      0,      0,      0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B16] = ENT(0, 0xffff, 0xffff, 0xffff, -ERANGE, 0, 0, 0),
+	},
+	{
+		.in       = "0xffff", /* ... base 16 (prefix) */
+		.out[B8]  = ENT(0,      0,      0,      0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B10] = ENT(0,      0,      0,      0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B16] = ENT(0, 0xffff, 0xffff, 0xffff, -ERANGE, 0, 0, 0),
+	},
+	/* highest 16-bit + 1 ... */
+	{
+		.in       = "65536", /* ... base 10 */
+		.out[B8]  = ENT(0, 065536,  065536,  065536, -ERANGE, 0, 0, 0),
+		.out[B10] = ENT(0,      0,   65536,   65536, -ERANGE, -ERANGE, 0, 0),
+		.out[B16] = ENT(0,      0, 0x65536, 0x65536, -ERANGE, -ERANGE, 0, 0),
+	},
+	{
+		.in       = "200000", /* ... base 8 (no prefix) */
+		.out[B8]  = ENT(0, 0,  0200000,  0200000, -ERANGE, -ERANGE, 0, 0),
+		.out[B10] = ENT(0, 0,   200000,   200000, -ERANGE, -ERANGE, 0, 0),
+		.out[B16] = ENT(0, 0, 0x200000, 0x200000, -ERANGE, -ERANGE, 0, 0),
+	},
+	{
+		.in       = "0200000", /* ... base 8 (prefix) */
+		.out[B8]  = ENT(0, 0,  0200000,  0200000, -ERANGE, -ERANGE, 0, 0),
+		.out[B10] = ENT(0, 0,   200000,   200000, -ERANGE, -ERANGE, 0, 0),
+		.out[B16] = ENT(0, 0, 0x200000, 0x200000, -ERANGE, -ERANGE, 0, 0),
+	},
+	{
+		.in       = "10000", /* ... base 16 (no prefix) */
+		.out[B8]  = ENT(0, 010000,  010000,  010000, -ERANGE, 0, 0, 0),
+		.out[B10] = ENT(0,  10000,   10000,   10000, -ERANGE, 0, 0, 0),
+		.out[B16] = ENT(0,      0, 0x10000, 0x10000, -ERANGE, -ERANGE, 0, 0),
+	},
+	{
+		.in       = "0x10000", /* ... base 16 (prefix) */
+		.out[B8]  = ENT(0,      0,      0,      0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B10] = ENT(0,      0,      0,      0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B16] = ENT(0, 0, 0x10000, 0x10000, -ERANGE, -ERANGE, 0, 0),
+	},
+	/* highest 32-bit ... */
+	{
+		.in       = "4294967295", /* ... base 10 */
+		.out[B8]  = ENT(0, 0,          0,            0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B10] = ENT(0, 0, 4294967295,   4294967295, -ERANGE, -ERANGE, 0, 0),
+		.out[B16] = ENT(0, 0,          0, 0x4294967295, -ERANGE, -ERANGE, -ERANGE, 0),
+	},
+	{
+		.in       = "37777777777", /* ... base 8 (no prefix) */
+		.out[B8]  = ENT(0, 0, 037777777777,  037777777777, -ERANGE, -ERANGE, 0, 0),
+		.out[B10] = ENT(0, 0,            0,   37777777777, -ERANGE, -ERANGE, -ERANGE, 0),
+		.out[B16] = ENT(0, 0,            0, 0x37777777777, -ERANGE, -ERANGE, -ERANGE, 0),
+	},
+	{
+		.in       = "037777777777", /* ... base 8 (prefix) */
+		.out[B8]  = ENT(0, 0, 037777777777,  037777777777, -ERANGE, -ERANGE, 0, 0),
+		.out[B10] = ENT(0, 0,            0,   37777777777, -ERANGE, -ERANGE, -ERANGE, 0),
+		.out[B16] = ENT(0, 0,            0, 0x37777777777, -ERANGE, -ERANGE, -ERANGE, 0),
+	},
+	{
+		.in       = "ffffffff", /* ... base 16 (no prefix) */
+		.out[B8]  = ENT(0, 0,          0,          0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B10] = ENT(0, 0,          0,          0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B16] = ENT(0, 0, 0xffffffff, 0xffffffff, -ERANGE, -ERANGE, 0, 0),
+	},
+	{
+		.in       = "0xffffffff", /* ... base 16 (prefix) */
+		.out[B8]  = ENT(0, 0,          0,          0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B10] = ENT(0, 0,          0,          0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B16] = ENT(0, 0, 0xffffffff, 0xffffffff, -ERANGE, -ERANGE, 0, 0),
+	},
+	/* highest 32-bit + 1 ... */
+	{
+		.in       = "4294967296", /* ... base 10 */
+		.out[B8]  = ENT(0, 0, 0,            0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B10] = ENT(0, 0, 0,   4294967296, -ERANGE, -ERANGE, -ERANGE, 0),
+		.out[B16] = ENT(0, 0, 0, 0x4294967296, -ERANGE, -ERANGE, -ERANGE, 0),
+	},
+	{
+		.in       = "40000000000", /* ... base 8 (no prefix) */
+		.out[B8]  = ENT(0, 0, 0,  040000000000, -ERANGE, -ERANGE, -ERANGE, 0),
+		.out[B10] = ENT(0, 0, 0,   40000000000, -ERANGE, -ERANGE, -ERANGE, 0),
+		.out[B16] = ENT(0, 0, 0, 0x40000000000, -ERANGE, -ERANGE, -ERANGE, 0),
+	},
+	{
+		.in       = "040000000000", /* ... base 8 (prefix) */
+		.out[B8]  = ENT(0, 0, 0,  040000000000, -ERANGE, -ERANGE, -ERANGE, 0),
+		.out[B10] = ENT(0, 0, 0,   40000000000, -ERANGE, -ERANGE, -ERANGE, 0),
+		.out[B16] = ENT(0, 0, 0, 0x40000000000, -ERANGE, -ERANGE, -ERANGE, 0),
+	},
+	{
+		.in       = "100000000", /* ... base 16 (no prefix) */
+		.out[B8]  = ENT(0, 0, 0100000000,  0100000000, -ERANGE, -ERANGE, 0, 0),
+		.out[B10] = ENT(0, 0,  100000000,   100000000, -ERANGE, -ERANGE, 0, 0),
+		.out[B16] = ENT(0, 0,          0, 0x100000000, -ERANGE, -ERANGE, -ERANGE, 0),
+	},
+	{
+		.in       = "0x100000000", /* ... base 16 (prefix) */
+		.out[B8]  = ENT(0, 0, 0,           0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B10] = ENT(0, 0, 0,           0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B16] = ENT(0, 0, 0, 0x100000000, -ERANGE, -ERANGE, -ERANGE, 0),
+	},
+	/* highest 64-bit ... */
+	{
+		.in       = "18446744073709551615", /* ... base 10 */
+		.out[B8]  = ENT(0, 0, 0,                       0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B10] = ENT(0, 0, 0, 18446744073709551615ull, -ERANGE, -ERANGE, -ERANGE, 0),
+		.out[B16] = ENT(0, 0, 0,                       0, -ERANGE, -ERANGE, -ERANGE, -ERANGE),
+	},
+	{
+		.in       = "1777777777777777777777", /* ... base 8 (no prefix) */
+		.out[B8]  = ENT(0, 0, 0, 01777777777777777777777, -ERANGE, -ERANGE, -ERANGE, 0),
+		.out[B10] = ENT(0, 0, 0,                       0, -ERANGE, -ERANGE, -ERANGE, -ERANGE),
+		.out[B16] = ENT(0, 0, 0,                       0, -ERANGE, -ERANGE, -ERANGE, -ERANGE),
+	},
+	{
+		.in       = "1777777777777777777777", /* ... base 8 (prefix) */
+		.out[B8]  = ENT(0, 0, 0, 01777777777777777777777, -ERANGE, -ERANGE, -ERANGE, 0),
+		.out[B10] = ENT(0, 0, 0,                       0, -ERANGE, -ERANGE, -ERANGE, -ERANGE),
+		.out[B16] = ENT(0, 0, 0,                       0, -ERANGE, -ERANGE, -ERANGE, -ERANGE),
+	},
+	{
+		.in       = "ffffffffffffffff", /* ... base 16 (no prefix) */
+		.out[B8]  = ENT(0, 0, 0,                  0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B10] = ENT(0, 0, 0,                  0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B16] = ENT(0, 0, 0, 0xffffffffffffffff, -ERANGE, -ERANGE, -ERANGE, 0),
+	},
+	{
+		.in       = "0xffffffffffffffff", /* ... base 16 (prefix) */
+		.out[B8]  = ENT(0, 0, 0,                  0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B10] = ENT(0, 0, 0,                  0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B16] = ENT(0, 0, 0, 0xffffffffffffffff, -ERANGE, -ERANGE, -ERANGE, 0),
+	},
+	/* highest 64-bit + 1 ... */
+	{
+		.in       = "18446744073709551616", /* ... base 10 */
+		.out[B8]  = ENT(0, 0, 0, 0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B10] = ENT(0, 0, 0, 0, -ERANGE, -ERANGE, -ERANGE, -ERANGE),
+		.out[B16] = ENT(0, 0, 0, 0, -ERANGE, -ERANGE, -ERANGE, -ERANGE),
+	},
+	{
+		.in       = "2000000000000000000000", /* ... base 8 (no prefix) */
+		.out[B8]  = ENT(0, 0, 0, 0, -ERANGE, -ERANGE, -ERANGE, -ERANGE),
+		.out[B10] = ENT(0, 0, 0, 0, -ERANGE, -ERANGE, -ERANGE, -ERANGE),
+		.out[B16] = ENT(0, 0, 0, 0, -ERANGE, -ERANGE, -ERANGE, -ERANGE),
+	},
+	{
+		.in       = "02000000000000000000000", /* ... base 8 (prefix) */
+		.out[B8]  = ENT(0, 0, 0, 0, -ERANGE, -ERANGE, -ERANGE, -ERANGE),
+		.out[B10] = ENT(0, 0, 0, 0, -ERANGE, -ERANGE, -ERANGE, -ERANGE),
+		.out[B16] = ENT(0, 0, 0, 0, -ERANGE, -ERANGE, -ERANGE, -ERANGE),
+	},
+	{
+		.in       = "10000000000000000", /* ... base 16 (no prefix) */
+		.out[B8]  = ENT(0, 0, 0, 010000000000000000, -ERANGE, -ERANGE, -ERANGE, 0),
+		.out[B10] = ENT(0, 0, 0,  10000000000000000, -ERANGE, -ERANGE, -ERANGE, 0),
+		.out[B16] = ENT(0, 0, 0,                  0, -ERANGE, -ERANGE, -ERANGE, -ERANGE),
+	},
+	{
+		.in       = "0x10000000000000000", /* ... base 16 (prefix) */
+		.out[B8]  = ENT(0, 0, 0, 0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B10] = ENT(0, 0, 0, 0, -EINVAL, -EINVAL, -EINVAL, -EINVAL),
+		.out[B16] = ENT(0, 0, 0, 0, -ERANGE, -ERANGE, -ERANGE, -ERANGE),
+	},
+	/*
 	 * Check negative numbers
 	 */
 	{