]> git.decadent.org.uk Git - dak.git/blob - tests/test_formats.py
merge from master
[dak.git] / tests / test_formats.py
1 #!/usr/bin/env python
2
3 import unittest
4
5 import os, sys
6 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
7
8 from daklib.formats import parse_format, validate_changes_format
9 from daklib.dak_exceptions import UnknownFormatError
10
11 class ParseFormatTestCase(unittest.TestCase):
12     def assertParse(self, format, expected):
13         self.assertEqual(parse_format(format), expected)
14
15     def assertParseFail(self, format):
16         self.assertRaises(
17             UnknownFormatError,
18             lambda: parse_format(format)
19         )
20
21     def testParse(self):
22         self.assertParse('1.0', (1, 0))
23
24     def testEmpty(self):
25         self.assertParseFail('')
26         self.assertParseFail(' ')
27         self.assertParseFail('  ')
28
29     def textText(self):
30         self.assertParse('1.2 (three)', (1, 2, 'three'))
31         self.assertParseFail('0.0 ()')
32
33 class ValidateChangesFormat(unittest.TestCase):
34     def assertValid(self, changes, field='files'):
35         validate_changes_format(changes, field)
36
37     def assertInvalid(self, *args, **kwargs):
38         self.assertRaises(
39             UnknownFormatError,
40             lambda: self.assertValid(*args, **kwargs)
41         )
42
43     ##
44
45     def testBinary(self):
46         self.assertValid((1, 5))
47         self.assertValid((1, 8))
48         self.assertInvalid((1, 0))
49
50     def testRange(self):
51         self.assertInvalid((1, 3))
52         self.assertValid((1, 5))
53         self.assertValid((1, 8))
54         self.assertInvalid((1, 9))
55
56     def testFilesField(self):
57         self.assertInvalid((1, 7), field='notfiles')
58         self.assertValid((1, 8), field='notfiles')