diff options
Diffstat (limited to '')
-rwxr-xr-x | tests/test_usd.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/tests/test_usd.py b/tests/test_usd.py new file mode 100755 index 0000000..5438983 --- /dev/null +++ b/tests/test_usd.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python + +"""Test that syntax highlighting for USD files works correctly.""" + +import textwrap +import unittest + +from pygments.lexers import UsdLexer +from pygments.token import Name, String, Whitespace + + +class _Common(unittest.TestCase): + """A basic class that makes it easier to write unittests.""" + + def setUp(self): + """Create a fresh USD lexer class before each test runs.""" + self.lexer = UsdLexer() + + def _get(self, code): + """Tokenize the code into its unique parts. + + :param code: The USD source code to split up. + :type code: str + + :returns: The tokenized pieces. + :rtype: list[:class:`pygments.token._TokenType`] + + """ + return list(self.lexer.get_tokens(code)) + + +class Features(_Common): + """Test that different features of USD highlight as expected.""" + + def test_asset_path(self): + """Check that a regular file path highlights correctly.""" + for path in [ + "@./some/path/to/a/file/foo.usda@", + "@/some/path/to/a/file/foo.usda@", + "@some/path/to/a/file/foo.usda@", + r"@file://SPECI__Z-_ALIZED(syntax_here)?with_arbitrary#)(%*&)\characters.tar.gz@", + ]: + expected = [ + (String.Interpol, path), + (Whitespace, "\n"), + ] + + self.assertEqual(expected, self._get(path)) + + def test_target_absolute(self): + """Check that SdfPath syntax examples work correctly.""" + for code in [ + # Absolute paths + "</some/another_one/here>", + "</some/path/here.property_name>", + "</some/path/here>", + # Relative paths + "<../some/another_one/here>", + "<../some/path/here.property_name>", + "<../some/path/here>", + ]: + self.assertEqual( + [(Name.Namespace, code), (Whitespace, "\n")], self._get(code), + ) |