1#!/bin/bash 2 3[ -f testing.sh ] && . testing.sh 4 5#testing "name" "command" "result" "infile" "stdin" 6 7echo "this is some text" > file1 8echo -n > file2 9 10# Note that the xxd in vim-common on Ubuntu 14 uses %07x for the file offset. 11 12testing "xxd file1" "xxd file1" \ 13 "00000000: 7468 6973 2069 7320 736f 6d65 2074 6578 this is some tex\n00000010: 740a t.\n" \ 14 "" "" 15testing "xxd file1 -l" "xxd -l 2 file1" \ 16 "00000000: 7468 th\n" \ 17 "" "" 18testing "xxd file2" "xxd file2" "" "" "" 19testing "xxd -" "xxd -" \ 20 "00000000: 6865 6c6c 6f hello\n" "" "hello" 21testing "xxd" "xxd" \ 22 "00000000: 776f 726c 64 world\n" "" "world" 23testing "xxd -c 8 -g 4 file1" "xxd -c 8 -g 4 file1" \ 24 "00000000: 74686973 20697320 this is \n00000008: 736f6d65 20746578 some tex\n00000010: 740a t.\n" "" "" 25testing "xxd -c 8 -g 3 file1" "xxd -c 8 -g 3 file1" \ 26 "00000000: 746869 732069 7320 this is \n00000008: 736f6d 652074 6578 some tex\n00000010: 740a t.\n" "" "" 27 28testing "xxd -p" "xxd -p file1" "7468697320697320736f6d6520746578740a\n" "" "" 29 30testing "xxd -r" "xxd file1 | xxd -r" "this is some text\n" "" "" 31testing "xxd -r -p" "xxd -p file1 | xxd -r -p" "this is some text\n" "" "" 32 33testing "xxd -r garbage" "echo '0000: 68 65 6c6c 6fxxxx' | xxd -r -" "hello" "" "" 34 35# -r will only read -c bytes (default 16) before skipping to the next line, 36# ignoring the rest. 37testing "xxd -r long" \ 38 "echo '0000: 40404040404040404040404040404040404040404040404040404040404040404040404040404040' | xxd -r -" \ 39 "@@@@@@@@@@@@@@@@" "" "" 40 41# -r -p ignores the usual -p 30-byte/line limit (or any limit set by -c) and 42# will take as many bytes as you give it. 43testing "xxd -r -p long" \ 44 "echo '40404040404040404040404040404040404040404040404040404040404040404040404040404040' | xxd -r -p -" \ 45 "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" "" "" 46 47rm file1 file2 48