@@ -514,23 +514,26 @@ def test_symbolic_maths_array_and_array_index(fortran_reader):
514
514
psyir .children [0 ][1 ].rhs )
515
515
516
516
517
- @pytest .mark .parametrize ("expressions" , [(".false. .and. .false." , "False" ),
518
- (".false. .and. .true." , "False" ),
519
- (".true. .and. .false." , "False" ),
520
- (".true. .and. .true." , "True" ),
521
- (".false. .or. .false." , "False" ),
522
- (".false. .or. .true." , "True" ),
523
- (".true. .or. .false." , "True" ),
524
- (".true. .or. .true." , "True" ),
525
- (".false. .eqv. .false." , "True" ),
526
- (".false. .eqv. .true." , "False" ),
527
- (".true. .eqv. .false." , "False" ),
528
- (".true. .eqv. .true." , "True" ),
529
- (".false. .neqv. .false." , "False" ),
530
- (".false. .neqv. .true." , "True" ),
531
- (".true. .neqv. .false." , "True" ),
532
- (".true. .neqv. .true." , "False" ),
533
- ])
517
+ @pytest .mark .parametrize (
518
+ "expressions" ,
519
+ [(".false. .and. .false." , "False" ),
520
+ (".false. .and. .true." , "False" ),
521
+ (".true. .and. .false." , "False" ),
522
+ (".true. .and. .true." , "True" ),
523
+ (".false. .or. .false." , "False" ),
524
+ (".false. .or. .true." , "True" ),
525
+ (".true. .or. .false." , "True" ),
526
+ (".true. .or. .true." , "True" ),
527
+ (".false. .eqv. .false." , "True" ),
528
+ (".false. .eqv. .true." , "False" ),
529
+ (".true. .eqv. .false." , "False" ),
530
+ (".true. .eqv. .true." , "True" ),
531
+ (".false. .neqv. .false." , "False" ),
532
+ (".false. .neqv. .true." , "True" ),
533
+ (".true. .neqv. .false." , "True" ),
534
+ (".true. .neqv. .true." , "False" ),
535
+ (" .false. .and. ((3 -2 + 4 - 5) .eq. 0 .and. .false.)" , False ),
536
+ ])
534
537
def test_sym_writer_boolean_expr (fortran_reader , expressions ):
535
538
'''Test that booleans are written in the way that SymPy accepts.
536
539
'''
@@ -549,3 +552,34 @@ def test_sym_writer_boolean_expr(fortran_reader, expressions):
549
552
550
553
sympy_expr = sympy_writer (lit0 )
551
554
assert sympy_expr == sympy_writer (lit1 )
555
+
556
+
557
+ @pytest .mark .parametrize (
558
+ "expressions" ,
559
+ [(".true. .and. .false." , False ),
560
+ (".true. .and. .true." , True ),
561
+ (".false. .or. .true." , True ),
562
+ ("3 .eq. 3" , True ),
563
+ (" ((3 -2 + 4 - 5) .eq. 0 .and. .false.) .or. .true." , True ),
564
+ (" ((3 -2 + 4 - 5) .eq. 0 .and. .true.)" , True ),
565
+ (" (3 -2 + 4 - 5) .eq. 0 .and. .false. .and. .true." , False ),
566
+ (" ((3 -2 + 4 - 5) .eq. 0 .and. .false.) .and. .true." , False ),
567
+ (" .false. .and. ((3 -2 + 4 - 5) .eq. 0 .and. .false.)" , False ),
568
+ (" (((3 -2 + 4 - 5) .eq. 0) .and. .false.)" , False ),
569
+ ])
570
+ def test_sym_writer_boolean_expr_add_test (fortran_reader , expressions ):
571
+ '''Test that booleans are written in the way that SymPy accepts.
572
+ '''
573
+ # A dummy program to easily create the PSyIR for the
574
+ # expressions we need. We just take the RHS of the assignments
575
+ source = f'''program test_prog
576
+ logical :: bool_expr
577
+ bool_expr = { expressions [0 ]}
578
+ end program test_prog '''
579
+
580
+ psyir = fortran_reader .psyir_from_source (source )
581
+ lit = psyir .children [0 ].children [0 ].rhs
582
+ sympy_writer = SymPyWriter ()
583
+ sympy_expr = sympy_writer (lit )
584
+ print ("XX" , sympy_expr )
585
+ assert sympy_expr == expressions [1 ]
0 commit comments