You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.3 KiB
57 lines
1.3 KiB
/* |
|
* Copyright (C) 2022 Riyyi |
|
* |
|
* SPDX-License-Identifier: MIT |
|
*/ |
|
|
|
#include "cpu.h" |
|
#include "macro.h" |
|
#include "testcase.h" |
|
#include "testsuite.h" |
|
|
|
struct CPUTest { |
|
CPU cpu { 0 }; |
|
|
|
bool isCarry(uint32_t limit_bit, uint32_t first, uint32_t second, uint32_t third = 0x0) |
|
{ |
|
return cpu.isCarry(limit_bit, first, second, third); |
|
} |
|
|
|
bool isCarrySubtraction(uint32_t limit_bit, uint32_t lhs, uint32_t rhs, uint32_t rhs_extra = 0x0) |
|
{ |
|
return cpu.isCarrySubtraction(limit_bit, lhs, rhs, rhs_extra); |
|
} |
|
}; |
|
|
|
// ----------------------------------------- |
|
|
|
TEST_CASE(CPUIsCarry) |
|
{ |
|
CPUTest test; |
|
|
|
// 8-bit Half-carry false |
|
|
|
EXPECT(test.isCarry(0xf, 56, 17) == false); |
|
|
|
EXPECT(test.isCarrySubtraction(0xf, 136, 1) == false); |
|
EXPECT(test.isCarrySubtraction(0xf, 219, 20) == false); |
|
EXPECT(test.isCarrySubtraction(0xf, 250, 20) == false); |
|
|
|
// 8-bit Half-carry true |
|
|
|
EXPECT(test.isCarry(0xf, 46, 34) == true); |
|
EXPECT(test.isCarry(0xf, 62, 34) == true); |
|
|
|
EXPECT(test.isCarrySubtraction(0xf, 16, 1) == true); |
|
EXPECT(test.isCarrySubtraction(0xf, 32, 1) == true); |
|
EXPECT(test.isCarrySubtraction(0xf, 144, 1) == true); |
|
EXPECT(test.isCarrySubtraction(0xf, 211, 20) == true); |
|
|
|
// 8-bit Full carry false |
|
|
|
EXPECT(test.isCarry(0xff, 254, 1) == false); |
|
|
|
// 8-bit Full carry true |
|
|
|
EXPECT(test.isCarry(0xff, 254, 2) == true); |
|
}
|
|
|