#! /bin/bash

do_diff()
{
	mount "${TEST_DRIVE}1" $TEST_MOUNT_POINT -t ext2 > /dev/null

	if diff -rq $1 $2 --exclude lost+found >> test_log; then
		ped_test_ok
	else
		ped_test_failed
	fi

	umount $TEST_MOUNT_POINT 2>&1 > /dev/null
}

do_test_diff()
{
	ped_testing "$1"
	if ped_test_get_val "$4" "$5" "$6"; then
		ped_test_failed
		return 1
	fi
	do_diff "$2" "$3"
}

test_mkpartfs()
{
	ped_test "mkpartfs 1 ext2 1 1"\
		"mklabel $TEST_FS_USE_DISK_LABEL\
		 mkpartfs 1 ext2 1 1\
		 check 1"\
		"/sbin/e2fsck -n -f ${TEST_DRIVE}1"

	ped_test "mkpartfs"\
		"mklabel $TEST_FS_USE_DISK_LABEL\
		mkpartfs primary ext2 1 $DEFAULT_END\
		check 1"\
		"/sbin/e2fsck -n -f ${TEST_DRIVE}1"

	ped_test "mkfs"\
		"mkfs 1 ext2\
		 check 1"\
		"/sbin/e2fsck -n -f ${TEST_DRIVE}1"
}

prepare_resize_tests()
{
	part_num=1
	part=$TEST_DRIVE$part_num

	umount $TEST_MOUNT_POINT 2>&1 > /dev/null

	mount $part $TEST_MOUNT_POINT -t ext2 \
	&& cp $TEST_DATA/* $TEST_MOUNT_POINT -r
	umount $TEST_MOUNT_POINT 2>&1 > /dev/null
}

test_resize_move_end_forward()
{
	do_test_diff "resize: move end forward"\
		$TEST_DATA $TEST_MOUNT_POINT \
		"resize 1 1 $[ $DEFAULT_END + 5 ] check 1"\
		"/sbin/e2fsck -n -f ${TEST_DRIVE}1"
}

test_resize_move_end_forward_big()
{
	do_test_diff "resize: move end forward (big)"\
		$TEST_DATA $TEST_MOUNT_POINT \
		"resize 1 1 $[ $DEFAULT_END + 200 ] check 1"\
		"/sbin/e2fsck -n -f ${TEST_DRIVE}1"
}

test_resize_move_end_backward()
{
	do_test_diff "resize: move end backward"\
		$TEST_DATA $TEST_MOUNT_POINT \
		"resize 1 1 $DEFAULT_END check 1"\
		"/sbin/e2fsck -n -f ${TEST_DRIVE}1"
}

main()
{
	export DEFAULT_END=200

	if ! test_mkpartfs; then
		return 1
	fi

	prepare_resize_tests
	test_resize_move_end_forward
	test_resize_move_end_backward
	test_resize_move_end_forward_big
	test_resize_move_end_backward
}

main

