Skip to content

Commit 79ae8b0

Browse files
tharun571vgvassilev
authored andcommitted
Add tests for xutils, os, xmagics, xinterpreter
1 parent cfb7be3 commit 79ae8b0

File tree

1 file changed

+117
-3
lines changed

1 file changed

+117
-3
lines changed

test/test_interpreter.cpp

Lines changed: 117 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818
#include "../src/xmagics/os.hpp"
1919

2020
#include <fstream>
21+
#if defined(__GNUC__) && !defined(XEUS_CPP_EMSCRIPTEN_WASM_BUILD)
22+
#include <sys/wait.h>
23+
#include <unistd.h>
24+
#endif
2125

2226
TEST_SUITE("execute_request")
2327
{
@@ -120,6 +124,60 @@ TEST_SUITE("inspect_request")
120124
}
121125
}
122126

127+
TEST_SUITE("kernel_info_request")
128+
{
129+
TEST_CASE("good_status")
130+
{
131+
std::vector<const char*> Args = {/*"-v", "resource-dir", "....."*/};
132+
xcpp::interpreter interpreter((int)Args.size(), Args.data());
133+
134+
nl::json result = interpreter.kernel_info_request();
135+
136+
REQUIRE(result["implementation"] == "xeus-cpp");
137+
REQUIRE(result["language_info"]["name"] == "C++");
138+
REQUIRE(result["language_info"]["mimetype"] == "text/x-c++src");
139+
REQUIRE(result["language_info"]["codemirror_mode"] == "text/x-c++src");
140+
REQUIRE(result["language_info"]["file_extension"] == ".cpp");
141+
REQUIRE(result["status"] == "ok");
142+
}
143+
144+
}
145+
146+
TEST_SUITE("shutdown_request")
147+
{
148+
TEST_CASE("good_status")
149+
{
150+
std::vector<const char*> Args = {/*"-v", "resource-dir", "....."*/};
151+
xcpp::interpreter interpreter((int)Args.size(), Args.data());
152+
153+
REQUIRE_NOTHROW(interpreter.shutdown_request());
154+
}
155+
156+
}
157+
158+
TEST_SUITE("is_complete_request")
159+
{
160+
TEST_CASE("incomplete_code")
161+
{
162+
std::vector<const char*> Args = {/*"-v", "resource-dir", "....."*/};
163+
xcpp::interpreter interpreter((int)Args.size(), Args.data());
164+
165+
std::string code = "int main() \\";
166+
nl::json result = interpreter.is_complete_request(code);
167+
REQUIRE(result["status"] == "incomplete");
168+
}
169+
170+
TEST_CASE("complete_code")
171+
{
172+
std::vector<const char*> Args = {/*"-v", "resource-dir", "....."*/};
173+
xcpp::interpreter interpreter((int)Args.size(), Args.data());
174+
175+
std::string code = "int main() {}";
176+
nl::json result = interpreter.is_complete_request(code);
177+
REQUIRE(result["status"] == "complete");
178+
}
179+
}
180+
123181
TEST_SUITE("extract_filename")
124182
{
125183
TEST_CASE("extract_filename_basic_test")
@@ -435,7 +493,7 @@ TEST_SUITE("os")
435493
{
436494
TEST_CASE("write_new_file") {
437495
xcpp::writefile wf;
438-
std::string line = "filename testfile.txt";
496+
std::string line = "filename testfile.txt -h";
439497
std::string cell = "Hello, World!";
440498

441499
wf(line, cell);
@@ -515,7 +573,6 @@ TEST_SUITE("xsystem_clone")
515573

516574
REQUIRE(dynamic_cast<xcpp::xsystem*>(clone) != nullptr);
517575

518-
delete clone;
519576
}
520577
}
521578

@@ -531,4 +588,61 @@ TEST_SUITE("xsystem_apply")
531588

532589
REQUIRE(kernel_res["status"] == "ok");
533590
}
534-
}
591+
}
592+
593+
TEST_SUITE("xmagics_contains"){
594+
TEST_CASE("bad_status_cell") {
595+
xcpp::xmagics_manager manager;
596+
xcpp::xmagic_type magic = xcpp::xmagic_type::cell;
597+
// manager.register_magic("my_magic", xcpp::xmagic_type::cell);
598+
599+
bool result = manager.contains("my_magic", xcpp::xmagic_type::cell);
600+
REQUIRE(result == false);
601+
}
602+
603+
TEST_CASE("bad_status_line") {
604+
xcpp::xmagics_manager manager;
605+
xcpp::xmagic_type magic = xcpp::xmagic_type::line;
606+
// manager.register_magic("my_magic", xcpp::xmagic_type::cell);
607+
608+
bool result = manager.contains("my_magic", xcpp::xmagic_type::line);
609+
REQUIRE(result == false);
610+
}
611+
}
612+
613+
TEST_SUITE("xmagics_apply"){
614+
TEST_CASE("bad_status_cell") {
615+
xcpp::xmagics_manager manager;
616+
617+
nl::json kernel_res;
618+
manager.apply("%%dummy", kernel_res);
619+
REQUIRE(kernel_res["status"] == "error");
620+
}
621+
622+
TEST_CASE("bad_status_line") {
623+
xcpp::xmagics_manager manager;
624+
625+
nl::json kernel_res;
626+
manager.apply("%dummy", kernel_res);
627+
REQUIRE(kernel_res["status"] == "error");
628+
}
629+
}
630+
631+
#if defined(__GNUC__) && !defined(XEUS_CPP_EMSCRIPTEN_WASM_BUILD)
632+
TEST_SUITE("xutils_handler"){
633+
TEST_CASE("handler") {
634+
pid_t pid = fork();
635+
if (pid == 0) {
636+
637+
signal(SIGSEGV, xcpp::handler);
638+
exit(0);
639+
640+
} else {
641+
642+
int status;
643+
REQUIRE(WEXITSTATUS(status) == 0);
644+
645+
}
646+
}
647+
}
648+
#endif

0 commit comments

Comments
 (0)