def test_fraction_truediv(set_up_fractions): frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_2 / frac_1_3 == specs.Fraction(3, 2) assert frac_1_3 / frac_n2_3 == specs.Fraction(-1, 2) with pytest.raises(ZeroDivisionError) as excinfo: frac_1_3 / specs.Fraction(0, 3) assert excinfo.value.args[0] == "cannot divide by zero"
def test_fraction_eq(set_up_fractions): """tests comparing fractions""" frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_2 == specs.Fraction(1, 2) assert frac_1_3 == specs.Fraction(2, 6) assert frac_n2_3 == specs.Fraction(8, -12) assert frac_1_3 == float(1 / 3) #compare equivalence to floats as well
def test_fraction_add(set_up_fractions): """tests adding fractions""" frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions #compare to fraction that should be equal assert frac_1_2 + frac_1_3 == specs.Fraction(5, 6) assert frac_1_3 + frac_n2_3 == specs.Fraction(-1, 3) assert frac_n2_3 + frac_1_3 + frac_1_3 == specs.Fraction(0, 1)
def test_fraction_truediv(set_up_fractions): """tests dividing fractions""" frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions #compare to fraction that should be equal assert frac_1_2 / frac_1_3 == specs.Fraction(3, 2) assert frac_1_3 / frac_n2_3 == specs.Fraction(-1, 2) assert specs.Fraction(0, 1) / frac_n2_3 == specs.Fraction(0, 1) pytest.raises(ZeroDivisionError, specs.Fraction.__truediv__, frac_1_2, specs.Fraction(0, 1))
def test_fraction_truediv(set_up_fractions): #test cases for all conditions frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_2 / frac_1_3 == specs.Fraction(3, 2) assert frac_1_3 / frac_1_3 == specs.Fraction(1, 1) with pytest.raises(ZeroDivisionError) as excinfo: specs.Fraction(0, 0) == 0 assert excinfo.value.args[0] == "denominator cannot be zero" with pytest.raises(ZeroDivisionError) as excinfo: frac_n2_3 / specs.Fraction(0, -12) == specs.Fraction(8, -12) assert excinfo.value.args[0] == "cannot divide by zero"
def set_up_fractions(): """ the add is weird self(1,5) is 1/5, and other is 2/3 to add them take 3/3*(1/5) and 5/5*(2/3) numerator will become (3*1 + 5*2), denominator is 3*5. """ frac_1_3 = specs.Fraction(1, 3) frac_1_2 = specs.Fraction(1, 2) frac_n2_3 = specs.Fraction(-2, 3) return frac_1_3, frac_1_2, frac_n2_3
def test_fraction_init(set_up_fractions): frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_3.numer == 1 assert frac_1_2.denom == 2 assert frac_n2_3.numer == -2 with pytest.raises(ZeroDivisionError) as excinfo: specs.Fraction(1, 0) with pytest.raises(TypeError) as excinfo: specs.Fraction(1.5, 3) with pytest.raises(TypeError) as excinfo: specs.Fraction(1, 1.3) frac = specs.Fraction(30, 42) assert frac.numer == 5 assert frac.denom == 7
def test_fraction_init(set_up_fractions): frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_3.numer == 1 assert frac_1_2.denom == 2 assert frac_n2_3.numer == -2 frac = specs.Fraction(30, 42) assert frac.numer == 5 assert frac.denom == 7 with pytest.raises(ZeroDivisionError) as excinfo_1: specs.Fraction(1, 0) assert excinfo_1.value.args[0] == "denominator cannot be zero" with pytest.raises(TypeError) as excinfo_1: specs.Fraction('3', '5') assert excinfo_1.value.args[0] == "numerator and denominator must be integers"
def test_fraction_init(set_up_fractions): #test cases for all conditions frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_3.numer == 1 assert frac_1_2.denom == 2 assert frac_n2_3.numer == -2 assert frac_n2_3.denom == 3 frac = specs.Fraction(30, 42) assert frac.numer == 5 assert frac.denom == 7 with pytest.raises(TypeError) as excinfo: specs.Fraction(1.3, 3) assert excinfo.value.args[ 0] == "numerator and denominator must be integers"
def test_fraction_init(set_up_fractions): """tests proper initialization of fractions objects""" frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_3.numer == 1 assert frac_1_2.denom == 2 assert frac_n2_3.numer == -2 frac = specs.Fraction(30, 42) # 30/42 reduces to 5/7. assert frac.numer == 5 assert frac.denom == 7 with pytest.raises(ZeroDivisionError) as err: specs.Fraction(1, 0) assert err.value.args[0] == "denominator cannot be zero" with pytest.raises(TypeError) as err1: specs.Fraction(1.2, 1.3) assert err1.value.args[0] == "numerator and denominator must be integers"
def test_fraction_str(set_up_fractions): #test cases for all conditions frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert str(frac_1_3) == "1/3" assert str(frac_1_2) == "1/2" assert str(frac_n2_3) == "-2/3" assert str(specs.Fraction(2, 1)) == "2"
def test_fraction_str(set_up_fractions): """tests fractions represented as strings""" frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert str(frac_1_3) == "1/3" assert str(frac_1_2) == "1/2" assert str(frac_n2_3) == "-2/3" assert str(specs.Fraction(2, 1)) == '2' #no denominator
def test_fraction_str(set_up_fractions): frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert str(frac_1_3) == "1/3" assert str(frac_1_2) == "1/2" assert str(frac_n2_3) == "-2/3" frac = specs.Fraction(30, 5) assert str(frac) == '6'
def test_fraction_init(set_up_fractions): #this function will also test the Errors frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_3.numer == 1 assert frac_1_2.denom == 2 assert frac_n2_3.numer == -2 frac = specs.Fraction(30, 42) pytest.raises(ZeroDivisionError, specs.Fraction, numerator=7, denominator=0) assert frac.numer == 5 assert frac.denom == 7 with pytest.raises(TypeError) as excinfo: specs.Fraction(7, "hello") assert excinfo.value.args[ 0] == "numerator and denominator must be integers"
def test_fraction_str(set_up_fractions): #this includes the case when denominator is 1 frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions frac = specs.Fraction(3, 1) assert str(frac) == "3" assert str(frac_1_3) == "1/3" assert str(frac_1_2) == "1/2" assert str(frac_n2_3) == "-2/3"
def test_fraction_init(set_up_fractions): frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_3.numer == 1 assert frac_1_2.denom == 2 assert frac_n2_3.numer == -2 frac = specs.Fraction(30, 42) assert frac.numer == 5 assert frac.denom == 7
def test_fraction_add(set_up_fractions): #test cases for all conditions frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_2 + frac_1_2 == specs.Fraction(1, 1) assert frac_1_3 + frac_1_3 == specs.Fraction(2, 3) assert frac_n2_3 + frac_1_2 == specs.Fraction(1, -6)
def test_fraction_str(set_up_fractions): frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert str(frac_1_3) == "1/3" assert str(frac_1_2) == "1/2" assert str(frac_n2_3) == "-2/3" assert str(specs.Fraction(3, 1)) == "3"
def test_fraction_add(set_up_fractions): frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_2 + frac_1_3 == specs.Fraction(5, 6) assert frac_1_3 + frac_n2_3 == specs.Fraction(-1, 3)
def test_fraction_sub(set_up_fractions): frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_2 - frac_1_3 == specs.Fraction(1, 6) assert frac_1_3 - frac_n2_3 == specs.Fraction(1, 1)
def set_up_fractions(): """creates some test fractions for other test functions""" frac_1_3 = specs.Fraction(1, 3) frac_1_2 = specs.Fraction(1, 2) frac_n2_3 = specs.Fraction(-2, 3) return frac_1_3, frac_1_2, frac_n2_3 #return several fraction to use
def test_fraction_mul(set_up_fractions): frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_2 * frac_1_3 == specs.Fraction(1, 6) assert frac_1_3 * frac_n2_3 == specs.Fraction(-2, 9)
def set_up_fractions(): #initiate some values frac_1_3 = specs.Fraction(1, 3) frac_1_2 = specs.Fraction(1, 2) frac_n2_3 = specs.Fraction(-2, 3) return frac_1_3, frac_1_2, frac_n2_3
def test_fraction_eq(set_up_fractions): frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_2 == specs.Fraction(1, 2) assert specs.Fraction.__eq__(frac_1_2, 0.5) assert frac_1_3 == specs.Fraction(2, 6) assert frac_n2_3 == specs.Fraction(8, -12)
def test_fraction_mul(set_up_fractions): #test cases for all conditions frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_2 * frac_1_2 == specs.Fraction(1, 4) assert frac_1_3 * frac_1_2 == specs.Fraction(1, 6) assert frac_n2_3 * frac_1_2 == specs.Fraction(2, -6)
def test_fraction_sub(set_up_fractions): #test cases for all conditions frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_2 - frac_1_3 == specs.Fraction(1, 6) assert frac_1_3 - frac_1_3 == 0 assert frac_n2_3 - frac_1_3 == -1
def test_fraction_eq(set_up_fractions): frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_2 == specs.Fraction(1, 2) assert frac_1_3 == specs.Fraction(2, 6) assert frac_n2_3 == specs.Fraction(8, -12) assert specs.Fraction(3, 5) == 0.6
def test_fraction_eq(set_up_fractions): #test cases for all conditions frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_2 == specs.Fraction(1, 2) assert frac_1_3 == specs.Fraction(2, 6) assert frac_n2_3 == specs.Fraction(8, -12)
def test_fraction_truD(set_up_fractions): frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert str(specs.Fraction.__truediv__(frac_1_3, frac_1_2)) == "2/3" with pytest.raises(ZeroDivisionError) as excinfo: specs.Fraction.__truediv__(frac_1_3, specs.Fraction(0, 1)) assert excinfo.value.args[0] == "cannot divide by zero"
def set_up_fractions(): frac_1_3 = specs.Fraction(1, 3) frac_1_2 = specs.Fraction(1, 2) frac_n2_3 = specs.Fraction(-2, 3) return frac_1_3, frac_1_2, frac_n2_3