summaryrefslogtreecommitdiffstats
path: root/tests.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests.sh')
-rwxr-xr-xtests.sh58
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