@@ -63,7 +63,7 @@ def test_continuation(self) -> None:
6363 self .assertEqual (str (reply ["content" ]["indent" ]), "" )
6464 self .assertEqual (reply ["content" ]["status" ], "complete" )
6565
66- kernel_names = ['xcpp17' , 'xcpp20' , 'xcpp23' ]
66+ kernel_names = ['xcpp17' , 'xcpp20' , 'xcpp23' , 'xcpp17-omp' , 'xcpp20-omp' , 'xcpp23-omp' ]
6767
6868for name in kernel_names :
6969 class_name = f"XCppCompleteTests_{ name } "
@@ -225,5 +225,58 @@ class BaseXCppTests2(jupyter_kernel_test.KernelTests):
225225 }
226226 )
227227
228+ if platform .system () != 'Windows' :
229+ class BaseXCppOpenMPTests (jupyter_kernel_test .KernelTests ):
230+ __test__ = False
231+
232+ # language_info.name in a kernel_info_reply should match this
233+ language_name = 'C++'
234+
235+ # OpenMP test that creates 2 threads, and gets them to output their thread
236+ # number in descending order
237+ code_omp = """
238+ #include <omp.h>
239+ #include <iostream>
240+ """
241+
242+ code_omp_2 = """
243+ int main() {
244+ omp_set_num_threads(2);
245+ #pragma omp parallel
246+ {
247+ if (omp_get_thread_num() == 1) {
248+ printf("1");
249+ #pragma omp barrier
250+ }
251+ else if (omp_get_thread_num() == 0) {
252+ #pragma omp barrier
253+ printf("0");
254+ }
255+ }
256+ }
257+ main();
258+ """
259+
260+ def test_xcpp_omp (self ):
261+ self .flush_channels ()
262+ reply , output_msgs = self .execute_helper (code = self .code_omp ,timeout = 20 )
263+ reply , output_msgs = self .execute_helper (code = self .code_omp_2 ,timeout = 20 )
264+ self .assertEqual (output_msgs [0 ]['msg_type' ], 'stream' )
265+ self .assertEqual (output_msgs [0 ]['content' ]['text' ], '10' )
266+ self .assertEqual (output_msgs [0 ]['content' ]['name' ], 'stdout' )
267+
268+ kernel_names = ['xcpp17-omp' , 'xcpp20-omp' , 'xcpp23-omp' ]
269+
270+ for name in kernel_names :
271+ class_name = f"XCppOpenMPTests_{ name } "
272+ globals ()[class_name ] = type (
273+ class_name ,
274+ (BaseXCppOpenMPTests ,),
275+ {
276+ 'kernel_name' : name ,
277+ '__test__' : True
278+ }
279+ )
280+
228281if __name__ == '__main__' :
229282 unittest .main ()
0 commit comments