~osomon/pyexiv2/pyexiv2-0.3

« back to all changes in this revision

Viewing changes to test/utils.py

  • Committer: Olivier Tilloy
  • Date: 2010-12-24 15:56:11 UTC
  • mto: This revision was merged to the branch mainline in revision 348.
  • Revision ID: olivier@tilloy.net-20101224155611-xzk75rvbm4b7ixb4
is_fraction and make_fraction: convenience functions to handle transparently
the conditional availability of the fractions module in the standard library (Python ≥ 2.6).

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
 
27
27
import unittest
28
28
 
29
 
from pyexiv2.utils import undefined_to_string, string_to_undefined
 
29
from pyexiv2.utils import undefined_to_string, string_to_undefined, \
 
30
                          Rational, Fraction, is_fraction, make_fraction
30
31
 
31
32
 
32
33
class TestConversions(unittest.TestCase):
48
49
        value = "48 50 50 49"
49
50
        self.assertEqual(string_to_undefined(undefined_to_string(value)), value)
50
51
 
 
52
 
 
53
class TestFractions(unittest.TestCase):
 
54
 
 
55
    def test_is_fraction(self):
 
56
        if Fraction is not None:
 
57
            self.failUnless(is_fraction(Fraction()))
 
58
            self.failUnless(is_fraction(Fraction(3, 5)))
 
59
            self.failUnless(is_fraction(Fraction(Fraction(4, 5))))
 
60
            self.failUnless(is_fraction(Fraction('3/2')))
 
61
            self.failUnless(is_fraction(Fraction('-4/5')))
 
62
        self.failUnless(is_fraction(Rational(3, 5)))
 
63
        self.failUnless(is_fraction(Rational(-4, 5)))
 
64
        self.failUnless(is_fraction(Rational.from_string("3/5")))
 
65
        self.failUnless(is_fraction(Rational.from_string("-4/5")))
 
66
 
 
67
        self.failIf(is_fraction(3 / 5))
 
68
        self.failIf(is_fraction('3/5'))
 
69
        self.failIf(is_fraction('2.7'))
 
70
        self.failIf(is_fraction(2.7))
 
71
        self.failIf(is_fraction('notafraction'))
 
72
        self.failIf(is_fraction(None))
 
73
 
 
74
    def test_make_fraction(self):
 
75
        if Fraction is not None:
 
76
            self.assertEqual(make_fraction(3, 5), Fraction(3, 5))
 
77
            self.assertEqual(make_fraction(-3, 5), Fraction(-3, 5))
 
78
            self.assertEqual(make_fraction('3/2'), Fraction(3, 2))
 
79
            self.assertEqual(make_fraction('-3/4'), Fraction(-3, 4))
 
80
        else:
 
81
            self.assertEqual(make_fraction(3, 5), Rational(3, 5))
 
82
            self.assertEqual(make_fraction(-3, 5), Rational(-3, 5))
 
83
            self.assertEqual(make_fraction('3/2'), Rational(3, 2))
 
84
            self.assertEqual(make_fraction('-3/4'), Rational(-3, 4))
 
85
 
 
86
        self.assertRaises(ZeroDivisionError, make_fraction, 3, 0)
 
87
        self.assertRaises(ZeroDivisionError, make_fraction, '3/0')
 
88
        self.assertRaises(TypeError, make_fraction, 5, 3, 2)
 
89
        self.assertRaises(TypeError, make_fraction, None)
 
90