summaryrefslogtreecommitdiffstats
path: root/tests/test_usd.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xtests/test_usd.py64
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),
+ )