From cebdedeff0617a2b2334ba804361eda217c395b0 Mon Sep 17 00:00:00 2001 From: Peter Evans Date: Thu, 14 Dec 2017 22:47:11 -0600 Subject: [PATCH] Add initial test suite for apple2dd --- tests/apple2.dd.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 tests/apple2.dd.c diff --git a/tests/apple2.dd.c b/tests/apple2.dd.c new file mode 100644 index 0000000..39e853b --- /dev/null +++ b/tests/apple2.dd.c @@ -0,0 +1,49 @@ +#include + +#include "apple2.dd.h" + +static apple2dd *drive; + +static void +setup() +{ + drive = apple2dd_create(); +} + +static void +teardown() +{ + apple2dd_free(drive); +} + +TestSuite(apple2dd, .init = setup, .fini = teardown); + +Test(apple2dd, create) +{ + cr_assert_eq(drive->data, NULL); + cr_assert_eq(drive->track_pos, 0); + cr_assert_eq(drive->sector_pos, 0); + cr_assert_eq(drive->online, false); + cr_assert_eq(drive->write_protect, true); + cr_assert_eq(drive->mode, DD_READ); +} + +Test(apple2dd, step) +{ + // Does step work at all? + apple2dd_step(drive, 5); + cr_assert_eq(drive->track_pos, 5); + apple2dd_step(drive, 3); + cr_assert_eq(drive->track_pos, 8); + apple2dd_step(drive, -2); + cr_assert_eq(drive->track_pos, 6); + + // Do we handle going over the maximum track position properly? + apple2dd_step(drive, 100); + cr_assert_eq(drive->track_pos, MAX_DRIVE_STEPS); + + // Do we handle going to the 0 track properly if we get a radically + // high number of negative track shifts? + apple2dd_step(drive, -1000); + cr_assert_eq(drive->track_pos, 0); +}