1
0
Fork 0

Nasal: tests for new operators

- test for nil-member-access
- test for chained nil
This commit is contained in:
James Turner 2023-09-06 21:23:59 +01:00
parent 402690d43f
commit d569d72ea8
2 changed files with 46 additions and 0 deletions
test_suite/unit_tests/Scripting

View file

@ -292,3 +292,45 @@ void NasalSysTests::testKeywordArgInHash()
)");
CPPUNIT_ASSERT(ok);
}
void NasalSysTests::testNullAccess()
{
auto nasalSys = globals->get_subsystem<FGNasalSys>();
nasalSys->getAndClearErrorList();
bool ok = FGTestApi::executeNasal(R"(
var s = {
bar: 42
};
unitTest.assert_equal(s?.bar, 42);
var t = nil;
var z = t?.bar;
unitTest.assert_equal(z, nil);
)");
CPPUNIT_ASSERT(ok);
auto errors = nasalSys->getAndClearErrorList();
CPPUNIT_ASSERT_EQUAL(errors.size(), static_cast<size_t>(0));
}
void NasalSysTests::testNullishChain()
{
auto nasalSys = globals->get_subsystem<FGNasalSys>();
nasalSys->getAndClearErrorList();
bool ok = FGTestApi::executeNasal(R"(
var t = nil;
var s = 'abc';
unitTest.assert_equal(t ?? 99, 99);
unitTest.assert_equal(s ?? 'default', 'abc');
unitTest.assert_equal(t ?? 'default', 'default');
)");
CPPUNIT_ASSERT(ok);
auto errors = nasalSys->getAndClearErrorList();
CPPUNIT_ASSERT_EQUAL(errors.size(), static_cast<size_t>(0));
}

View file

@ -38,6 +38,8 @@ class NasalSysTests : public CppUnit::TestFixture
CPPUNIT_TEST(testRoundFloor);
CPPUNIT_TEST(testRange);
CPPUNIT_TEST(testKeywordArgInHash);
CPPUNIT_TEST(testNullAccess);
CPPUNIT_TEST(testNullishChain);
CPPUNIT_TEST_SUITE_END();
public:
@ -55,6 +57,8 @@ public:
void testRoundFloor();
void testRange();
void testKeywordArgInHash();
void testNullAccess();
void testNullishChain();
};
#endif // _FG_NASALSYS_UNIT_TESTS_HXX