1320930Skevans# 2320930Skevans# Copyright (c) 2017 Kyle Evans <kevans@FreeBSD.org> 3320930Skevans# All rights reserved. 4320930Skevans# 5320930Skevans# Redistribution and use in source and binary forms, with or without 6320930Skevans# modification, are permitted provided that the following conditions 7320930Skevans# are met: 8320930Skevans# 1. Redistributions of source code must retain the above copyright 9320930Skevans# notice, this list of conditions and the following disclaimer. 10320930Skevans# 2. Redistributions in binary form must reproduce the above copyright 11320930Skevans# notice, this list of conditions and the following disclaimer in the 12320930Skevans# documentation and/or other materials provided with the distribution. 13320930Skevans# 14320930Skevans# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15320930Skevans# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16320930Skevans# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17320930Skevans# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18320930Skevans# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19320930Skevans# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20320930Skevans# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21320930Skevans# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22320930Skevans# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23320930Skevans# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24320930Skevans# SUCH DAMAGE. 25320930Skevans# 26320930Skevans# $FreeBSD: stable/11/usr.bin/hexdump/tests/hexdump_test.sh 359290 2020-03-25 00:31:42Z kevans $ 27320930Skevans 28359290SkevansENDIAN=el 29359290Skevansret=$(echo I | tr -d "[:space:]" | od -to2 | head -n1 | awk '{print $2}' | cut -c6) 30359290Skevansif [ "$ret" = "0" ]; then 31359290Skevans ENDIAN=eb 32359290Skevansfi 33359290Skevans 34320930Skevansatf_test_case b_flag 35320930Skevansb_flag_head() 36320930Skevans{ 37320930Skevans atf_set "descr" "Verify -b output" 38320930Skevans} 39320930Skevansb_flag_body() 40320930Skevans{ 41320930Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_bflag_a.out" \ 42320930Skevans hexdump -b "$(atf_get_srcdir)/d_hexdump_a.in" 43320930Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_bflag_b.out" \ 44320930Skevans hexdump -b "$(atf_get_srcdir)/d_hexdump_b.in" 45320930Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_bflag_c.out" \ 46320930Skevans hexdump -b "$(atf_get_srcdir)/d_hexdump_c.in" 47320930Skevans} 48320930Skevans 49320930Skevansatf_test_case c_flag 50320930Skevansc_flag_head() 51320930Skevans{ 52320930Skevans atf_set "descr" "Verify -c output" 53320930Skevans} 54320930Skevansc_flag_body() 55320930Skevans{ 56320930Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_cflag_a.out" \ 57320930Skevans hexdump -c "$(atf_get_srcdir)/d_hexdump_a.in" 58320930Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_cflag_b.out" \ 59320930Skevans hexdump -c "$(atf_get_srcdir)/d_hexdump_b.in" 60320930Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_cflag_c.out" \ 61320930Skevans hexdump -c "$(atf_get_srcdir)/d_hexdump_c.in" 62320930Skevans} 63320930Skevans 64320930Skevansatf_test_case C_flag 65320930SkevansC_flag_head() 66320930Skevans{ 67320930Skevans atf_set "descr" "Verify -C output" 68320930Skevans} 69320930SkevansC_flag_body() 70320930Skevans{ 71320930Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_UCflag_a.out" \ 72320930Skevans hexdump -C "$(atf_get_srcdir)/d_hexdump_a.in" 73320930Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_UCflag_b.out" \ 74320930Skevans hexdump -C "$(atf_get_srcdir)/d_hexdump_b.in" 75320930Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_UCflag_c.out" \ 76320930Skevans hexdump -C "$(atf_get_srcdir)/d_hexdump_c.in" 77320930Skevans} 78320930Skevans 79320930Skevansatf_test_case hd_name 80320930Skevanshd_name_head() 81320930Skevans{ 82320930Skevans atf_set "descr" "Verify hd output matching -C output" 83320930Skevans} 84320930Skevanshd_name_body() 85320930Skevans{ 86320930Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_UCflag_a.out" \ 87320930Skevans hd "$(atf_get_srcdir)/d_hexdump_a.in" 88320930Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_UCflag_b.out" \ 89320930Skevans hd "$(atf_get_srcdir)/d_hexdump_b.in" 90320930Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_UCflag_c.out" \ 91320930Skevans hd "$(atf_get_srcdir)/d_hexdump_c.in" 92320930Skevans} 93320930Skevans 94320930Skevansatf_test_case d_flag 95320930Skevansd_flag_head() 96320930Skevans{ 97320930Skevans atf_set "descr" "Verify -d output" 98320930Skevans} 99320930Skevansd_flag_body() 100320930Skevans{ 101359290Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_dflag_a_$ENDIAN.out" \ 102320930Skevans hexdump -d "$(atf_get_srcdir)/d_hexdump_a.in" 103359290Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_dflag_b_$ENDIAN.out" \ 104320930Skevans hexdump -d "$(atf_get_srcdir)/d_hexdump_b.in" 105359290Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_dflag_c_$ENDIAN.out" \ 106320930Skevans hexdump -d "$(atf_get_srcdir)/d_hexdump_c.in" 107320930Skevans} 108320930Skevans 109320930Skevansatf_test_case n_flag 110320930Skevansn_flag_head() 111320930Skevans{ 112320930Skevans atf_set "descr" "Check -n functionality" 113320930Skevans} 114320930Skevansn_flag_body() 115320930Skevans{ 116320930Skevans atf_check -o empty hexdump -bn 0 "$(atf_get_srcdir)/d_hexdump_a.in" 117320930Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_nflag_a.out" \ 118320930Skevans hexdump -bn 1 "$(atf_get_srcdir)/d_hexdump_a.in" 119320930Skevans} 120320930Skevans 121320930Skevansatf_test_case o_flag 122320930Skevanso_flag_head() 123320930Skevans{ 124320930Skevans atf_set "descr" "Verify -o output" 125320930Skevans} 126320930Skevanso_flag_body() 127320930Skevans{ 128359290Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_oflag_a_$ENDIAN.out" \ 129320930Skevans hexdump -o "$(atf_get_srcdir)/d_hexdump_a.in" 130359290Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_oflag_b_$ENDIAN.out" \ 131320930Skevans hexdump -o "$(atf_get_srcdir)/d_hexdump_b.in" 132359290Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_oflag_c_$ENDIAN.out" \ 133320930Skevans hexdump -o "$(atf_get_srcdir)/d_hexdump_c.in" 134320930Skevans} 135320930Skevans 136320930Skevansatf_test_case s_flag 137320930Skevanss_flag_head() 138320930Skevans{ 139320930Skevans atf_set "descr" "Verify -s output" 140320930Skevans} 141320930Skevanss_flag_body() 142320930Skevans{ 143320930Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_sflag_a.out" \ 144320930Skevans hexdump -bs 4 "$(atf_get_srcdir)/d_hexdump_a.in" 145320930Skevans 146320930Skevans atf_check -o not-empty hexdump -n 100 -s 1024 /dev/random 147320930Skevans} 148320930Skevans 149320930Skevansatf_test_case v_flag 150320930Skevansv_flag_head() 151320930Skevans{ 152320930Skevans atf_set "descr" "Verify -v functionality" 153320930Skevans} 154320930Skevansv_flag_body() 155320930Skevans{ 156320930Skevans for i in $(seq 0 7); do 157320930Skevans atf_check -o match:"^\*$" \ 158320930Skevans hexdump -s ${i} "$(atf_get_srcdir)/d_hexdump_c.in" 159320930Skevans atf_check -o not-match:"^\*$" \ 160320930Skevans hexdump -vs ${i} "$(atf_get_srcdir)/d_hexdump_c.in" 161320930Skevans done 162320930Skevans 163320930Skevans atf_check -o not-match:"^\*$" \ 164320930Skevans hexdump -s 8 "$(atf_get_srcdir)/d_hexdump_c.in" 165320930Skevans atf_check -o not-match:"^\*$" \ 166320930Skevans hexdump -vs 8 "$(atf_get_srcdir)/d_hexdump_c.in" 167320930Skevans} 168320930Skevans 169320930Skevansatf_test_case x_flag 170320930Skevansx_flag_head() 171320930Skevans{ 172320930Skevans atf_set "descr" "Verify -x output" 173320930Skevans} 174320930Skevansx_flag_body() 175320930Skevans{ 176359290Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_xflag_a_$ENDIAN.out" \ 177320930Skevans hexdump -x "$(atf_get_srcdir)/d_hexdump_a.in" 178359290Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_xflag_b_$ENDIAN.out" \ 179320930Skevans hexdump -x "$(atf_get_srcdir)/d_hexdump_b.in" 180359290Skevans atf_check -o file:"$(atf_get_srcdir)/d_hexdump_xflag_c_$ENDIAN.out" \ 181320930Skevans hexdump -x "$(atf_get_srcdir)/d_hexdump_c.in" 182320930Skevans} 183320930Skevans 184320930Skevansatf_init_test_cases() 185320930Skevans{ 186320930Skevans atf_add_test_case b_flag 187320930Skevans atf_add_test_case c_flag 188320930Skevans atf_add_test_case C_flag 189320930Skevans atf_add_test_case hd_name 190320930Skevans atf_add_test_case d_flag 191320930Skevans atf_add_test_case n_flag 192320930Skevans atf_add_test_case o_flag 193320930Skevans atf_add_test_case s_flag 194320930Skevans atf_add_test_case v_flag 195320930Skevans atf_add_test_case x_flag 196320930Skevans} 197