def test_add(self): self.assertEqual(fraction.Fraction.__add__(self.a_frac, self.b_frac), fraction.Fraction(5, 4)) self.assertEqual(fraction.Fraction.__add__(self.a_frac, self.c_frac), fraction.Fraction(0, 1)) self.assertEqual(fraction.Fraction.__add__(self.a_frac, self.e_frac), fraction.Fraction(1, 1))
def test_fraction_mul(set_up_fractions): """ Tests the __mul__() magic method """ frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_2 * frac_1_3 == fr.Fraction(frac_1_2.numer * frac_1_3.numer, frac_1_2.denom * frac_1_3.denom) assert frac_n2_3 * frac_1_2 == fr.Fraction(frac_n2_3.numer * frac_1_2.numer, frac_n2_3.denom * frac_1_2.denom)
def test_sub(self): self.assertEqual(fraction.Fraction.__sub__(self.a_frac, self.b_frac), fraction.Fraction(-2, 8)) self.assertEqual(fraction.Fraction.__sub__(self.a_frac, self.c_frac), fraction.Fraction(1, 1)) self.assertEqual(fraction.Fraction.__sub__(self.a_frac, self.e_frac), fraction.Fraction(0, 1))
def test_inverse(self): res = fraction.Fraction(-3, 5).inverse() self.assertEqual(fraction.Fraction(-5, 3), res, "-3/5 inverse must be -5/3") res = fraction.Fraction(33, 5).inverse() self.assertEqual(fraction.Fraction(5, 33), res, "33/5 inverse must be 5/33")
def test_eq(self): res = fraction.Fraction(249, 109) == fraction.Fraction(148, 5) # 386/3 86/113 self.assertEqual(False, res, "249/109 ei ole 148/5") # hash collision res = fraction.Fraction(2, 5) == fraction.Fraction(4, 10) self.assertEqual(True, res, "2/5 must be 4/10")
def winningFraction(): res = fraction.Fraction(0,0) for ak,bk in winners(afreq,bfreq): af = fraction.Fraction(afreq[ak],acnt) bf = fraction.Fraction(bfreq[bk],bcnt) res += (af*bf) print res.toFloat()
def test_opposite(self): res = fraction.Fraction(-3, 5).opposite() self.assertEqual(fraction.Fraction(3, 5), res, "-3/5 opposite must be 3/5") res = fraction.Fraction(3, 5).opposite() self.assertEqual(fraction.Fraction(-3, 5), res, "3/5 opposite must be -3/5")
def test_mul(self): self.assertEqual(fraction.Fraction.__mul__(self.a_frac, self.b_frac), fraction.Fraction(3, 8)) self.assertEqual(fraction.Fraction.__mul__(self.a_frac, self.c_frac), fraction.Fraction(-1, 4)) self.assertEqual(fraction.Fraction.__mul__(self.a_frac, self.e_frac), fraction.Fraction(1, 4))
def set_up_fractions(): """ Sets up sample fractions for use in the tests. """ frac_1_3 = fr.Fraction(1, 3) frac_1_2 = fr.Fraction(1, 2) frac_n2_3 = fr.Fraction(-2, 3) return frac_1_3, frac_1_2, frac_n2_3
def setUp(self): """ defining some fractions to play with """ self.half = fraction.Fraction(1, 2) self.third = fraction.Fraction(1, 3) self.quarter = fraction.Fraction(1, 4) self.result = None
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 == fr.Fraction(frac_1_2.numer * frac_1_3.denom + \ frac_1_2.denom * frac_1_3.numer, \ frac_1_2.denom * frac_1_3.denom) assert frac_n2_3 + frac_1_2 == fr.Fraction(frac_n2_3.numer * frac_1_2.denom + \ frac_n2_3.denom * frac_1_2.numer, \ frac_n2_3.denom * frac_1_2.denom)
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 == fr.Fraction(frac_1_2.numer * frac_1_3.denom - \ frac_1_2.denom * frac_1_3.numer, \ frac_1_2.denom * frac_1_3.denom) assert frac_n2_3 - frac_1_2 == fr.Fraction(frac_n2_3.numer * frac_1_2.denom - \ frac_n2_3.denom * frac_1_2.numer, \ frac_n2_3.denom * frac_1_2.denom)
def create_frac(self, frac1, frac2): str_frac1 = str(frac1) list1 = str_frac1.split("/") frac1 = fraction.Fraction(list1[0], list1[1]) str_frac2 = str(frac2) list2 = str_frac2.split("/") frac2 = fraction.Fraction(list2[0], list2[1]) return frac1, frac2
def totient2(n): if euler.isprime(n): return n - 1 else: factors = primeFactors(n) factors = [fraction.Fraction(p - 1, p) for p in factors] factors = [fraction.Fraction(n, 1)] + factors return reduce(lambda a, b: a * b, factors, fraction.Fraction(1, 1)).cancel().num
def test_equality(self): """ This method tests the fraction equality operator. """ test_fraction1 = fraction.Fraction(4, 29) test_fraction2 = fraction.Fraction(4 * 5, 29 * 5) self.assertTrue(test_fraction1 == test_fraction2) test_fraction3 = fraction.Fraction(-4 * 5, -29 * 5) self.assertTrue(test_fraction1 == test_fraction3)
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 == fr.Fraction(frac_1_2.numer * frac_1_3.denom, \ frac_1_2.denom * frac_1_3.numer) assert frac_n2_3 / frac_1_2 == fr.Fraction(frac_n2_3.numer * frac_1_2.denom, \ frac_n2_3.denom * frac_1_2.numer) with pytest.raises(ZeroDivisionError) as excinfo: frac_1_3 / fr.Fraction(0, 1) assert excinfo.value.args[0] == "cannot divide by zero"
def fracs(maxv): lb = fraction.Fraction(1, 3) ub = fraction.Fraction(1, 2) for d in range(maxv + 1): for n in range((d / 3) - 1, (d / 2) + 1): f = fraction.Fraction(n, d) if f.canCancel() == False: if f > lb and f < ub: yield f, n, d
def test_fraction_eq(set_up_fractions): frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_2 == fr.Fraction(1, 2) assert frac_1_3 == fr.Fraction(2, 6) assert frac_n2_3 == fr.Fraction(8, -12) other = fr.Fraction(1, 2) assert (frac_1_2 == other) == (frac_1_2.numer == other.numer) and \ (frac_1_2.denom == other.denom) assert (frac_1_2 == .5) == (float(frac_1_2) == .5)
def test_subtract(self): """ This method tests the fraction subtract operator overload. """ test_fraction1 = fraction.Fraction(1, 2) test_fraction2 = fraction.Fraction(1, 2) test_fraction3 = test_fraction1 - test_fraction2 self.assertEqual(test_fraction3.numerator, 0) self.assertEqual(test_fraction3.denominator, 1) self.assertEqual(str(test_fraction3), "0/1")
def test_div(self): self.assertEqual( fraction.Fraction.__truediv__(self.a_frac, self.b_frac), fraction.Fraction(2, 3)) self.assertEqual( fraction.Fraction.__truediv__(self.a_frac, self.c_frac), fraction.Fraction(-1, 1)) self.assertEqual( fraction.Fraction.__truediv__(self.a_frac, self.e_frac), fraction.Fraction(1, 1))
def test_add(self): """ This method tests the fraction add operator overload. """ test_fraction1 = fraction.Fraction(1, 2) test_fraction2 = fraction.Fraction(1, 2) test_fraction3 = test_fraction1 + test_fraction2 self.assertEqual(test_fraction3.numerator, 1) self.assertEqual(test_fraction3.denominator, 1) self.assertEqual(str(test_fraction3), "1/1")
def generate_base_frac(max_value_num, max_value_den): rand.seed() numerator = rand.randint(1, max_value_num) denominator = rand.randint(1, max_value_den) frac = f.Fraction(numerator, denominator) while denominator <= numerator: numerator = rand.randint(1, max_value_num) denominator = rand.randint(1, max_value_den) frac = f.Fraction(numerator, denominator) return frac
def convergent( seq ): if len(seq) == 1: # print 'X' return fraction.Fraction(seq[0],1) else: a = fraction.Fraction(seq[0],1) b = fraction.Fraction(1,1)/convergent(seq[1:]) c = a+b c = c.cancel() # print 'Y',a,b,c return c
def test_fraction_eq(set_up_fractions): """ Tests the __eq__() magic method """ frac_1_3, frac_1_2, frac_n2_3 = set_up_fractions assert frac_1_2 == fr.Fraction(1, 2) assert frac_1_3 == fr.Fraction(2, 6) assert frac_n2_3 == fr.Fraction(8, -12) other = fr.Fraction(1, 2) assert (frac_1_2 == other) == (frac_1_2.numer == other.numer) and (frac_1_2.denom == other.denom) assert (frac_1_2 == .5) == (float(frac_1_2) == .5)
def test_define(self): """ tests the initialization process and its ability to filter out strings and floats """ self.assertEqual(self.half, fraction.Fraction(1, 2)) with self.assertRaises(ValueError): fraction.Fraction("ham", 2) with self.assertRaises(ValueError): fraction.Fraction(3, "sandwich") with self.assertRaises(ValueError): fraction.Fraction(1.5, 3) with self.assertRaises(ValueError): fraction.Fraction(3, 4.5)
def main(): ## Add two fractions. f1 = fraction.Fraction() numerator = int(input("Enter numerator of first fraction: ")) f1.setNumerator(numerator) denominator = int(input("Enter denominator of first fraction: ")) f1.setDenominator(denominator) f2 = fraction.Fraction() numerator = int(input("Enter numerator of second fraction: ")) f2.setNumerator(numerator) denominator = int(input("Enter denominator of second fraction: ")) f2.setDenominator(denominator) print("Sum:", calculateSum(f1, f2))
def main(): v = fraction.Fraction(1, 2) cnt = 0 for i in range(1, 1000): v = contFraction(v) v = v.cancel() r = v + fraction.Fraction(1, 1) numseq = euler.intToSeq(r.num) denseq = euler.intToSeq(r.den) if len(numseq) > len(denseq): print i + 1 cnt += 1 print 'soln', cnt
def test_multiply(self): """ This method tests the fraction multiply operator overload, for both scalar and fraction multiplication. """ test_fraction1 = fraction.Fraction(4, 29) test_fraction2 = fraction.Fraction(1, 2) test_fraction3 = test_fraction1 * test_fraction2 self.assertEqual(test_fraction3.numerator, 2) self.assertEqual(test_fraction3.denominator, 29) test_integer3 = 5 test_fraction4 = test_fraction3 * test_integer3 self.assertEqual(test_fraction4.numerator, 10) self.assertEqual(test_fraction4.denominator, 29)
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 = fr.Fraction(30, 42) # 30/42 reduces to 5/7. assert frac.numer == 5 assert frac.denom == 7 with pytest.raises(ZeroDivisionError) as excinfo: fr.Fraction(1, 0) assert excinfo.value.args[0] == "denominator cannot be zero" with pytest.raises(TypeError) as excinfo: fr.Fraction(1, "2") assert excinfo.value.args[ 0] == "numerator and denominator must be integers"
def addFractions(): ''' addFractions()=adds two fractions together @param numerator, denmoinator, numerator2, denominator2=numerators and denominators of the fractions @param balor=object holding fractions @param added=sum of the two fractions prints sum of two fractions ''' try: numerator = int(input("Enter the numerator for the first fraction: ")) denominator = int( input("Enter the denominator of the first fraction: ")) numerator2 = int(input("Enter the numerator of the second fraction: ")) denominator2 = int( input("Enter the denominator for the second fraction: ")) balor = fraction.Fraction(numerator, denominator, 0, numerator2, denominator2) balor.addFractions() added = balor.simplify() print(numerator, "/", denominator, " + ", numerator2, "/", denominator2, "=", added, sep="") except: print("Unhandled exception.")