Skip to content

Commit bc8bd1f

Browse files
committed
#2923 Added Hugo's example.
1 parent e528122 commit bc8bd1f

File tree

1 file changed

+51
-17
lines changed

1 file changed

+51
-17
lines changed

src/psyclone/tests/core/symbolic_maths_test.py

+51-17
Original file line numberDiff line numberDiff line change
@@ -514,23 +514,26 @@ def test_symbolic_maths_array_and_array_index(fortran_reader):
514514
psyir.children[0][1].rhs)
515515

516516

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+
])
534537
def test_sym_writer_boolean_expr(fortran_reader, expressions):
535538
'''Test that booleans are written in the way that SymPy accepts.
536539
'''
@@ -549,3 +552,34 @@ def test_sym_writer_boolean_expr(fortran_reader, expressions):
549552

550553
sympy_expr = sympy_writer(lit0)
551554
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

Comments
 (0)