diff options
Diffstat (limited to 'tests.sh')
-rwxr-xr-x | tests.sh | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tests.sh b/tests.sh new file mode 100755 index 0000000..f7d16fd --- /dev/null +++ b/tests.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +# Like a mythical touch -p +function touchp() { + install -Dm644 /dev/null "$1" +} + +# Creates a simple file+directory structure for tests +function basic_structure() { + touchp "$1/a" + touchp "$1/b" + touchp "$1/c/d" + touchp "$1/e/f" + mkdir -p "$1/g/h" + mkdir -p "$1/i" +} + +# Checks for any (order-independent) differences between bfs and find +function find_diff() { + diff -u <(./bfs "$@" | sort) <(find "$@" | sort) +} + +# Test cases + +function test_0001() { + basic_structure "$1" + find_diff "$1" +} + +function test_0002() { + basic_structure "$1" + find_diff "$1" -type d +} + +function test_0003() { + basic_structure "$1" + find_diff "$1" -type f +} + +function test_0004() { + basic_structure "$1" + find_diff "$1" -mindepth 1 +} + +function test_0005() { + basic_structure "$1" + find_diff "$1" -maxdepth 1 +} + +for i in {1..5}; do + dir="$(mktemp -d)" + test_$(printf '%04d' $i) "$dir" + status=$? + rm -rf "$dir" + if [ $status -ne 0 ]; then + exit $status + fi +done |