simple secd parser

This commit is contained in:
2023-12-23 19:03:13 +01:00
parent 3bace25d46
commit 43c41282f3
6 changed files with 204 additions and 2 deletions

View File

@@ -8,5 +8,16 @@ target_link_libraries(
GTest::gtest_main
)
add_executable(
VMWithParserTest
VMWithParserTest.cpp
)
target_link_libraries(
VMWithParserTest
vm
GTest::gtest_main
)
include(GoogleTest)
gtest_discover_tests(VMTest)
gtest_discover_tests(VMTest)
gtest_discover_tests(VMWithParserTest)

View File

@@ -0,0 +1,30 @@
#include <gtest/gtest.h>
#include "VM.h"
#include "Parser.h"
TEST(VMWithParserTest, BasicHello) {
std::stringstream ssin;
std::stringstream ssout;
{
VM vm(ssin, ssout);
Parser parser(vm);
parser.loadSecd("( LDC 104 PUTCHAR STOP )");
vm.run();
}
ssout.flush();
EXPECT_EQ(ssout.str(), "h");
}
TEST(VMWithParserTest, BasicFunction) {
std::stringstream ssin;
std::stringstream ssout;
{
VM vm(ssin, ssout);
Parser parser(vm);
parser.loadSecd("( NIL LDC 1 CONS LDC 2 CONS LDF ( LD ( 1 . 1 ) LD ( 1 . 2 ) ADD RET ) AP PUTNUM STOP )");
vm.run();
}
ssout.flush();
EXPECT_EQ(ssout.str(), "3");
}