#!/bin/bash

# This file is part of util-linux.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This file is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
TS_TOPDIR="${0%/*}/../.."
TS_DESC="format-strings"
FILES="$TS_TOPDIR/ts/hexdump/files"
#sample input consists of hexdump-ed results of the following py3script:
#for i in range(256):
#	print(chr(i), end= ' ')

. $TS_TOPDIR/functions.sh
ts_init "$*"

ts_check_test_command "$TS_CMD_HEXDUMP"

# on big endian systems some of the subtests have different expected output
BYTE_ORDER=$($TS_HELPER_SYSINFO byte-order)
BE_EXT=$(test "$BYTE_ORDER" = "BE" && echo ".BE")

#885314
ts_init_subtest "empty-format"
TS_EXPECTED+=$BE_EXT
INPUT=$(printf \\1)
$TS_CMD_HEXDUMP -n1 -ve '2 "" "%x"' <<< $INPUT >> $TS_OUTPUT 2>&1

$TS_CMD_HEXDUMP -n1 -ve '4 "%x"' -e '2 ""' <<< $INPUT >> $TS_OUTPUT 2>&1
ts_finalize_subtest

#basic formats
ts_init_subtest "1b_octal"
$TS_CMD_HEXDUMP -b $FILES/ascii.in &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "1b_char"
$TS_CMD_HEXDUMP -c $FILES/ascii.in &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "canon"
$TS_CMD_HEXDUMP -C $FILES/ascii.in &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "2b_dec"
TS_EXPECTED+=$BE_EXT
$TS_CMD_HEXDUMP -d $FILES/ascii.in &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "2b_octal"
TS_EXPECTED+=$BE_EXT
$TS_CMD_HEXDUMP -o $FILES/ascii.in &> $TS_OUTPUT
ts_finalize_subtest

ts_init_subtest "2b_hex"
TS_EXPECTED+=$BE_EXT
$TS_CMD_HEXDUMP -x $FILES/ascii.in &> $TS_OUTPUT
ts_finalize_subtest

ts_finalize
