@@ -624,6 +624,25 @@ TEST_CASE("PythonCompiler 1") {
624624 CHECK (r.result .i32 == 1 );
625625}
626626
627+ TEST_CASE (" PythonCompiler 2" ) {
628+ CompilerOptions cu;
629+ cu.po .disable_main = true ;
630+ cu.emit_debug_line_column = false ;
631+ cu.generate_object_code = false ;
632+ cu.interactive = true ;
633+ cu.po .runtime_library_dir = LCompilers::LPython::get_runtime_library_dir ();
634+ PythonCompiler e (cu);
635+ LCompilers::Result<PythonCompiler::EvalResult>
636+
637+ r = e.evaluate2 (" i: i32 = 3 % 2" );
638+ CHECK (r.ok );
639+ CHECK (r.result .type == PythonCompiler::EvalResult::none);
640+ r = e.evaluate2 (" i" );
641+ CHECK (r.ok );
642+ CHECK (r.result .type == PythonCompiler::EvalResult::integer4);
643+ CHECK (r.result .i32 == 1 );
644+ }
645+
627646TEST_CASE (" PythonCompiler i32 expressions" ) {
628647 CompilerOptions cu;
629648 cu.po .disable_main = true ;
@@ -845,6 +864,7 @@ TEST_CASE("PythonCompiler u32 declaration") {
845864 r = e.evaluate2 (" i: u32" );
846865 CHECK (r.ok );
847866 CHECK (r.result .type == PythonCompiler::EvalResult::none);
867+
848868 r = e.evaluate2 (" i = u32(5)" );
849869 CHECK (r.ok );
850870 CHECK (r.result .type == PythonCompiler::EvalResult::statement);
@@ -1358,3 +1378,113 @@ def my_concat(x: str, y: str) -> str:
13581378 CHECK (r.result .type == PythonCompiler::EvalResult::string);
13591379 CHECK (std::strcmp (r.result .str , " Python REPL" ) == 0 );
13601380}
1381+
1382+ TEST_CASE (" PythonCompiler asr verify 1" ) {
1383+ CompilerOptions cu;
1384+ cu.po .disable_main = true ;
1385+ cu.emit_debug_line_column = false ;
1386+ cu.generate_object_code = false ;
1387+ cu.interactive = true ;
1388+ cu.po .runtime_library_dir = LCompilers::LPython::get_runtime_library_dir ();
1389+ PythonCompiler e (cu);
1390+ LCompilers::Result<PythonCompiler::EvalResult>
1391+
1392+ r = e.evaluate2 (" i: i32 = 3 % 2" );
1393+ CHECK (r.ok );
1394+ CHECK (r.result .type == PythonCompiler::EvalResult::none);
1395+ r = e.evaluate2 (" i" );
1396+ CHECK (r.ok );
1397+ CHECK (r.result .type == PythonCompiler::EvalResult::integer4);
1398+ CHECK (r.result .i32 == 1 );
1399+ }
1400+
1401+ TEST_CASE (" PythonCompiler asr verify 2" ) {
1402+ CompilerOptions cu;
1403+ cu.po .disable_main = true ;
1404+ cu.emit_debug_line_column = false ;
1405+ cu.generate_object_code = false ;
1406+ cu.interactive = true ;
1407+ cu.po .runtime_library_dir = LCompilers::LPython::get_runtime_library_dir ();
1408+ PythonCompiler e (cu);
1409+ LCompilers::Result<PythonCompiler::EvalResult>
1410+ r = e.evaluate2 (R"(
1411+ def is_even(x: i32) -> i32:
1412+ if x % 2 == 0:
1413+ return 1
1414+ return 0
1415+ )" );
1416+ CHECK (r.ok );
1417+ CHECK (r.result .type == PythonCompiler::EvalResult::none);
1418+ r = e.evaluate2 (" is_even(4)" );
1419+ CHECK (r.ok );
1420+ CHECK (r.result .type == PythonCompiler::EvalResult::integer4);
1421+ CHECK (r.result .i32 == 1 );
1422+ r = e.evaluate2 (" is_even(3)" );
1423+ CHECK (r.ok );
1424+ CHECK (r.result .type == PythonCompiler::EvalResult::integer4);
1425+ CHECK (r.result .i32 == 0 );
1426+ }
1427+
1428+ TEST_CASE (" PythonCompiler asr verify 3" ) {
1429+ CompilerOptions cu;
1430+ cu.po .disable_main = true ;
1431+ cu.emit_debug_line_column = false ;
1432+ cu.generate_object_code = false ;
1433+ cu.interactive = true ;
1434+ cu.po .runtime_library_dir = LCompilers::LPython::get_runtime_library_dir ();
1435+ PythonCompiler e (cu);
1436+ LCompilers::Result<PythonCompiler::EvalResult>
1437+
1438+ r = e.evaluate2 (R"(
1439+ def addi(x: i32, y: i32) -> i32:
1440+ return x + y
1441+ )" );
1442+ CHECK (r.ok );
1443+ CHECK (r.result .type == PythonCompiler::EvalResult::none);
1444+ r = e.evaluate2 (R"(
1445+ def subi(x: i32, y: i32) -> i32:
1446+ return addi(x, -y)
1447+ )" );
1448+ CHECK (r.ok );
1449+ CHECK (r.result .type == PythonCompiler::EvalResult::none);
1450+ r = e.evaluate2 (" addi(2, 3)" );
1451+ CHECK (r.ok );
1452+ CHECK (r.result .type == PythonCompiler::EvalResult::integer4);
1453+ CHECK (r.result .i32 == 5 );
1454+ r = e.evaluate2 (" subi(2, 3)" );
1455+ CHECK (r.ok );
1456+ CHECK (r.result .type == PythonCompiler::EvalResult::integer4);
1457+ CHECK (r.result .i32 == -1 );
1458+ }
1459+
1460+ TEST_CASE (" PythonCompiler asr verify 4" ) {
1461+ CompilerOptions cu;
1462+ cu.po .disable_main = true ;
1463+ cu.emit_debug_line_column = false ;
1464+ cu.generate_object_code = false ;
1465+ cu.interactive = true ;
1466+ cu.po .runtime_library_dir = LCompilers::LPython::get_runtime_library_dir ();
1467+ PythonCompiler e (cu);
1468+ LCompilers::Result<PythonCompiler::EvalResult>
1469+
1470+ r = e.evaluate2 (R"(
1471+ def addr(x: f64, y: f64) -> f64:
1472+ return x + y
1473+ )" );
1474+ CHECK (r.ok );
1475+ CHECK (r.result .type == PythonCompiler::EvalResult::none);
1476+ r = e.evaluate2 (R"(
1477+ def subr(x: f64, y: f64) -> f64:
1478+ return addr(x, -y)
1479+ )" );
1480+ CHECK (r.ok );
1481+ CHECK (r.result .type == PythonCompiler::EvalResult::none);
1482+ r = e.evaluate2 (" addr(2.5, 3.5)" );
1483+ CHECK (r.ok );
1484+ CHECK (r.result .type == PythonCompiler::EvalResult::real8);
1485+ CHECK (r.result .f64 == 6 );
1486+ r = e.evaluate2 (" subr(2.5, 3.5)" );
1487+ CHECK (r.ok );
1488+ CHECK (r.result .type == PythonCompiler::EvalResult::real8);
1489+ CHECK (r.result .f64 == -1 );
1490+ }
0 commit comments