| #!/bin/bash |
| |
| # POSIX 2008 compliant expand tests. |
| # Copyright 2012 by Jonathan Clairembault <jonathan@clairembault.fr> |
| |
| [ -f testing.sh ] && . testing.sh |
| |
| # some basic tests |
| |
| testing "default" "expand input" " foo bar\n" "\tfoo\tbar\n" "" |
| testing "default stdin" "expand" " foo bar\n" "" "\tfoo\tbar\n" |
| testing "single" "expand -t 2 input" " foo bar\n" "\tfoo\tbar\n" "" |
| testing "tablist" "expand -t 5,10,12 input" " foo bar foo\n" "\tfoo\tbar\tfoo\n" "" |
| testing "backspace" "expand input" "foobarfoo\b\b bar\n" "foobarfoo\b\b\tbar\n" "" |
| |
| # advanced tests |
| |
| POW=15 |
| TABSTOP=1 |
| BIGTAB=" " |
| for i in $(seq $POW); do |
| BIGTAB=$BIGTAB$BIGTAB |
| TABSTOP=$(($TABSTOP*2)) |
| done |
| testing "long tab single" "expand -t $TABSTOP input" "${BIGTAB}foo\n" "\tfoo\n" "" |
| testing "long tab tablist" "expand -t $TABSTOP,$((TABSTOP+5)) input" \ |
| "${BIGTAB}foo bar\n" "\tfoo\tbar\n" "" |
| |
| testing "multiline single" "expand -t 4 input" "foo \n bar\n" "foo\t\n\tbar\n" "" |
| testing "multiline tablist" "expand -t 4,8 input" \ |
| "foo bar\n bar foo\n" "foo\t\tbar\n\tbar\tfoo\n" "" |
| POW=15 |
| BIGLINE="foo " |
| for i in $(seq $POW); do |
| BIGLINE=$BIGLINE$BIGLINE |
| done |
| if [ $POW -gt 0 ]; then |
| EXPANDLINE="${BIGLINE} foo\n" |
| else |
| EXPANDLINE="${BIGLINE} foo\n" |
| fi |
| BIGLINE="${BIGLINE}\tfoo\n" |
| testing "long line single" "expand input" \ |
| "${EXPANDLINE}" "$BIGLINE" "" |