#!/bin/sh # Copyright (C) 2012-2015 Free Software Foundation, Inc. # This program 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 3 of the License, or # (at your option) any later version. # This program 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. # You should have received a copy of the GNU General Public License # along with this program. If not, see . . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src print_ver_ unexpand printf test "$LOCALE_FR_UTF8" != none || skip_ "French UTF-8 locale not available" export LC_ALL="$LOCALE_FR_UTF8" #input containing multibyte characters cat > in <<\EOF 1234567812345678123456781 . . . . a b c d . . . . ä ö ü ß . . . . äöü . öüä. ä xx EOF cat > exp <<\EOF 1234567812345678123456781 . . . . a b c d . . . . ä ö ü ß . . . . äöü . öüä. ä xx EOF unexpand -a < in > out || fail=1 compare exp out > /dev/null 2>&1 || fail=1 #multiple files as an input cat >> exp <<\EOF 1234567812345678123456781 . . . . a b c d . . . . ä ö ü ß . . . . äöü . öüä. ä xx EOF unexpand -a ./in ./in > out || fail=1 compare exp out > /dev/null 2>&1 || fail=1 #test characters with a display width larger than 1 env printf '12345678 e |ascii(1) \u00E9 |composed(1) e\u0301 |decomposed(1) \u3000 |ideo-space(2) \u3000\u3000\u3000\u3000|ideo-space(2) * 4 \uFF0D |full-hypen(2) ' > in || framework_failure_ env printf '12345678 e\t|ascii(1) \u00E9\t|composed(1) e\u0301\t|decomposed(1) \t|ideo-space(2) \t|ideo-space(2) * 4 \uFF0D\t|full-hypen(2) ' > exp || framework_failure_ unexpand -a < in > out || fail=1 compare exp out > /dev/null 2>&1 || fail=1 #test input where a blank of width > 1 is not being substituted in="$(env printf ' \u3000 ö ü ß')" exp='   ö ü ß' unexpand -a < in > out || fail=1 compare exp out > /dev/null 2>&1 || fail=1 #non-Unicode characters interspersed between Unicode ones env printf '12345678 \xFF| \xFF | \xFFä| ä\xFF | ä\xFF| \xFF ä| äbcde\xFF | ' > in || framework_failure_ env printf '12345678 \t\xFF| \xFF\t| \t\xFFä| ä\xFF\t| \tä\xFF| \xFF\tä| äbcde\xFF\t| ' > exp || framework_failure_ unexpand -a < in > out || fail=1 compare exp out > /dev/null 2>&1 || fail=1 #BOM header test 1 env printf "\xEF\xBB\xBF" > in; cat <<\EOF >> in || framework_failure_ 1234567812345678123456781 . . . . a b c d . . . . ä ö ü ß . . . . äöü . öüä. ä xx EOF env printf "\xEF\xBB\xBF" > exp; cat <<\EOF >> exp || framework_failure_ 1234567812345678123456781 . . . . a b c d . . . . ä ö ü ß . . . . äöü . öüä. ä xx EOF unexpand -a < in > out || fail=1 compare exp out > /dev/null 2>&1 || fail=1 env printf "\xEF\xBB\xBF" > exp; cat <<\EOF >> exp || framework_failure_ 1234567812345678123456781 . . . . a b c d . . . . ä ö ü ß . . . . äöü . öüä. ä xx EOF env printf "\xEF\xBB\xBF" >> exp; cat <<\EOF >> exp || framework_failure_ 1234567812345678123456781 . . . . a b c d . . . . ä ö ü ß . . . . äöü . öüä. ä xx EOF unexpand -a ./in ./in > out || fail=1 compare exp out > /dev/null 2>&1 || fail=1 Exit $fail