def test_binaryoperation_node_str(): ''' Check the node_str method of the Binary Operation class.''' binary_operation = BinaryOperation(BinaryOperation.Operator.ADD) op1 = Literal("1", INTEGER_SINGLE_TYPE) op2 = Literal("1", INTEGER_SINGLE_TYPE) binary_operation.addchild(op1) binary_operation.addchild(op2) coloredtext = colored("BinaryOperation", BinaryOperation._colour) assert coloredtext+"[operator:'ADD']" in binary_operation.node_str()
def test_binaryoperation_node_str(): ''' Check the node_str method of the Binary Operation class.''' from psyclone.psyir.nodes.node import colored, SCHEDULE_COLOUR_MAP binary_operation = BinaryOperation(BinaryOperation.Operator.ADD) op1 = Literal("1", INTEGER_SINGLE_TYPE, parent=binary_operation) op2 = Literal("1", INTEGER_SINGLE_TYPE, parent=binary_operation) binary_operation.addchild(op1) binary_operation.addchild(op2) coloredtext = colored("BinaryOperation", SCHEDULE_COLOUR_MAP["Operation"]) assert coloredtext + "[operator:'ADD']" in binary_operation.node_str()
def test_binaryoperation_can_be_printed(): '''Test that a Binary Operation instance can always be printed (i.e. is initialised fully)''' binary_operation = BinaryOperation(BinaryOperation.Operator.ADD) assert "BinaryOperation[operator:'ADD']" in str(binary_operation) op1 = Literal("1", INTEGER_SINGLE_TYPE) op2 = Literal("2", INTEGER_SINGLE_TYPE) binary_operation.addchild(op1) binary_operation.addchild(op2) # Check the node children are also printed assert ("Literal[value:'1', Scalar<INTEGER, SINGLE>]\n" in str(binary_operation)) assert ("Literal[value:'2', Scalar<INTEGER, SINGLE>]" in str(binary_operation))
def test_binaryoperation_children_validation(): '''Test that children added to BinaryOperation are validated. BinaryOperations accept 2 DataNodes as children. ''' operation = BinaryOperation(BinaryOperation.Operator.ADD) literal1 = Literal("1", INTEGER_SINGLE_TYPE) literal2 = Literal("2", INTEGER_SINGLE_TYPE) literal3 = Literal("3", INTEGER_SINGLE_TYPE) statement = Return() # Statements are not valid with pytest.raises(GenerationError) as excinfo: operation.addchild(statement) assert ("Item 'Return' can't be child 0 of 'BinaryOperation'. The valid " "format is: 'DataNode, DataNode'.") in str(excinfo.value) # First DataNodes is valid, but not subsequent ones operation.addchild(literal1) operation.addchild(literal2) with pytest.raises(GenerationError) as excinfo: operation.addchild(literal3) assert ("Item 'Literal' can't be child 2 of 'BinaryOperation'. The valid " "format is: 'DataNode, DataNode'.") in str(excinfo.value)