#!/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 "", "", "", # Relative paths "<../some/another_one/here>", "<../some/path/here.property_name>", "<../some/path/here>", ]: self.assertEqual( [(Name.Namespace, code), (Whitespace, "\n")], self._get(code), )