@@ -1292,6 +1292,77 @@ TEST_CASE("PythonCompiler u16 declaration") {
12921292 CHECK (r.result .u32 == 45 );
12931293}
12941294
1295+ TEST_CASE (" PythonCompiler boolean expressions" ) {
1296+ CompilerOptions cu;
1297+ cu.po .disable_main = true ;
1298+ cu.emit_debug_line_column = false ;
1299+ cu.generate_object_code = false ;
1300+ cu.interactive = true ;
1301+ cu.po .runtime_library_dir = LCompilers::LPython::get_runtime_library_dir ();
1302+ PythonCompiler e (cu);
1303+ LCompilers::Result<PythonCompiler::EvalResult>
1304+
1305+ r = e.evaluate2 (" True" );
1306+ CHECK (r.ok );
1307+ CHECK (r.result .type == PythonCompiler::EvalResult::boolean);
1308+ CHECK (r.result .b );
1309+
1310+ r = e.evaluate2 (" False" );
1311+ CHECK (r.ok );
1312+ CHECK (r.result .type == PythonCompiler::EvalResult::boolean);
1313+ CHECK (!r.result .b );
1314+
1315+ r = e.evaluate2 (" False or True" );
1316+ CHECK (r.ok );
1317+ CHECK (r.result .type == PythonCompiler::EvalResult::boolean);
1318+ CHECK (r.result .b );
1319+
1320+ r = e.evaluate2 (" False and True" );
1321+ CHECK (r.ok );
1322+ CHECK (r.result .type == PythonCompiler::EvalResult::boolean);
1323+ CHECK (!r.result .b );
1324+ }
1325+
1326+ TEST_CASE (" PythonCompiler boolean declaration" ) {
1327+ CompilerOptions cu;
1328+ cu.po .disable_main = true ;
1329+ cu.emit_debug_line_column = false ;
1330+ cu.generate_object_code = false ;
1331+ cu.interactive = true ;
1332+ cu.po .runtime_library_dir = LCompilers::LPython::get_runtime_library_dir ();
1333+ PythonCompiler e (cu);
1334+ LCompilers::Result<PythonCompiler::EvalResult>
1335+
1336+ r = e.evaluate2 (" t: bool" );
1337+ CHECK (r.ok );
1338+ CHECK (r.result .type == PythonCompiler::EvalResult::none);
1339+ r = e.evaluate2 (" t = True" );
1340+ CHECK (r.ok );
1341+ CHECK (r.result .type == PythonCompiler::EvalResult::statement);
1342+ r = e.evaluate2 (" t" );
1343+ CHECK (r.ok );
1344+ CHECK (r.result .type == PythonCompiler::EvalResult::boolean);
1345+ CHECK (r.result .b );
1346+
1347+ r = e.evaluate2 (" f: bool = False" );
1348+ CHECK (r.ok );
1349+ CHECK (r.result .type == PythonCompiler::EvalResult::none);
1350+ r = e.evaluate2 (" f" );
1351+ CHECK (r.ok );
1352+ CHECK (r.result .type == PythonCompiler::EvalResult::boolean);
1353+ CHECK (!r.result .b );
1354+
1355+ r = e.evaluate2 (" t or f" );
1356+ CHECK (r.ok );
1357+ CHECK (r.result .type == PythonCompiler::EvalResult::boolean);
1358+ CHECK (r.result .b );
1359+
1360+ r = e.evaluate2 (" t and f" );
1361+ CHECK (r.ok );
1362+ CHECK (r.result .type == PythonCompiler::EvalResult::boolean);
1363+ CHECK (!r.result .b );
1364+ }
1365+
12951366TEST_CASE (" PythonCompiler string 1" ) {
12961367 CompilerOptions cu;
12971368 cu.po .disable_main = true ;
0 commit comments