~osomon/pyexiv2/pyexiv2-0.3

« back to all changes in this revision

Viewing changes to test/rational.py

  • Committer: Olivier Tilloy
  • Date: 2011-05-24 09:18:41 UTC
  • mto: This revision was merged to the branch mainline in revision 355.
  • Revision ID: olivier@tilloy.net-20110524091841-fk710gtozm8j3ts5
Do not fail to parse rationals stored as '0/0'.
In the crazy world of EXIF metadata, this means a null fraction, i.e. 0/1.

Show diffs side-by-side

added added

removed removed

Lines of Context:
52
52
        else:
53
53
            self.fail('Denominator is not read-only.')
54
54
 
 
55
    def test_match_string(self):
 
56
        self.assertEqual(Rational.match_string('4/3'), (4, 3))
 
57
        self.assertEqual(Rational.match_string('-4/3'), (-4, 3))
 
58
        self.assertEqual(Rational.match_string('0/3'), (0, 3))
 
59
        self.assertEqual(Rational.match_string('0/0'), (0, 0))
 
60
        self.assertRaises(ValueError, Rational.match_string, '+3/5')
 
61
        self.assertRaises(ValueError, Rational.match_string, '3 / 5')
 
62
        self.assertRaises(ValueError, Rational.match_string, '3/-5')
 
63
        self.assertRaises(ValueError, Rational.match_string, 'invalid')
 
64
 
55
65
    def test_from_string(self):
56
66
        self.assertEqual(Rational.from_string('4/3'), Rational(4, 3))
57
67
        self.assertEqual(Rational.from_string('-4/3'), Rational(-4, 3))
59
69
        self.assertRaises(ValueError, Rational.from_string, '3 / 5')
60
70
        self.assertRaises(ValueError, Rational.from_string, '3/-5')
61
71
        self.assertRaises(ValueError, Rational.from_string, 'invalid')
 
72
        self.assertRaises(ZeroDivisionError, Rational.from_string, '1/0')
 
73
        self.assertRaises(ZeroDivisionError, Rational.from_string, '0/0')
62
74
 
63
75
    def test_to_string(self):
64
76
        self.assertEqual(str(Rational(3, 5)), '3/5')