mirror of
https://github.com/pevans/erc-c.git
synced 2024-10-11 19:24:16 +00:00
50 lines
1.1 KiB
C
50 lines
1.1 KiB
C
#include <criterion/criterion.h>
|
|
|
|
#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);
|
|
}
|