18
18
#include " ../src/xmagics/os.hpp"
19
19
20
20
#include < fstream>
21
+ #if defined(__GNUC__) && !defined(XEUS_CPP_EMSCRIPTEN_WASM_BUILD)
22
+ #include < sys/wait.h>
23
+ #include < unistd.h>
24
+ #endif
21
25
22
26
TEST_SUITE (" execute_request" )
23
27
{
@@ -120,6 +124,60 @@ TEST_SUITE("inspect_request")
120
124
}
121
125
}
122
126
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
+
123
181
TEST_SUITE (" extract_filename" )
124
182
{
125
183
TEST_CASE (" extract_filename_basic_test" )
@@ -435,7 +493,7 @@ TEST_SUITE("os")
435
493
{
436
494
TEST_CASE (" write_new_file" ) {
437
495
xcpp::writefile wf;
438
- std::string line = " filename testfile.txt" ;
496
+ std::string line = " filename testfile.txt -h " ;
439
497
std::string cell = " Hello, World!" ;
440
498
441
499
wf (line, cell);
@@ -515,7 +573,6 @@ TEST_SUITE("xsystem_clone")
515
573
516
574
REQUIRE (dynamic_cast <xcpp::xsystem*>(clone) != nullptr );
517
575
518
- delete clone;
519
576
}
520
577
}
521
578
@@ -531,4 +588,61 @@ TEST_SUITE("xsystem_apply")
531
588
532
589
REQUIRE (kernel_res[" status" ] == " ok" );
533
590
}
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