diff --git a/test.sh b/test.sh
new file mode 100755
index 0000000..8a594a8
--- /dev/null
+++ b/test.sh
@@ -0,0 +1,123 @@
+#!/bin/sh
+set -e
+
+mnt=/mnt/mount
+tmp=$(mktemp -d)
+trap "sh -c 'sudo umount ${mnt} 2>/dev/null; rm -rf ${tmp}'" EXIT INT
+
+build=${PWD}/build
+
+test_ext2() {
+	type=$1
+	img=${tmp}/${type}.img
+
+	printf "\n===> Prepping \`${img}'\n"
+	dd if=/dev/zero bs=1M count=64 >${img} 2>/dev/null
+	mkfs.${type} -E root_owner ${img} >/dev/null 2>&1
+
+	sudo mount -o loop ${img} ${mnt} -o rw
+	mkdir -p ${mnt}/dir/subdir
+
+	echo " ==> Adding \`test' files and links"
+	echo 'Moin!' >${mnt}/test
+	echo 'Moin! from `dir'\' >${mnt}/dir/test
+	echo 'Moin! from `subdir'\' >${mnt}/dir/subdir/test
+	ln -s test ${mnt}/l5
+	ln -s ../l5 ${mnt}/dir/l4
+	ln -s ../l4 ${mnt}/dir/subdir/l3
+	ln -s ../dir/subdir/l3 ${mnt}/dir/l2
+	ln -s ../dir/subdir/../l2 ${mnt}/dir/l1
+	ln -s l1 ${mnt}/dir/ltest
+	ln -s ../../dir/../dir/../dir/../dir/subdir/../../dir/subdir/../subdir/../subdir/../../dir/test ${mnt}/dir/subdir/ltest
+	
+	echo " ==> Adding random small files"
+	i=0; step=123; files=12345
+	for j in $(seq $((files/step))); do
+		dd if=/dev/urandom bs=123 count=1 2>/dev/null | \
+			tee $(printf "${mnt}/dir/random%05d " $(seq $((i+1)) $((i+step)))) >/dev/null
+		i=$((i+step))
+	done
+	
+	echo "  => Removing some files to produce gaps"
+	i=0
+	for j in $(seq $((files/step))); do
+		rm $(printf "${mnt}/dir/random%05d " $(seq $((i+2)) 2 $((i+step))))
+		i=$((i+step))
+	done
+	
+	echo " ==> Adding a big file (should be fragmented)"
+	dd if=/dev/urandom bs=1M count=30 >${mnt}/random 2>/dev/null
+
+	echo " ==> Removing some more small files"
+	i=0
+	for j in $(seq $((files/step))); do
+		rm $(printf "${mnt}/dir/random%05d " $(seq $((i+3))  4 $((i+step))))
+		rm $(printf "${mnt}/dir/random%05d " $(seq $((i+5))  8 $((i+step))))
+		rm $(printf "${mnt}/dir/random%05d " $(seq $((i+9)) 16 $((i+step))))
+		i=$((i+step))
+	done
+
+	echo " ==> Adding a big, fragmented, sparse file"
+	for i in $(seq 1 2 8765); do
+		dd if=/dev/urandom bs=4K count=1 conv=notrunc \
+			seek=${i} of=${mnt}/dir/subdir/sparse 2>/dev/null
+	done
+	if [ "${type}" = "ext4" ]; then
+		echo "  => Increasing sparse file >1GiB"
+		dd if=/dev/urandom bs=4K count=1 conv=notrunc \
+			seek=345678 of=${mnt}/dir/subdir/sparse 2>/dev/null
+	fi
+
+	sudo umount ${mnt}
+
+	test_img ${img}
+}
+
+test_isofs() {
+	img=${tmp}/test.iso
+	template=${tmp}/ext2.img
+
+	printf "\n===> Prepping \`${img}'\n"
+
+	sudo mount -o loop ${template} ${mnt} -o ro
+
+	mkisofs -o ${img} ${mnt}
+
+	sudo umount ${mnt}
+
+	test_img ${img}
+}
+
+test_img() {
+	img=$1
+
+	sudo mount -o loop ${img} ${mnt} -o ro
+	cd ${mnt}
+
+	printf "\n ==> Running simple test for \`test' files\n"
+	${build}/fstest -d ${img}
+
+	printf "\n ==> Comparing all file contents"
+	find . \( -name lost+found -prune \) -o ! -type d -printf . \
+		\( -exec sh -c "${build}/fscat -d ${img} {} | cmp - {}" \; \
+		   -o \( -exec false {} + -quit \) \)
+	printf " done\n"
+
+	printf "\n ==> Comparing all file contents (at once)... "
+	sum=$(find . \( -name lost+found -prune \) -o ! -type d \
+		-exec ${build}/fscat -d ${img} {} + | cksum)
+	sum2=$(find . \( -name lost+found -prune \) -o ! -type d -exec cat {} + | cksum)
+	if [ "${sum}" = "${sum2}" ]; then
+		printf "done\n"
+	else
+		printf "FAILED!\n"
+		exit 1
+	fi
+
+	cd - >/dev/null
+	sudo umount ${mnt}
+}
+
+test_ext2 ext2
+test_ext2 ext4
+test_isofs
