+##
+
+class ParseFormatTestCase(unittest.TestCase):
+ def assertParse(self, format, expected):
+ self.assertEqual(srcformats.parse_format(format), expected)
+
+ def assertParseFail(self, format):
+ self.assertRaises(
+ UnknownFormatError,
+ lambda: srcformats.parse_format(format)
+ )
+
+ def testParse(self):
+ self.assertParse('1.0', (1, 0))
+
+ def testEmpty(self):
+ self.assertParseFail('')
+ self.assertParseFail(' ')
+ self.assertParseFail(' ')
+
+ def textText(self):
+ self.assertParse('1.2 (three)', (1, 2, 'three'))
+ self.assertParseFail('0.0 ()')
+
+class ParseSourceFormat(ParseFormat):
+ def assertFormat(self, *args, **kwargs):
+ kwargs['is_a_dsc'] = kwargs.get('is_a_dsc', True)
+ super(ParseSourceFormat, self).assertFormat(*args, **kwargs)
+
+ def assertInvalidFormat(self, *args, **kwargs):
+ kwargs['is_a_dsc'] = kwargs.get('is_a_dsc', True)
+ super(ParseSourceFormat, self).assertInvalidFormat(*args, **kwargs)
+
+ def testSimple(self):
+ self.assertFormat('1.0', (1, 0))
+
+ def testZero(self):
+ self.assertInvalidFormat('0.0')
+
+ def testNative(self):
+ self.assertFormat('3.0 (native)', (3, 0, 'native'))
+
+ def testQuilt(self):
+ self.assertFormat('3.0 (quilt)', (3, 0, 'quilt'))
+
+ def testUnknownThree(self):
+ self.assertInvalidFormat('3.0 (cvs)')
+
+class ParseBinaryFormat(ParseFormat):
+ def assertFormat(self, *args, **kwargs):
+ kwargs['is_a_dsc'] = kwargs.get('is_a_dsc', False)
+ super(ParseBinaryFormat, self).assertFormat(*args, **kwargs)
+
+ def assertInvalidFormat(self, *args, **kwargs):
+ kwargs['is_a_dsc'] = kwargs.get('is_a_dsc', False)
+ super(ParseBinaryFormat, self).assertInvalidFormat(*args, **kwargs)
+
+ def testSimple(self):
+ self.assertFormat('1.5', (1, 5))
+
+ def testRange(self):
+ self.assertInvalidFormat('1.0')
+ self.assertFormat('1.5', (1, 5))
+ self.assertFormat('1.8', (1, 8))
+ self.assertInvalidFormat('1.9')
+
+ def testFilesField(self):
+ self.assertInvalidFormat('1.7', field='notfiles')
+ self.assertFormat('1.8', (1, 8), field='notfiles')
+