1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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),
)
|