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
2226TEST_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+
123181TEST_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