aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-21 23:22:46 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-21 23:32:53 +0100
commit4ffa37c11bf86fe429edfde166a991275639fd39 (patch)
tree0be4a980a6792dcac2f0878534e6751bdd90dcd9
parenta41bf1c4c3e7e4b4642bee5f6e5aafbdb8f29773 (diff)
downloadpush_swap-4ffa37c11bf86fe429edfde166a991275639fd39.tar.gz
push_swap-4ffa37c11bf86fe429edfde166a991275639fd39.tar.bz2
push_swap-4ffa37c11bf86fe429edfde166a991275639fd39.zip
Testing max values
-rw-r--r--README.md12
-rwxr-xr-xtest.sh117
2 files changed, 104 insertions, 25 deletions
diff --git a/README.md b/README.md
index f39779a..94f8992 100644
--- a/README.md
+++ b/README.md
@@ -36,6 +36,18 @@ export ARG=$(echo ./random_stack.rb 1 20)
./push_swap $(echo $ARG) | ./visualizer.rb $(echo $ARG)
```
+# Test
+
+```
+./test.sh 20 1 100
+```
+
+Test argument stack parsing
+
+```
+./test.sh --error
+```
+
# Benchmark
Make sure to have Python3.6 >=
diff --git a/test.sh b/test.sh
index 1c7fa9b..6222850 100755
--- a/test.sh
+++ b/test.sh
@@ -5,36 +5,104 @@ if [ $# -lt 1 ]; then
exit
fi
-if [ $1 = "--error" ]; then
- echo -n "No arguments: "
- if [ $(./checker)="" ]; then
- echo -n "\033[32m[OK]\033[0m "
- else
- echo -n "\033[32m[KO]\033[0m "
+MAX_INT=2147483647
+MIN_INT=-2147483648
+MAX_INT1=2147483648
+MIN_INT1=-2147483649
+
+MAX_LONG=9223372036854775807
+MIN_LONG=-9223372036854775808
+MAX_LONG1=9223372036854775808
+MIN_LONG1=-9223372036854775809
+
+red() {
+ echo -n "\033[31m$1\033[0m "
+}
+
+green() {
+ echo -n "\033[32m$1\033[0m "
+}
+
+assert() {
+ if [ $# -ne 2 ]; then
+ red "[KO] "
+ return 0
fi
- if [ $(./push_swap)="" ]; then
- echo "\033[32m[OK]\033[0m"
- else
- echo "\033[32m[KO]\033[0m"
+ if [ -z $1 -o -z $2 ]; then
+ red "[KO] "
+ return 0
fi
-
- echo -n "Not digit character "
- if [ ! $(./checker 1 2 3 four)="Error\n" ]; then
- echo -n "\033[32m[OK]\033[0m "
+ if [ $1 = $2 ]; then
+ green "[OK] "
else
- echo -n "\033[32m[KO]\033[0m "
+ red "[KO] "
fi
- if [ ! $(./checker -1 2 3-3)="Error\n" ]; then
- echo -n "\033[32m[OK]\033[0m "
+}
+
+assert_ok() {
+ assert $1 "OK"
+}
+
+assert_error() {
+ assert $1 "Error"
+}
+
+if [ $1 = "--error" ]; then
+ echo -n "No arguments: "
+ if [ -z `./checker` ]; then
+ green "[OK] "
else
- echo -n "\033[32m[KO]\033[0m "
+ red "[KO] "
fi
- if [ ! $(./checker 1_000 23 0 -1)="Error\n" ]; then
- echo -n "\033[32m[OK]\033[0m "
+ if [ -z `./push_swap` ]; then
+ green "[OK] "
else
- echo -n "\033[32m[KO]\033[0m "
+ red "[KO] "
fi
+ echo -n "\nNot digit character "
+ 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 -n "\nDuplicates "
+ 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 -n "\nMax/min int "
+ assert_ok `echo -n "" | ./checker $MIN_INT 2>&1`
+ assert_ok `echo -n "" | ./checker $MAX_INT 2>&1`
+ assert_error `echo -n "" | ./checker $MIN_INT1 2>&1`
+ assert_error `echo -n "" | ./checker $MAX_INT1 2>&1`
+ assert `push_swap $MIN_INT 2>&1` ""
+ assert `push_swap $MAX_INT 2>&1` ""
+ assert_error `push_swap $MIN_INT1 2>&1`
+ assert_error `push_swap $MAX_INT1 2>&1`
+
+
+ echo
+ red "Undefined behavior with > MAX_INT values, strtol not working properly"
+ echo -n "\nMax/min long "
+ assert_ok `echo -n "" | ./checker $MIN_LONG 2>&1`
+ assert_ok `echo -n "" | ./checker $MAX_LONG 2>&1`
+ assert_error `echo -n "" | ./checker $MIN_LONG1 2>&1`
+ assert_error `echo -n "" | ./checker $MAX_LONG1 2>&1`
+ assert `./push_swap $MIN_LONG 2>&1` ""
+ assert `./push_swap $MAX_LONG 2>&1` ""
+ assert_error `./push_swap $MIN_LONG1 2>&1`
+ assert_error `./push_swap $MAX_LONG1 2>&1`
+
exit
fi
@@ -52,10 +120,9 @@ else
end=$3
fi
-for i in $(seq 1 $test_nb); do
- arg=$(./random_stack.rb $start $end)
- echo $arg
- result=$(./push_swap $arg | ./checker $arg)
+for i in `seq 1 $test_nb`; do
+ arg=`random_stack.rb $start $end`
+ result=`push_swap $arg | ./checker $arg`
case $result in
OK)