| | |
| | | self.assertEqual(route.path, ':path') |
| | | self.assertEqual(route.name, 'name') |
| | | self.assertEqual(route.factory, 'factory') |
| | | self.assertTrue(route.generate.__class__ is types.FunctionType) |
| | | self.assertTrue(route.match.__class__ is types.FunctionType) |
| | | self.assertIsInstance(route.generate, types.FunctionType) |
| | | self.assertIsInstance(route.match, types.FunctionType) |
| | | |
| | | def test_ctor_defaults(self): |
| | | import types |
| | |
| | | self.assertEqual(route.path, ':path') |
| | | self.assertEqual(route.name, 'name') |
| | | self.assertEqual(route.factory, None) |
| | | self.assertTrue(route.generate.__class__ is types.FunctionType) |
| | | self.assertTrue(route.match.__class__ is types.FunctionType) |
| | | self.assertIsInstance(route.generate, types.FunctionType) |
| | | self.assertIsInstance(route.match, types.FunctionType) |
| | | |
| | | def test_match(self): |
| | | route = self._makeOne('name', ':path') |
| | |
| | | self.assertEqual(generator({'baz': 1, 'buz': 2}), '/foo/1/biz/2/bar') |
| | | |
| | | def test_custom_regex(self): |
| | | matcher, generator = self._callFUT('foo/{baz}/biz/{buz:[^/\.]+}.{bar}') |
| | | matcher, generator = self._callFUT( |
| | | 'foo/{baz}/biz/{buz:[^/\\.]+}.{bar}' |
| | | ) |
| | | self.assertEqual( |
| | | matcher('/foo/baz/biz/buz.bar'), |
| | | {'baz': 'baz', 'buz': 'buz', 'bar': 'bar'}, |
| | |
| | | |
| | | def test_custom_regex_with_colons(self): |
| | | matcher, generator = self._callFUT( |
| | | 'foo/{baz}/biz/{buz:(?:[^/\.]+)}.{bar}' |
| | | 'foo/{baz}/biz/{buz:(?:[^/\\.]+)}.{bar}' |
| | | ) |
| | | self.assertEqual( |
| | | matcher('/foo/baz/biz/buz.bar'), |
| | |
| | | self.assertEqual(generator({'baz': 1, 'buz': 2}), '/foo/1/biz/2/bar') |
| | | |
| | | def test_custom_regex_with_embedded_squigglies(self): |
| | | matcher, generator = self._callFUT('/{buz:\d{4}}') |
| | | matcher, generator = self._callFUT('/{buz:\\d{4}}') |
| | | self.assertEqual(matcher('/2001'), {'buz': '2001'}) |
| | | self.assertEqual(matcher('/200'), None) |
| | | self.assertEqual(generator({'buz': 2001}), '/2001') |
| | | |
| | | def test_custom_regex_with_embedded_squigglies2(self): |
| | | matcher, generator = self._callFUT('/{buz:\d{3,4}}') |
| | | matcher, generator = self._callFUT('/{buz:\\d{3,4}}') |
| | | self.assertEqual(matcher('/2001'), {'buz': '2001'}) |
| | | self.assertEqual(matcher('/200'), {'buz': '200'}) |
| | | self.assertEqual(matcher('/20'), None) |
| | |
| | | |
| | | def test_custom_regex_with_embedded_squigglies3(self): |
| | | matcher, generator = self._callFUT( |
| | | '/{buz:(\d{2}|\d{4})-[a-zA-Z]{3,4}-\d{2}}' |
| | | '/{buz:(\\d{2}|\\d{4})-[a-zA-Z]{3,4}-\\d{2}}' |
| | | ) |
| | | self.assertEqual(matcher('/2001-Nov-15'), {'buz': '2001-Nov-15'}) |
| | | self.assertEqual(matcher('/99-June-10'), {'buz': '99-June-10'}) |
| | |
| | | ) |
| | | self.matches('*traverse', '/zzz/abc', {'traverse': ('zzz', 'abc')}) |
| | | self.matches('*traverse', '/zzz/ abc', {'traverse': ('zzz', ' abc')}) |
| | | #'/La%20Pe%C3%B1a' |
| | | # '/La%20Pe%C3%B1a' |
| | | self.matches( |
| | | '{x}', |
| | | text_(b'/La Pe\xc3\xb1a', 'utf-8'), |
| | |
| | | ) |
| | | self.matches('*traverse', '/zzz/abc', {'traverse': ('zzz', 'abc')}) |
| | | self.matches('*traverse', '/zzz/ abc', {'traverse': ('zzz', ' abc')}) |
| | | #'/La%20Pe%C3%B1a' |
| | | # '/La%20Pe%C3%B1a' |
| | | # pattern, path, expected |
| | | self.matches( |
| | | ':x', |