2 This file demonstrates writing tests using the unittest module. These will pass
3 when you run "manage.py test".
5 Replace this with more appropriate tests for your application.
8 from django.forms import ValidationError
9 from django.test import TestCase
13 class UnitTest(TestCase):
16 name=u'degree Farenheit', abbrev=u'\u00b0F', type=u'temperature',
17 system=models.US, scale=1/1.8, offset=32)
18 self.gal = models.Unit(
19 name=u'gallon', abbrev=u'gal', type=u'volume',
20 system=models.US, scale=3.78541, offset=0)
22 def test_conversion_from_si(self):
23 "Test from-SI conversion"
24 self.assertEqual(self.F.convert_from_si(0), 32)
25 self.assertEqual(self.F.convert_from_si(100), 212)
26 self.assertEqual(self.gal.convert_from_si(1), 0.26417217685798894)
28 def test_conversion_to_si(self):
29 "Test to-SI conversion"
30 self.assertEqual(self.F.convert_to_si(32), 0)
31 self.assertEqual(self.F.convert_to_si(212), 100)
32 self.assertEqual(self.gal.convert_to_si(1), 3.78541)
34 def test_formatting(self):
35 "Test amount formatting"
36 self.assertEqual(unicode(self.gal), u'gal')
37 self.assertEqual(unicode(self.F), u'\u00b0F')
40 class AmountTest(TestCase):
42 self.unit = models.Unit(
43 name=u'gallon', abbrev=u'gal', type=u'volume',
44 system=models.US, scale=3.78541, offset=0)
45 self.amount = models.Amount()
47 def test_formatting(self):
48 "Test amount formatting"
49 for v,minv,maxv,unit,result in (
50 (None, None, None, None, u'-'),
51 (None, None, None, self.unit, u'- gal'),
52 (2, None, None, self.unit, u'2 gal'),
53 (2, 1.5, None, self.unit, u'1.5-2 gal'),
54 (2, None, 2.5, self.unit, u'2-2.5 gal'),
55 (2, 1.5, 2.5, self.unit, u'2 (1.5-2.5) gal'),
56 (None, 1.5, 2.5, self.unit, u'1.5-2.5 gal'),
58 self.amount.unit = unit
60 self.amount.min_value = minv
61 self.amount.max_value = maxv
62 self.assertEqual(self.amount.format_amount(), result)
64 def test_invalid_formatting(self):
65 "Test amount formatting which raises errors"
66 for v,minv,maxv,unit,result in (
67 (None, 1.5, None, self.unit, u'2 gal'),
68 (None, None, 2.5, self.unit, u'2 gal'),
70 self.amount.unit = unit
72 self.amount.min_value = minv
73 self.amount.max_value = maxv
74 self.assertRaises(ValidationError, self.amount.format_amount)
76 def test_validation(self):
77 "Test amount validation"
78 for valid,v,minv,maxv,unit in (
79 (True, None, None, None, None),
80 (True, None, None, None, self.unit),
81 (True, 2, None, None, self.unit),
82 (True, 2, 1.5, None, self.unit),
83 (True, 2, None, 2.5, self.unit),
84 (True, 2, 1.5, 2.5, self.unit),
85 (True, None, 1.5, 2.5, self.unit),
86 (False, None, 1.5, None, self.unit),
87 (False, None, None, 2.5, self.unit),
89 self.amount.unit = unit
91 self.amount.min_value = minv
92 self.amount.max_value = maxv
94 self.amount.validate_amount()
96 self.assertRaises(ValidationError, self.amount.format_amount)