/** quotient = 0x3322 /0x33 = 0x0100 * remainder 0x3322 /0x33 = 0x22; * * X = quotient * A = remainder */ void test_div_x_a(void) { XH = 0X33; XL = 0X22; A = 0X33; uint8_t instr[] = {0XAB}; int length = div_x_a(instr); TEST_ASSERT_EQUAL_INT16(0x01, XH); TEST_ASSERT_EQUAL_INT16(0x00, XL); TEST_ASSERT_EQUAL_INT8(0x22, A); TEST_ASSERT_EQUAL(1, length); }
void test_div_y_a(void) { YH = 0X33; YL = 0X22; A = 0X33; uint8_t instr[] = {0XAB}; int length = div_y_a(instr); TEST_ASSERT_EQUAL_INT16(0x01, YH); TEST_ASSERT_EQUAL_INT16(0x00, YL); TEST_ASSERT_EQUAL_INT8(0x22, A); TEST_ASSERT_EQUAL(2, length); }
TEST(fs, OpenShouldComplete) { cnmkfs(); cnmount(); dir_ptr* dir = cnopendir(""); int16_t fd1 = cnopen(dir, "file1.txt", FD_WRITE); int16_t fd2 = cnopen(dir, "file2.txt", FD_WRITE); system("hd /tmp/fs.bin"); TEST_ASSERT_EQUAL_INT16(fd1, 0); TEST_ASSERT_EQUAL_INT16(fd2, 1); int16_t result4 = cnclose(fd2); int16_t result3 = cnclose(fd1); TEST_ASSERT_EQUAL_INT16(result3, 0); TEST_ASSERT_EQUAL_INT16(result4, 0); cnumount(); }
void test_trap(void){ I0 = 0; I0 = 0; *pcToLoad = 0x012244; //*pcToLoad + 1 = 0x012245 //pcl =0x45 //pch =0x22 //pce =0x01 YL = 0XE4; YH = 0XD6; XL = 0XC9; XH = 0X68; A = 0XBB; CC = 0X55; uint8_t instr[] = {0XBB}; TEST_ASSERT_EQUAL_INT8(1, trap(instr)); TEST_ASSERT_EQUAL_INT16(0x012245, *pcToLoad); TEST_ASSERT_EQUAL_INT8(0X55, mcu_pop()); TEST_ASSERT_EQUAL_INT8(0XBB, mcu_pop()); TEST_ASSERT_EQUAL_INT8(0X68, mcu_pop()); TEST_ASSERT_EQUAL_INT8(0XC9, mcu_pop()); TEST_ASSERT_EQUAL_INT8(0XD6, mcu_pop()); TEST_ASSERT_EQUAL_INT8(0XE4, mcu_pop()); TEST_ASSERT_EQUAL_INT8(0X01, mcu_pop()); TEST_ASSERT_EQUAL_INT8(0X22, mcu_pop()); TEST_ASSERT_EQUAL_INT8(0X45, mcu_pop()); TEST_ASSERT_EQUAL_INT8(1, I0); TEST_ASSERT_EQUAL_INT8(1, I1); }
void test_sub_sp_byte(void) { SET_SP(0x1100); uint8_t instr[] = {0XAB, 0X02}; TEST_ASSERT_EQUAL(2, sub_sp_byte(instr)); TEST_ASSERT_EQUAL_INT16(0x10FE, SP); }
void test_incw_y(void){ SET_Y(0x2222); uint8_t instr[] = {0XAB}; TEST_ASSERT_EQUAL_INT8(2, incw_y(instr)); TEST_ASSERT_EQUAL_INT16(0x2223, Y); }
void test_incw_x(void){ SET_X(0x2222); uint8_t instr[] = {0XAB}; TEST_ASSERT_EQUAL_INT8(1, incw_x(instr)); TEST_ASSERT_EQUAL_INT16(0x2223, X); }
void test_incw_x_set_V_flag(void){ SET_X(0x7FFF); uint8_t instr[] = {0XAB}; TEST_ASSERT_EQUAL_INT8(1, incw_x(instr)); TEST_ASSERT_EQUAL_INT16(0x8000, X); TEST_ASSERT_EQUAL_INT8(1, V); }
void test_ldw_x_shortoff_sp(void){ SET_SP(0X2B11); uint8_t instr[] = {0XFB, 0X11}; MEM_WRITE_WORD(0X2B22 , 0xAE11); //0x2B11 + 0X11 = 0X2B22 TEST_ASSERT_EQUAL_INT8(2, ldw_x_shortoff_sp(instr)); TEST_ASSERT_EQUAL_INT16(0xAE11, X); }
void test_ldw_x_shortmem(void){ uint8_t shortMEM = 0xAD; MEM_WRITE_WORD(shortMEM, 0xAE11); uint8_t instr[] = {0XBB, shortMEM}; TEST_ASSERT_EQUAL_INT8(2, ldw_x_shortmem(instr)); TEST_ASSERT_EQUAL_INT16(0xAE11, X); }
void test_swapw_y(void) { SET_Y(0x0000); uint8_t instr[] = {0XAB}; TEST_ASSERT_EQUAL_INT8(2, swapw_y(instr)); TEST_ASSERT_EQUAL_INT16(0x0, Y); TEST_ASSERT_EQUAL_INT8(0, N); TEST_ASSERT_EQUAL_INT8(1, Z); }
void test_swapw_x(void) { SET_X(0xBBCC); uint8_t instr[] = {0XAB}; TEST_ASSERT_EQUAL_INT8(1, swapw_x(instr)); TEST_ASSERT_EQUAL_INT16(0xCCBB, X); TEST_ASSERT_EQUAL_INT8(1, N); //bit 15 is 1 TEST_ASSERT_EQUAL_INT8(0, Z); }
void test_btjt_longmem_pos_5_given_the_bit_is_0(void){ C = 1; uint16_t longmem = 0x1101; MEM_WRITE_BYTE(longmem, 0); uint8_t instr[] = {0XBB, 0x11, 0x01, 0xCC}; TEST_ASSERT_EQUAL_INT8(5, btjt_longmem_pos_5(instr)); TEST_ASSERT_EQUAL_INT16(0x0104, *pcToLoad ); TEST_ASSERT_EQUAL_INT8(0, C); }
void test_ldw_y_shortptr_w_y(void){ SET_Y(0X0011); uint8_t instr[] = {0XFB, 0X13}; MEM_WRITE_BYTE(0X13 , 0x11); MEM_WRITE_BYTE(0X14 , 0x11); MEM_WRITE_WORD(0x1122 , 0xAE11); // 0X1111 + 0X11 = 0X1122 TEST_ASSERT_EQUAL_INT8(3, ldw_y_shortptr_w_y(instr)); TEST_ASSERT_EQUAL_INT16(0xAE11, Y); }
void test_ldw_x_longptr_w_x(void){ SET_X(0X0011); uint8_t instr[] = {0XFB, 0X13, 0X00}; MEM_WRITE_BYTE(0X1300 , 0xAA ); MEM_WRITE_BYTE(0X1301 , 0xBB); MEM_WRITE_WORD(0xAACC , 0xAE11); // 0XAABB + 0X11 = 0XAACC TEST_ASSERT_EQUAL_INT8(4, ldw_x_longptr_w_x(instr)); TEST_ASSERT_EQUAL_INT16(0xAE11, X ); }
TEST(fs, SeekShouldComplete) { cnmkfs(); cnmount(); dir_ptr* dir = cnopendir(""); int16_t fd1 = cnopen(dir, "file1.txt", FD_WRITE); int8_t result = cnseek(fd1, 10000); system("hd /tmp/fs.bin"); TEST_ASSERT_EQUAL_INT16(result, 0); cnumount(); }
void test_btjt_longmem_pos_7_given_the_bit_is_1(void){ C = 0; uint16_t longmem = 0x1101; MEM_WRITE_BYTE(longmem, 0X80); uint8_t instr[] = {0XBB, 0x11, 0x01, 0xCC}; TEST_ASSERT_EQUAL_INT8(5, btjt_longmem_pos_7(instr)); TEST_ASSERT_EQUAL_INT16(0xD0, *pcToLoad ); TEST_ASSERT_EQUAL_INT8(1, C); }
/** quotient = 0x3322 /0x33 = 0x0100 * remainder = 0x3322 /0x33 = 0x22; * * X = quotient * A = remainder */ void test_mcu_div_with_remainder_22(void) { XH = 0X33; XL = 0X22; A = 0X33; mcu_div( &XH); TEST_ASSERT_EQUAL_INT16(0x01, XH); TEST_ASSERT_EQUAL_INT16(0x00, XL); TEST_ASSERT_EQUAL_INT8(0x22, A); TEST_ASSERT_EQUAL(0, V); TEST_ASSERT_EQUAL(0, I1); TEST_ASSERT_EQUAL(0, H); TEST_ASSERT_EQUAL(0, I0); TEST_ASSERT_EQUAL(0, N); TEST_ASSERT_EQUAL(0, Z); TEST_ASSERT_EQUAL(0, C); }
/** quotient = 0x3322 /0x11 = 0x0302 * remainder = 0x3322 /0x11 = 0; * * X = quotient * A = remainder */ void test_mcu_div_with_normal_division(void) { XH = 0X33; XL = 0X22; A = 0X11; mcu_div( &XH); TEST_ASSERT_EQUAL_INT16(0x03, XH); TEST_ASSERT_EQUAL_INT16(0x02, XL); TEST_ASSERT_EQUAL_INT8(0x00, A); TEST_ASSERT_EQUAL(0, V); TEST_ASSERT_EQUAL(0, I1); TEST_ASSERT_EQUAL(0, H); TEST_ASSERT_EQUAL(0, I0); TEST_ASSERT_EQUAL(0, N); TEST_ASSERT_EQUAL(0, Z); TEST_ASSERT_EQUAL(0, C); }
void test_srlw_y(void){ SET_Y(0x0764); uint8_t instr[] = {0XAB}; N = 1; Z = 1; C = 1; TEST_ASSERT_EQUAL_INT8(2, srlw_y(instr)); TEST_ASSERT_EQUAL_INT16(0x03B2, Y); TEST_ASSERT_EQUAL_INT8(0, N); TEST_ASSERT_EQUAL_INT8(0, Z); TEST_ASSERT_EQUAL_INT8(0, C); }
void test_srlw_x_make_Z_to_1_C_to_0(void){ SET_X(0x0); uint8_t instr[] = {0XAB}; N = 1; Z = 0; C = 1; TEST_ASSERT_EQUAL_INT8(1, srlw_x(instr)); TEST_ASSERT_EQUAL_INT16(0x0, X); TEST_ASSERT_EQUAL_INT8(0, N); TEST_ASSERT_EQUAL_INT8(1, Z); TEST_ASSERT_EQUAL_INT8(0, C); }
void test_srlw_x(void){ SET_X(0x8765); uint8_t instr[] = {0XAB}; N = 1; Z = 1; C = 0; TEST_ASSERT_EQUAL_INT8(1, srlw_x(instr)); TEST_ASSERT_EQUAL_INT16(0x43B2, X); TEST_ASSERT_EQUAL_INT8(0, N); TEST_ASSERT_EQUAL_INT8(0, Z); TEST_ASSERT_EQUAL_INT8(1, C); }
void test_pushw_y(void) { YH = 0xAA; YL = 0xBB; SET_Y(0xAABB); uint8_t instr[] = {0XAB}; uint8_t length = pushw_y(instr); TEST_ASSERT_EQUAL_INT8(0xBB, MEM_READ_BYTE(inputSP) ); TEST_ASSERT_EQUAL_INT8(0xAA, MEM_READ_BYTE(inputSP_DEC) ); TEST_ASSERT_EQUAL_INT16( inputSP-2 , SP ); // test is SP decreament 2 time TEST_ASSERT_EQUAL_INT8( 2, length ); }
void test_ldw_x_word(void){ uint8_t instr[] = {0XAB, 0xAE, 0x11}; TEST_ASSERT_EQUAL_INT8(3, ldw_x_word(instr)); TEST_ASSERT_EQUAL_INT16(0xAE11, X); }