#! /bin/bash

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

	if diff -rq $1 $2 >> 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" "$7"; then
		ped_test_failed
		return 1
	fi
	do_diff "$2" "$3"
}

test_mkpartfs()
{
	ped_test "mkpartfs fat16 minimum size"\
		"mklabel $TEST_FS_USE_DISK_LABEL\
		mkpartfs primary fat16 0 1\
		check 1"\
		"/sbin/dosfsck ${TEST_DRIVE}1"

	ped_test "mkpartfs fat32 minimum size"\
		"mklabel $TEST_FS_USE_DISK_LABEL\
		mkpartfs primary fat32 0 1\
		check 1"\
		"/sbin/dosfsck ${TEST_DRIVE}1"

	ped_test "mkpartfs"\
		"mklabel $TEST_FS_USE_DISK_LABEL\
		mkpartfs primary fat32 1 $DEFAULT_END\
		check 1"\
		"/sbin/dosfsck ${TEST_DRIVE}1"

	ped_test "mkfs"\
		"mkfs 1 fat32\
		 check 1"\
		"/sbin/dosfsck ${TEST_DRIVE}1"
}

prepare_resize_tests()
{
	part_num=1
	part=$TEST_DRIVE$part_num
	hole_parent=`echo $TEST_DATA_HOLE | sed -e "s/[-_.a-zA-Z0-9]+\///g"`

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

	mount $part $TEST_MOUNT_POINT -t vfat \
	&& cp -r $TEST_DATA/* $TEST_MOUNT_POINT \
	&& cp -r $TEST_DATA $TEST_MOUNT_POINT/tmp_copy \
	&& rm -rf $TEST_MOUNT_POINT/$TEST_DATA_HOLE \
	&& mv $TEST_MOUNT_POINT/tmp_copy/$TEST_DATA_HOLE \
	      $TEST_MOUNT_POINT/$hole_parent \
	&& rm -rf $TEST_MOUNT_POINT/tmp_copy
	umount $TEST_MOUNT_POINT
}

clearfat()
{
	$TEST_PARTED_CLEARFAT $TEST_DRIVE $1
}

test_resize_move_start_forward()
{
# geometry beforehand:  1 to $DEFAULT_END
	do_test_diff "resize: move start forward"\
		$TEST_DATA $TEST_MOUNT_POINT \
		"resize 1 5 $DEFAULT_END check 1"\
		"/sbin/dosfsck ${TEST_DRIVE}1"
	clearfat 1
}

test_resize_move_start_backward()
{
# geometry beforehand: 5 to $DEFAULT_END
	do_test_diff "resize: move start backward"\
		$TEST_DATA $TEST_MOUNT_POINT \
		"resize 1 1 $DEFAULT_END check 1"\
		"/sbin/dosfsck ${TEST_DRIVE}1"
	clearfat 1
}

test_resize_move_end_forward()
{
# geometry beforehand: 1 to $DEFAULT_END
	do_test_diff "resize: move end forward"\
		$TEST_DATA $TEST_MOUNT_POINT \
		"resize 1 1 $[ $DEFAULT_END + 5 ] check 1"\
		"/sbin/dosfsck ${TEST_DRIVE}1"
	clearfat 1
}

test_resize_move_end_backward()
{
# geometry beforehand:  1 to $[$DEFAULT_END + 5]
	do_test_diff "resize: move end backward"\
		$TEST_DATA $TEST_MOUNT_POINT \
		"resize 1 1 $DEFAULT_END check 1"\
		"/sbin/dosfsck ${TEST_DRIVE}1"
	clearfat 1
}

test_convert_fat16_fat32_shrink_cluster()
{
# geometry beforehand:  1 to $DEFAULT_END
	do_test_diff \
	"resize: convert from FAT16 to FAT32, shrinking the cluster size"\
		$TEST_DATA $TEST_MOUNT_POINT \
		"resize 1 1 $FAT32_END check 1"\
		"/sbin/dosfsck ${TEST_DRIVE}1"
	clearfat 1
}

test_convert_fat32_fat16()
{
# geometry beforehand:  1 to $FAT16_SMALL_END
	do_test_diff "resize: convert from FAT32 to FAT16"\
		$TEST_DATA $TEST_MOUNT_POINT \
		"resize 1 1 $FAT32_END check 1"\
		"/sbin/dosfsck ${TEST_DRIVE}1"
	clearfat 1
}

test_convert_fat16_fat32()
{
# geometry beforehand:  1 to $FAT32_END
	do_test_diff "resize: convert from FAT16 to FAT32"\
		$TEST_DATA $TEST_MOUNT_POINT \
		"resize 1 1 $FAT16_SMALL_END check 1"\
		"/sbin/dosfsck ${TEST_DRIVE}1"
	clearfat 1
}

#test_convert_fat32_fat16_shrink_cluster()
#{
#}

#test_fat16_shrink_cluster()
#{
#}

#test_fat32_shrink_cluster()
#{
#}

main()
{
	export DEFAULT_END=300
	export FAT32_END=600
	export FAT16_SMALL_END=200

	if ! test_mkpartfs; then
		return 1
	fi

	prepare_resize_tests
	test_resize_move_start_forward
	test_resize_move_start_backward
	test_resize_move_end_forward
	test_resize_move_end_backward

#	prepare_resize_tests
	test_convert_fat16_fat32_shrink_cluster
	test_convert_fat32_fat16
	test_convert_fat16_fat32
}

main

