hexdump: add tests for %x, handle little/big endian properly
No binary (build failed)
—
(log yok)
| @@ -5,6 +5,17 @@ | |
| . ./testing.sh | |
| + | input=\ |
| + | "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"\ |
| + | "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"\ |
| + | "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"\ |
| + | "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"\ |
| + | "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff" |
| + | |
| + | little_endian=false |
| + | { printf '\0\1' | hexdump -d | grep -q 256; } && little_endian=true |
| + | readonly little_endian |
| + | |
| # testing "description" "command" "result" "infile" "stdin" | |
| testing 'hexdump -C with four NULs' \ | |
| 'hexdump -C' \ | |
| @@ -43,12 +54,7 @@ testing "hexdump -e %3_u" \ | |
| 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f | |
| f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff | |
| " \ | |
| - | "" \ |
| - | "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"\ |
| - | "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"\ |
| - | "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"\ |
| - | "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"\ |
| - | "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"\ |
| + | "" "$input" |
| testing "hexdump -e /1 %d" \ | |
| "hexdump -e '16/1 \" %4d\" \"\n\"'" \ | |
| @@ -59,33 +65,74 @@ testing "hexdump -e /1 %d" \ | |
| -128 -127 -126 -125 -124 -123 -122 -121 -120 -119 -118 -117 -116 -115 -114 -113 | |
| -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 | |
| " \ | |
| - | "" \ |
| - | "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"\ |
| - | "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"\ |
| - | "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"\ |
| - | "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"\ |
| - | "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"\ |
| + | "" "$input" |
| - | testing "hexdump -e /2 %d" \ |
| - | "hexdump -e '8/2 \" %6d\" \"\n\"'" \ |
| - | "\ |
| + | $little_endian || SKIP=1 |
| + | testing "hexdump -e /2 %d (little endian)" \ |
| + | "hexdump -e '8/2 \" %6d\" \"\n\"'" \ |
| + | "\ |
| 256 770 1284 1798 2312 2826 3340 3854 | |
| 4368 4882 5396 5910 6424 6938 7452 7966 | |
| 29040 29554 30068 30582 31096 31610 32124 32638 | |
| -32384 -31870 -31356 -30842 -30328 -29814 -29300 -28786 | |
| -3600 -3086 -2572 -2058 -1544 -1030 -516 -2 | |
| " \ | |
| - | "" \ |
| - | "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"\ |
| - | "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"\ |
| - | "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"\ |
| - | "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"\ |
| - | "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"\ |
| + | "" "$input" |
| + | SKIP= |
| + | |
| + | $little_endian && SKIP=1 |
| + | testing "hexdump -e /2 %d (big endian)" \ |
| + | "hexdump -e '8/2 \" %6d\" \"\n\"'" \ |
| + | "\ |
| + | 1 515 1029 1543 2057 2571 3085 3599 |
| + | 4113 4627 5141 5655 6169 6683 7197 7711 |
| + | 28785 29299 29813 30327 30841 31355 31869 32383 |
| + | -32639 -32125 -31611 -31097 -30583 -30069 -29555 -29041 |
| + | -3855 -3341 -2827 -2313 -1799 -1285 -771 -257 |
| + | " \ |
| + | "" "$input" |
| + | SKIP= |
| - | testing "hexdump -n4 -e '\"%u\"'" \ |
| + | $little_endian || SKIP=1 |
| + | testing "hexdump -e /2 %x (little endian)" \ |
| + | "hexdump -e '8/2 \" %6x\" \"\n\"'" \ |
| + | "\ |
| + | 100 302 504 706 908 b0a d0c f0e |
| + | 1110 1312 1514 1716 1918 1b1a 1d1c 1f1e |
| + | 7170 7372 7574 7776 7978 7b7a 7d7c 7f7e |
| + | 8180 8382 8584 8786 8988 8b8a 8d8c 8f8e |
| + | f1f0 f3f2 f5f4 f7f6 f9f8 fbfa fdfc fffe |
| + | " \ |
| + | "" "$input" |
| + | SKIP= |
| + | |
| + | $little_endian && SKIP=1 |
| + | testing "hexdump -e /2 %x (big endian)" \ |
| + | "hexdump -e '8/2 \" %6x\" \"\n\"'" \ |
| + | "\ |
| + | 1 203 405 607 809 a0b c0d e0f |
| + | 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f |
| + | 7071 7273 7475 7677 7879 7a7b 7c7d 7e7f |
| + | 8081 8283 8485 8687 8889 8a8b 8c8d 8e8f |
| + | f0f1 f2f3 f4f5 f6f7 f8f9 fafb fcfd feff |
| + | " \ |
| + | "" "$input" |
| + | SKIP= |
| + | |
| + | $little_endian || SKIP=1 |
| + | testing "hexdump -n4 -e '\"%u\"' (little endian)" \ |
| "hexdump -n4 -e '\"%u\"'" \ | |
| "12345678" \ | |
| "" \ | |
| "\x4e\x61\xbc\x00AAAA" | |
| + | SKIP= |
| + | |
| + | $little_endian && SKIP=1 |
| + | testing "hexdump -n4 -e '\"%u\"' (big endian)" \ |
| + | "hexdump -n4 -e '\"%u\"'" \ |
| + | "1315027968" \ |
| + | "" \ |
| + | "\x4e\x61\xbc\x00AAAA" |
| + | SKIP= |
| exit $FAILCOUNT | |