예제 #1
0
 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)
예제 #3
0
 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))
예제 #4
0
 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")
예제 #5
0
 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")
예제 #6
0
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()
예제 #7
0
 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")
예제 #8
0
 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
예제 #10
0
 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
예제 #11
0
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)
예제 #12
0
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)
예제 #13
0
 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
예제 #14
0
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
예제 #15
0
 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)
예제 #16
0
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"
예제 #17
0
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
예제 #18
0
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)
예제 #19
0
 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")
예제 #20
0
 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))
예제 #21
0
 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")
예제 #22
0
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
예제 #23
0
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)
예제 #25
0
 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)
예제 #26
0
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))
예제 #27
0
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
예제 #28
0
 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)
예제 #29
0
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"
예제 #30
0
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.")