mirror of https://github.com/mgba-emu/mgba.git
Debugger: More tests, some sigil fixes
This commit is contained in:
parent
ab2437fcb8
commit
49675d7c58
|
@ -131,7 +131,11 @@ size_t lexExpression(struct LexVector* lv, const char* string, size_t length) {
|
|||
next = 0;
|
||||
break;
|
||||
case '$':
|
||||
state = LEX_EXPECT_HEX;
|
||||
state = LEX_EXPECT_HEX_FIRST;
|
||||
next = 0;
|
||||
break;
|
||||
case '%':
|
||||
state = LEX_EXPECT_BINARY_FIRST;
|
||||
next = 0;
|
||||
break;
|
||||
case '(':
|
||||
|
|
|
@ -59,6 +59,14 @@ M_TEST_DEFINE(lexBinary) {
|
|||
assert_int_equal(LexVectorGetPointer(lv, 0)->uintValue, 2);
|
||||
}
|
||||
|
||||
M_TEST_DEFINE(lexSigilBinary) {
|
||||
LEX("%10");
|
||||
|
||||
assert_int_equal(LexVectorSize(lv), 1);
|
||||
assert_int_equal(LexVectorGetPointer(lv, 0)->type, TOKEN_UINT_TYPE);
|
||||
assert_int_equal(LexVectorGetPointer(lv, 0)->uintValue, 2);
|
||||
}
|
||||
|
||||
M_TEST_DEFINE(lexHex) {
|
||||
LEX("0x10");
|
||||
|
||||
|
@ -67,6 +75,14 @@ M_TEST_DEFINE(lexHex) {
|
|||
assert_int_equal(LexVectorGetPointer(lv, 0)->uintValue, 0x10);
|
||||
}
|
||||
|
||||
M_TEST_DEFINE(lexSigilHex) {
|
||||
LEX("$10");
|
||||
|
||||
assert_int_equal(LexVectorSize(lv), 1);
|
||||
assert_int_equal(LexVectorGetPointer(lv, 0)->type, TOKEN_UINT_TYPE);
|
||||
assert_int_equal(LexVectorGetPointer(lv, 0)->uintValue, 0x10);
|
||||
}
|
||||
|
||||
M_TEST_DEFINE(lexInvalidDecimal) {
|
||||
LEX("1a");
|
||||
|
||||
|
@ -95,6 +111,20 @@ M_TEST_DEFINE(lexTruncatedBinary) {
|
|||
assert_int_equal(LexVectorGetPointer(lv, 0)->type, TOKEN_ERROR_TYPE);
|
||||
}
|
||||
|
||||
M_TEST_DEFINE(lexTruncatedSigilBinary) {
|
||||
LEX("%");
|
||||
|
||||
assert_int_equal(LexVectorSize(lv), 1);
|
||||
assert_int_equal(LexVectorGetPointer(lv, 0)->type, TOKEN_ERROR_TYPE);
|
||||
}
|
||||
|
||||
M_TEST_DEFINE(lexTruncatedSigilHex) {
|
||||
LEX("$");
|
||||
|
||||
assert_int_equal(LexVectorSize(lv), 1);
|
||||
assert_int_equal(LexVectorGetPointer(lv, 0)->type, TOKEN_ERROR_TYPE);
|
||||
}
|
||||
|
||||
M_TEST_DEFINE(lexTruncatedHex) {
|
||||
LEX("0x");
|
||||
|
||||
|
@ -102,6 +132,16 @@ M_TEST_DEFINE(lexTruncatedHex) {
|
|||
assert_int_equal(LexVectorGetPointer(lv, 0)->type, TOKEN_ERROR_TYPE);
|
||||
}
|
||||
|
||||
M_TEST_DEFINE(lexSigilSegmentHex) {
|
||||
LEX("$01:0010");
|
||||
|
||||
assert_int_equal(LexVectorSize(lv), 2);
|
||||
assert_int_equal(LexVectorGetPointer(lv, 0)->type, TOKEN_SEGMENT_TYPE);
|
||||
assert_int_equal(LexVectorGetPointer(lv, 0)->uintValue, 1);
|
||||
assert_int_equal(LexVectorGetPointer(lv, 1)->type, TOKEN_UINT_TYPE);
|
||||
assert_int_equal(LexVectorGetPointer(lv, 1)->uintValue, 0x10);
|
||||
}
|
||||
|
||||
M_TEST_DEFINE(lexIdentifier) {
|
||||
LEX("x");
|
||||
|
||||
|
@ -367,13 +407,18 @@ M_TEST_SUITE_DEFINE_SETUP_TEARDOWN(Lexer,
|
|||
cmocka_unit_test(lexEmpty),
|
||||
cmocka_unit_test(lexInt),
|
||||
cmocka_unit_test(lexDecimal),
|
||||
cmocka_unit_test(lexHex),
|
||||
cmocka_unit_test(lexBinary),
|
||||
cmocka_unit_test(lexSigilBinary),
|
||||
cmocka_unit_test(lexHex),
|
||||
cmocka_unit_test(lexSigilHex),
|
||||
cmocka_unit_test(lexSigilSegmentHex),
|
||||
cmocka_unit_test(lexInvalidDecimal),
|
||||
cmocka_unit_test(lexInvalidHex),
|
||||
cmocka_unit_test(lexInvalidBinary),
|
||||
cmocka_unit_test(lexTruncatedHex),
|
||||
cmocka_unit_test(lexTruncatedSigilHex),
|
||||
cmocka_unit_test(lexTruncatedBinary),
|
||||
cmocka_unit_test(lexTruncatedSigilBinary),
|
||||
cmocka_unit_test(lexIdentifier),
|
||||
cmocka_unit_test(lexAddOperator),
|
||||
cmocka_unit_test(lexIdentifierAddOperator),
|
||||
|
|
Loading…
Reference in New Issue