diff --git a/test/test_core_operations.py b/test/test_core_operations.py index 854ccf85f447e430af303dc9a45c8946ac8d7828..93f388fb310ba62c755bda71c5b9863631710677 100644 --- a/test/test_core_operations.py +++ b/test/test_core_operations.py @@ -7,308 +7,203 @@ from b_asic.core_operations import Constant, Addition, Subtraction, \ Absolute, ConstantMultiplication, ConstantAddition, ConstantSubtraction, \ ConstantDivision, Butterfly -# Constant tests. +class TestConstant: + def test_constant_positive(self): + test_operation = Constant(3) + assert test_operation.evaluate_output(0, [])[0] == 3 -def test_constant(): - constant_operation = Constant(3) - assert constant_operation.evaluate() == 3 + def test_constant_negative(self): + test_operation = Constant(-3) + assert test_operation.evaluate_output(0, [])[0] == -3 + def test_constant_complex(self): + test_operation = Constant(3+4j) + assert test_operation.evaluate_output(0, [])[0] == 3+4j -def test_constant_negative(): - constant_operation = Constant(-3) - assert constant_operation.evaluate() == -3 +class TestAddition: + def test_addition_positive(self): + test_operation = Addition() + assert test_operation.evaluate_output(0, [3, 5])[0] == 8 -def test_constant_complex(): - constant_operation = Constant(3+4j) - assert constant_operation.evaluate() == 3+4j + def test_addition_negative(self): + test_operation = Addition() + assert test_operation.evaluate_output(0, [-3, -5])[0] == -8 -# Addition tests. + def test_addition_complex(self): + test_operation = Addition() + assert test_operation.evaluate_output(0, [3+5j, 4+6j])[0] == 7+11j -def test_addition(): - test_operation = Addition() - constant_operation = Constant(3) - constant_operation_2 = Constant(5) - assert test_operation.evaluate( - constant_operation.evaluate(), constant_operation_2.evaluate()) == 8 +class TestSubtraction: + def test_subtraction_positive(self): + test_operation = Subtraction() + assert test_operation.evaluate_output(0, [5, 3])[0] == 2 + def test_subtraction_negative(self): + test_operation = Subtraction() + assert test_operation.evaluate_output(0, [-5, -3])[0] == -2 -def test_addition_negative(): - test_operation = Addition() - constant_operation = Constant(-3) - constant_operation_2 = Constant(-5) - assert test_operation.evaluate( - constant_operation.evaluate(), constant_operation_2.evaluate()) == -8 + def test_subtraction_complex(self): + test_operation = Subtraction() + assert test_operation.evaluate_output(0, [3+5j, 4+6j])[0] == -1-1j -def test_addition_complex(): - test_operation = Addition() - constant_operation = Constant((3+5j)) - constant_operation_2 = Constant((4+6j)) - assert test_operation.evaluate( - constant_operation.evaluate(), constant_operation_2.evaluate()) == (7+11j) +class TestMultiplication: + def test_multiplication_positive(self): + test_operation = Multiplication() + assert test_operation.evaluate_output(0, [5, 3])[0] == 15 -# Subtraction tests. + def test_multiplication_negative(self): + test_operation = Multiplication() + assert test_operation.evaluate_output(0, [-5, -3])[0] == 15 + def test_multiplication_complex(self): + test_operation = Multiplication() + assert test_operation.evaluate_output(0, [3+5j, 4+6j])[0] == -18+38j -def test_subtraction(): - test_operation = Subtraction() - constant_operation = Constant(5) - constant_operation_2 = Constant(3) - assert test_operation.evaluate( - constant_operation.evaluate(), constant_operation_2.evaluate()) == 2 +class TestDivision: + def test_division_positive(self): + test_operation = Division() + assert test_operation.evaluate_output(0, [30, 5])[0] == 6 -def test_subtraction_negative(): - test_operation = Subtraction() - constant_operation = Constant(-5) - constant_operation_2 = Constant(-3) - assert test_operation.evaluate( - constant_operation.evaluate(), constant_operation_2.evaluate()) == -2 + def test_division_negative(self): + test_operation = Division() + assert test_operation.evaluate_output(0, [-30, -5])[0] == 6 + def test_division_complex(self): + test_operation = Division() + assert test_operation.evaluate_output(0, [60+40j, 10+20j])[0] == 2.8-1.6j -def test_subtraction_complex(): - test_operation = Subtraction() - constant_operation = Constant((3+5j)) - constant_operation_2 = Constant((4+6j)) - assert test_operation.evaluate( - constant_operation.evaluate(), constant_operation_2.evaluate()) == (-1-1j) -# Multiplication tests. +class TestSquareRoot: + def test_squareroot_positive(self): + test_operation = SquareRoot() + assert test_operation.evaluate_output(0, [36])[0] == 6 + def test_squareroot_negative(self): + test_operation = SquareRoot() + assert test_operation.evaluate_output(0, [-36])[0] == 6j -def test_multiplication(): - test_operation = Multiplication() - constant_operation = Constant(5) - constant_operation_2 = Constant(3) - assert test_operation.evaluate( - constant_operation.evaluate(), constant_operation_2.evaluate()) == 15 + def test_squareroot_complex(self): + test_operation = SquareRoot() + assert test_operation.evaluate_output(0, [48+64j])[0] == 8+4j -def test_multiplication_negative(): - test_operation = Multiplication() - constant_operation = Constant(-5) - constant_operation_2 = Constant(-3) - assert test_operation.evaluate( - constant_operation.evaluate(), constant_operation_2.evaluate()) == 15 +class TestComplexConjugate: + def test_complexconjugate_positive(self): + test_operation = ComplexConjugate() + assert test_operation.evaluate_output(0, [3+4j])[0] == 3-4j + def test_test_complexconjugate_negative(self): + test_operation = ComplexConjugate() + assert test_operation.evaluate_output(0, [-3-4j])[0] == -3+4j -def test_multiplication_complex(): - test_operation = Multiplication() - constant_operation = Constant((3+5j)) - constant_operation_2 = Constant((4+6j)) - assert test_operation.evaluate( - constant_operation.evaluate(), constant_operation_2.evaluate()) == (-18+38j) -# Division tests. +class TestMax: + def test_max_positive(self): + test_operation = Max() + assert test_operation.evaluate_output(0, [30, 5])[0] == 30 + def test_max_negative(self): + test_operation = Max() + assert test_operation.evaluate_output(0, [-30, -5])[0] == -5 -def test_division(): - test_operation = Division() - constant_operation = Constant(30) - constant_operation_2 = Constant(5) - assert test_operation.evaluate( - constant_operation.evaluate(), constant_operation_2.evaluate()) == 6 +class TestMin: + def test_min_positive(self): + test_operation = Min() + assert test_operation.evaluate_output(0, [30, 5])[0] == 5 -def test_division_negative(): - test_operation = Division() - constant_operation = Constant(-30) - constant_operation_2 = Constant(-5) - assert test_operation.evaluate( - constant_operation.evaluate(), constant_operation_2.evaluate()) == 6 + def test_min_negative(self): + test_operation = Min() + assert test_operation.evaluate_output(0, [-30, -5])[0] == -30 -def test_division_complex(): - test_operation = Division() - constant_operation = Constant((60+40j)) - constant_operation_2 = Constant((10+20j)) - assert test_operation.evaluate( - constant_operation.evaluate(), constant_operation_2.evaluate()) == (2.8-1.6j) +class TestAbsolute: + def test_absolute_positive(self): + test_operation = Absolute() + assert test_operation.evaluate_output(0, [30])[0] == 30 -# SquareRoot tests. + def test_absolute_negative(self): + test_operation = Absolute() + assert test_operation.evaluate_output(0, [-5])[0] == 5 + def test_absolute_complex(self): + test_operation = Absolute() + assert test_operation.evaluate_output(0, [3+4j])[0] == 5.0 -def test_squareroot(): - test_operation = SquareRoot() - constant_operation = Constant(36) - assert test_operation.evaluate(constant_operation.evaluate()) == 6 +class TestConstantMultiplication: + def test_constantmultiplication_positive(self): + test_operation = ConstantMultiplication(5) + assert test_operation.evaluate_output(0, [20])[0] == 100 -def test_squareroot_negative(): - test_operation = SquareRoot() - constant_operation = Constant(-36) - assert test_operation.evaluate(constant_operation.evaluate()) == 6j + def test_constantmultiplication_negative(self): + test_operation = ConstantMultiplication(5) + assert test_operation.evaluate_output(0, [-5])[0] == -25 + def test_constantmultiplication_complex(self): + test_operation = ConstantMultiplication(3+2j) + assert test_operation.evaluate_output(0, [3+4j])[0] == 1+18j -def test_squareroot_complex(): - test_operation = SquareRoot() - constant_operation = Constant((48+64j)) - assert test_operation.evaluate(constant_operation.evaluate()) == (8+4j) -# ComplexConjugate tests. +class TestConstantAddition: + def test_constantaddition_positive(self): + test_operation = ConstantAddition(5) + assert test_operation.evaluate_output(0, [20])[0] == 25 + def test_constantaddition_negative(self): + test_operation = ConstantAddition(4) + assert test_operation.evaluate_output(0, [-5])[0] == -1 -def test_complexconjugate(): - test_operation = ComplexConjugate() - constant_operation = Constant(3+4j) - assert test_operation.evaluate(constant_operation.evaluate()) == (3-4j) + def test_constantaddition_complex(self): + test_operation = ConstantAddition(3+2j) + assert test_operation.evaluate_output(0, [3+2j])[0] == 6+4j -def test_test_complexconjugate_negative(): - test_operation = ComplexConjugate() - constant_operation = Constant(-3-4j) - assert test_operation.evaluate(constant_operation.evaluate()) == (-3+4j) +class TestConstantSubtraction: + def test_constantsubtraction_positive(self): + test_operation = ConstantSubtraction(5) + assert test_operation.evaluate_output(0, [20])[0] == 15 -# Max tests. + def test_constantsubtraction_negative(self): + test_operation = ConstantSubtraction(4) + assert test_operation.evaluate_output(0, [-5])[0] == -9 + def test_constantsubtraction_complex(self): + test_operation = ConstantSubtraction(4+6j) + assert test_operation.evaluate_output(0, [3+4j])[0] == -1-2j -def test_max(): - test_operation = Max() - constant_operation = Constant(30) - constant_operation_2 = Constant(5) - assert test_operation.evaluate( - constant_operation.evaluate(), constant_operation_2.evaluate()) == 30 +class TestConstantDivision: + def test_constantdivision_positive(self): + test_operation = ConstantDivision(5) + assert test_operation.evaluate_output(0, [20])[0] == 4 -def test_max_negative(): - test_operation = Max() - constant_operation = Constant(-30) - constant_operation_2 = Constant(-5) - assert test_operation.evaluate( - constant_operation.evaluate(), constant_operation_2.evaluate()) == -5 + def test_constantdivision_negative(self): + test_operation = ConstantDivision(4) + assert test_operation.evaluate_output(0, [-20])[0] == -5 -# Min tests. + def test_constantdivision_complex(self): + test_operation = ConstantDivision(2+2j) + assert test_operation.evaluate_output(0, [10+10j])[0] == 5 -def test_min(): - test_operation = Min() - constant_operation = Constant(30) - constant_operation_2 = Constant(5) - assert test_operation.evaluate( - constant_operation.evaluate(), constant_operation_2.evaluate()) == 5 +class TestButterfly: + def test_butterfly_positive(self): + test_operation = Butterfly() + assert test_operation.evaluate_output(0, [2, 3])[0] == 5 + assert test_operation.evaluate_output(1, [2, 3])[1] == -1 + def test_butterfly_negative(self): + test_operation = Butterfly() + assert test_operation.evaluate_output(0, [-2, -3])[0] == -5 + assert test_operation.evaluate_output(1, [-2, -3])[1] == 1 -def test_min_negative(): - test_operation = Min() - constant_operation = Constant(-30) - constant_operation_2 = Constant(-5) - assert test_operation.evaluate( - constant_operation.evaluate(), constant_operation_2.evaluate()) == -30 - -# Absolute tests. - - -def test_absolute(): - test_operation = Absolute() - constant_operation = Constant(30) - assert test_operation.evaluate(constant_operation.evaluate()) == 30 - - -def test_absolute_negative(): - test_operation = Absolute() - constant_operation = Constant(-5) - assert test_operation.evaluate(constant_operation.evaluate()) == 5 - - -def test_absolute_complex(): - test_operation = Absolute() - constant_operation = Constant((3+4j)) - assert test_operation.evaluate(constant_operation.evaluate()) == 5.0 - -# ConstantMultiplication tests. - - -def test_constantmultiplication(): - test_operation = ConstantMultiplication(5) - constant_operation = Constant(20) - assert test_operation.evaluate(constant_operation.evaluate()) == 100 - - -def test_constantmultiplication_negative(): - test_operation = ConstantMultiplication(5) - constant_operation = Constant(-5) - assert test_operation.evaluate(constant_operation.evaluate()) == -25 - - -def test_constantmultiplication_complex(): - test_operation = ConstantMultiplication(3+2j) - constant_operation = Constant((3+4j)) - assert test_operation.evaluate(constant_operation.evaluate()) == (1+18j) - -# ConstantAddition tests. - - -def test_constantaddition(): - test_operation = ConstantAddition(5) - constant_operation = Constant(20) - assert test_operation.evaluate(constant_operation.evaluate()) == 25 - - -def test_constantaddition_negative(): - test_operation = ConstantAddition(4) - constant_operation = Constant(-5) - assert test_operation.evaluate(constant_operation.evaluate()) == -1 - - -def test_constantaddition_complex(): - test_operation = ConstantAddition(3+2j) - constant_operation = Constant((3+4j)) - assert test_operation.evaluate(constant_operation.evaluate()) == (6+6j) - -# ConstantSubtraction tests. - - -def test_constantsubtraction(): - test_operation = ConstantSubtraction(5) - constant_operation = Constant(20) - assert test_operation.evaluate(constant_operation.evaluate()) == 15 - - -def test_constantsubtraction_negative(): - test_operation = ConstantSubtraction(4) - constant_operation = Constant(-5) - assert test_operation.evaluate(constant_operation.evaluate()) == -9 - - -def test_constantsubtraction_complex(): - test_operation = ConstantSubtraction(4+6j) - constant_operation = Constant((3+4j)) - assert test_operation.evaluate(constant_operation.evaluate()) == (-1-2j) - -# ConstantDivision tests. - - -def test_constantdivision(): - test_operation = ConstantDivision(5) - constant_operation = Constant(20) - assert test_operation.evaluate(constant_operation.evaluate()) == 4 - - -def test_constantdivision_negative(): - test_operation = ConstantDivision(4) - constant_operation = Constant(-20) - assert test_operation.evaluate(constant_operation.evaluate()) == -5 - - -def test_constantdivision_complex(): - test_operation = ConstantDivision(2+2j) - constant_operation = Constant((10+10j)) - assert test_operation.evaluate(constant_operation.evaluate()) == (5+0j) - - -def test_butterfly(): - test_operation = Butterfly() - assert list(test_operation.evaluate(2, 3)) == [5, -1] - - -def test_butterfly_negative(): - test_operation = Butterfly() - assert list(test_operation.evaluate(-2, -3)) == [-5, 1] - - -def test_buttefly_complex(): - test_operation = Butterfly() - assert list(test_operation.evaluate(2+1j, 3-2j)) == [5-1j, -1+3j] + def test_buttefly_complex(self): + test_operation = Butterfly() + assert test_operation.evaluate_output(0, [2+1j, 3-2j])[0] == 5-1j + assert test_operation.evaluate_output(1, [2+1j, 3-2j])[1] == -1+3j