def test_string(self): self.assertEqual(dtb.Parser('\'abc\'').expect_string(), 'abc') self.assertEqual(dtb.Parser('\'abc\'#comment').expect_string(), 'abc') self.assertEqual(dtb.Parser('\'\'').expect_string(), '') with self.assertRaises(dtb.ParserError): dtb.Parser('"abc\'').expect_string() with self.assertRaises(dtb.ParserError): dtb.Parser('').expect_string()
def test_line_col(self): parser = dtb.Parser('xyz') self.assertEqual(parser.line, 1) self.assertEqual(parser.col, 1) parser = dtb.Parser('xyz') parser.expect_ident() self.assertEqual(parser.line, 1) self.assertEqual(parser.col, 4) parser = dtb.Parser('xyz\nabcdef') parser.expect_ident() parser.expect_ident() self.assertEqual(parser.line, 2) self.assertEqual(parser.col, 7) parser = dtb.Parser('\n\n\n#comment\nabc') parser.expect_ident() self.assertEqual(parser.line, 5) self.assertEqual(parser.col, 4)
def test_vector(self): self.assertEqual(dtb.Parser('1').expect_vector(1), (1.0, )) self.assertEqual(dtb.Parser('1#comment').expect_vector(1), (1.0, )) self.assertEqual(dtb.Parser('0 1').expect_vector(2), (0.0, 1.0)) self.assertEqual(dtb.Parser('0 0 1').expect_vector(3), (0.0, 0.0, 1.0)) self.assertEqual( dtb.Parser('(0 0 1)').expect_vector(3), (0.0, 0.0, 1.0)) self.assertEqual( dtb.Parser('(0 0 1)#comment').expect_vector(3), (0.0, 0.0, 1.0)) with self.assertRaises(dtb.ParserError): dtb.Parser('(0 0 1').expect_vector(3) with self.assertRaises(dtb.ParserError): dtb.Parser('0 x y').expect_vector(3) with self.assertRaises(dtb.ParserError): dtb.Parser('0 1').expect_vector(3)
def test_ident(self): self.assertEqual(dtb.Parser('abc').expect_ident(), 'abc') self.assertEqual(dtb.Parser('abc#comment').expect_ident(), 'abc') self.assertEqual(dtb.Parser('xyz_abc').expect_ident(), 'xyz_abc') self.assertEqual(dtb.Parser('a 2').expect_ident(), 'a') self.assertEqual(dtb.Parser('a2').expect_ident(), 'a2') with self.assertRaises(dtb.ParserError): dtb.Parser('$ident').expect_ident()
def test_enum(self): self.assertEqual(dtb.Parser('foo').expect_enum(['foo']), 'foo') with self.assertRaises(dtb.ParserError): dtb.Parser('bar').expect_enum(['foo'])
def test_float(self): self.assertEqual(dtb.Parser('1').expect_float(), 1.0) self.assertEqual(dtb.Parser('1#comment').expect_float(), 1.0) self.assertEqual(dtb.Parser('-1').expect_float(), -1.0) self.assertEqual(dtb.Parser('+1').expect_float(), 1.0) self.assertEqual(dtb.Parser('123.456').expect_float(), 123.456) self.assertEqual(dtb.Parser('.001').expect_float(), 0.001) self.assertEqual(dtb.Parser('-.001').expect_float(), -0.001) self.assertEqual(dtb.Parser('+.001').expect_float(), 0.001) self.assertEqual(dtb.Parser('1.0e6').expect_float(), 1000000) self.assertEqual(dtb.Parser('1.0e-6').expect_float(), 0.000001) self.assertEqual(dtb.Parser('1.0E+6').expect_float(), 1000000) self.assertEqual(dtb.Parser('1234 5678').expect_float(), 1234) self.assertEqual(dtb.Parser('123..456').expect_float(), 123) with self.assertRaises(dtb.ParserError): dtb.Parser('++1234').expect_float() with self.assertRaises(dtb.ParserError): dtb.Parser('-').expect_float() with self.assertRaises(dtb.ParserError): dtb.Parser('a1').expect_float() with self.assertRaises(dtb.ParserError): dtb.Parser('').expect_float()