diff options
| -rw-r--r-- | .gitignore | 13 | ||||
| -rwxr-xr-x | random_stack.rb | 8 | ||||
| -rwxr-xr-x | test.sh | 150 |
3 files changed, 89 insertions, 82 deletions
@@ -1,10 +1,13 @@ -a.out -checker -push_swap -!src/checker -!src/push_swap *.o *.ghc *.dSYM + +a.out +tags benchmark.json result.log + +checker +push_swap +!src/checker +!src/push_swap diff --git a/random_stack.rb b/random_stack.rb deleted file mode 100755 index ab6ad35..0000000 --- a/random_stack.rb +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/ruby - -if ARGV.length != 2 - puts "Usage: #{$PROGRAM_NAME} start end" - exit -end - -puts (ARGV[0]..ARGV[1]).to_a.shuffle.join(" ") @@ -18,12 +18,12 @@ MIN_LONG1=-9223372036854775809 test_status=0 red() { - echo "$(tput setaf 1)$1$(tput sgr 0)\c" + printf "%s%s%s" "$(tput setaf 1)" "$1" "$(tput sgr 0)" test_status=1 } green() { - echo "$(tput setaf 2)$1$(tput sgr 0)\c" + printf "%s%s%s" "$(tput setaf 2)" "$1" "$(tput sgr 0)" } assert() { @@ -31,15 +31,15 @@ assert() { red "[KO] " return 0 fi - if [ -z $1 ]; then + if [ -z "$1" ]; then red "[KO] " return 0 fi - if [ -z $2 ]; then + if [ -z "$2" ]; then red "[KO] " return 0 fi - if [ $1 = $2 ]; then + if [ "$1" = "$2" ]; then green "[OK] " else red "[KO] " @@ -47,93 +47,105 @@ assert() { } assert_ok() { - assert $1 "OK" + assert "$1" "OK" } assert_error() { - assert $1 "Error" + assert "$1" "Error" } -if [ $1 = "--error" ]; then - echo "No arguments: \c" - if [ -z `./checker` ] - then green "[OK] " - else red "[KO] " +if [ "$1" = "--error" ]; then + printf "No arguments:\n" + if [ -z "$(./checker)" ] + then + green "[OK] " + else + red "[KO] " fi - if [ -z `./push_swap` ] - then green "[OK] " - else red "[KO] " + if [ -z "$(./push_swap)" ] + then + green "[OK] " + else + red "[KO] " fi - echo "\nNot digit character \c" - assert_error `./checker 1 2 3 four 2>&1` - assert_error `./checker -1 2 3-3 2>&1` - assert_error `./checker 1_000 23 0 -1 2>&1` - assert_error `./push_swap 1 2 3 four 2>&1` - assert_error `./push_swap -1 2 3-3 2>&1` - assert_error `./push_swap 1_000 23 0 -1 2>&1` - - echo "\nDuplicates \c" - assert_error `./checker 1 1 2 3 2>&1` - assert_error `./checker 1 2 3 3 2>&1` - assert_error `./checker -1 0 2 0 2>&1` - assert_error `./checker -100 2 -100 2>&1` - assert_error `./checker 1 1 2>&1` - assert_error `./push_swap 1 1 2 3 2>&1` - assert_error `./push_swap 1 2 3 3 2>&1` - assert_error `./push_swap -1 0 2 0 2>&1` - assert_error `./push_swap -100 2 -100 2>&1` - assert_error `./push_swap 1 1 2>&1` - - echo "\nMax/min int \c" - assert_ok `echo "\c" | ./checker $MIN_INT 2>&1` - assert_ok `echo "\c" | ./checker $MAX_INT 2>&1` - assert_error `echo "\c" | ./checker $MIN_INT1 2>&1` - assert_error `echo "\c" | ./checker $MAX_INT1 2>&1` - if [ -z `./push_swap $MIN_INT 2>&1` ] - then green "[OK] " - else red "[KO] " + printf "\nNot digit character\n" + assert_error "$(./checker 1 2 3 four 2>&1)" + assert_error "$(./checker -1 2 3-3 2>&1)" + assert_error "$(./checker 1_000 23 0 -1 2>&1)" + assert_error "$(./push_swap 1 2 3 four 2>&1)" + assert_error "$(./push_swap -1 2 3-3 2>&1)" + assert_error "$(./push_swap 1_000 23 0 -1 2>&1)" + + printf "\nDuplicates\n" + assert_error "$(./checker 1 1 2 3 2>&1)" + assert_error "$(./checker 1 2 3 3 2>&1)" + assert_error "$(./checker -1 0 2 0 2>&1)" + assert_error "$(./checker -100 2 -100 2>&1)" + assert_error "$(./checker 1 1 2>&1)" + assert_error "$(./push_swap 1 1 2 3 2>&1)" + assert_error "$(./push_swap 1 2 3 3 2>&1)" + assert_error "$(./push_swap -1 0 2 0 2>&1)" + assert_error "$(./push_swap -100 2 -100 2>&1)" + assert_error "$(./push_swap 1 1 2>&1)" + + printf "\nMax/min int\n" + assert_ok "$(printf "" | ./checker $MIN_INT 2>&1)" + assert_ok "$(printf "" | ./checker $MAX_INT 2>&1)" + assert_error "$(printf "" | ./checker $MIN_INT1 2>&1)" + assert_error "$(printf "" | ./checker $MAX_INT1 2>&1)" + if [ -z "$(./push_swap $MIN_INT 2>&1)" ] + then + green "[OK] " + else + red "[KO] " fi - if [ -z `./push_swap $MAX_INT 2>&1` ] - then green "[OK] " - else red "[KO] " + if [ -z "$(./push_swap $MAX_INT 2>&1)" ] + then + green "[OK] " + else + red "[KO] " fi - assert_error `./push_swap $MIN_INT1 2>&1` - assert_error `./push_swap $MAX_INT1 2>&1` + assert_error "$(./push_swap $MIN_INT1 2>&1)" + assert_error "$(./push_swap $MAX_INT1 2>&1)" - echo "\nMax/min long \c" - assert_error `echo "\c" | ./checker $MIN_LONG 2>&1` - assert_error `echo "\c" | ./checker $MAX_LONG 2>&1` - assert_error `echo "\c" | ./checker $MIN_LONG1 2>&1` - assert_error `echo "\c" | ./checker $MAX_LONG1 2>&1` - assert_error `./push_swap $MIN_LONG 2>&1` - assert_error `./push_swap $MAX_LONG 2>&1` - assert_error `./push_swap $MIN_LONG1 2>&1` - assert_error `./push_swap $MAX_LONG1 2>&1` + printf "\nMax/min long\n" + assert_error "$(printf "" | ./checker $MIN_LONG 2>&1)" + assert_error "$(printf "" | ./checker $MAX_LONG 2>&1)" + assert_error "$(printf "" | ./checker $MIN_LONG1 2>&1)" + assert_error "$(printf "" | ./checker $MAX_LONG1 2>&1)" + assert_error "$(./push_swap $MIN_LONG 2>&1)" + assert_error "$(./push_swap $MAX_LONG 2>&1)" + assert_error "$(./push_swap $MIN_LONG1 2>&1)" + assert_error "$(./push_swap $MAX_LONG1 2>&1)" - exit $test_status + exit "$test_status" fi -test_nb=$1 +test_nb="$1" -if [ -z $2 ]; then +if [ -z "$2" ] +then start=1 else - start=$2 + start="$2" fi -if [ -z $3 ]; then - end=100 +if [ -z "$3" ] +then + end=100 else - end=$3 + end="$3" fi -for i in `seq 1 $test_nb`; do - arg=`./random_stack.rb $start $end` - result=`./push_swap $arg | ./checker $arg` +for i in $(seq 1 "$test_nb") +do + arg="$(seq "$start" "$end" | shuf | xargs)" + # shellcheck disable=SC2086 + result="$(./push_swap $arg | ./checker $arg 2>&1)" - case $result in + case "$result" in "OK") green "." ;; @@ -152,4 +164,4 @@ for i in `seq 1 $test_nb`; do esac done -exit $test_status +exit "$test_status" |
