@@ -1292,6 +1292,77 @@ TEST_CASE("PythonCompiler u16 declaration") {
1292
1292
CHECK (r.result .u32 == 45 );
1293
1293
}
1294
1294
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
+
1295
1366
TEST_CASE (" PythonCompiler string 1" ) {
1296
1367
CompilerOptions cu;
1297
1368
cu.po .disable_main = true ;
0 commit comments