@@ -624,6 +624,25 @@ TEST_CASE("PythonCompiler 1") {
624
624
CHECK (r.result .i32 == 1 );
625
625
}
626
626
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
+
627
646
TEST_CASE (" PythonCompiler i32 expressions" ) {
628
647
CompilerOptions cu;
629
648
cu.po .disable_main = true ;
@@ -845,6 +864,7 @@ TEST_CASE("PythonCompiler u32 declaration") {
845
864
r = e.evaluate2 (" i: u32" );
846
865
CHECK (r.ok );
847
866
CHECK (r.result .type == PythonCompiler::EvalResult::none);
867
+
848
868
r = e.evaluate2 (" i = u32(5)" );
849
869
CHECK (r.ok );
850
870
CHECK (r.result .type == PythonCompiler::EvalResult::statement);
@@ -1358,3 +1378,113 @@ def my_concat(x: str, y: str) -> str:
1358
1378
CHECK (r.result .type == PythonCompiler::EvalResult::string);
1359
1379
CHECK (std::strcmp (r.result .str , " Python REPL" ) == 0 );
1360
1380
}
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