#!/bin/sh # Copyright 2018 by Denys Vlasenko # Licensed under GPLv2, see file LICENSE in this source tree. . ./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' \ "\ 00000000 00 00 00 00 |....| 00000004 " \ '' \ '\0\0\0\0' testing "hexdump does not think last padded block matches any full block" \ "hexdump -e '1/1 \"%02x|\"1/1 \"%02x!\\n\"'" \ "\ 00|00! * 00| ! " \ '' \ '\0\0\0\0\0\0\0\0\0\0\0' testing "hexdump thinks last full block can match" \ "hexdump -e '1/1 \"%02x|\"1/1 \"%02x!\\n\"'" \ "\ 00|00! * " \ '' \ '\0\0\0\0\0\0\0\0\0\0\0\0' testing "hexdump -e %3_u" \ "hexdump -e '16/1 \" %3_u\" \"\n\"'" \ "\ nul soh stx etx eot enq ack bel bs ht lf vt ff cr so si dle dc1 dc2 dc3 dc4 nak syn etb can em sub esc fs gs rs us p q r s t u v w x y z { | } ~ del 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 " \ "" "$input" testing "hexdump -e %3_c" \ "hexdump -e '16/1 \" %3_c\" \"\n\"'" \ ' \\0 001 002 003 004 005 006 \\a \\b \\t \\n \\v \\f \\r 016 017 020 021 022 023 024 025 026 027 030 031 032 033 034 035 036 037 p q r s t u v w x y z { | } ~ 177 200 201 202 203 204 205 206 207 210 211 212 213 214 215 216 217 360 361 362 363 364 365 366 367 370 371 372 373 374 375 376 377 ' \ "" "$input" testing "hexdump -e /1 %d" \ "hexdump -e '16/1 \" %4d\" \"\n\"'" \ "\ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 -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 " \ "" "$input" $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 " \ "" "$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= $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