summaryrefslogtreecommitdiff
path: root/tests/test_java.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_java.py')
-rw-r--r--tests/test_java.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/tests/test_java.py b/tests/test_java.py
index 3baec0ad..f7b16bd7 100644
--- a/tests/test_java.py
+++ b/tests/test_java.py
@@ -7,9 +7,11 @@
:license: BSD, see LICENSE for details.
"""
+import time
+
import pytest
-from pygments.token import Text, Name, Punctuation, Keyword, Number
+from pygments.token import Keyword, Name, Number, Punctuation, String, Text
from pygments.lexers import JavaLexer
@@ -76,3 +78,24 @@ def test_numeric_literals(lexer):
(Text, '\n')
]
assert list(lexer.get_tokens(fragment)) == tokens
+
+
+@pytest.mark.parametrize(
+ 'text',
+ (
+ '""', '"abc"', '"ひらがな"', '"123"',
+ '"\\\\"', '"\\t"' '"\\""',
+ ),
+)
+def test_string_literals_positive_match(lexer, text):
+ """Test positive matches for string literals."""
+ tokens = list(lexer.get_tokens_unprocessed(text))
+ assert all([token is String for _, token, _ in tokens])
+ assert ''.join([value for _, _, value in tokens]) == text
+
+
+def test_string_literals_backtracking(lexer):
+ """Test catastrophic backtracking for string literals."""
+ start_time = time.time()
+ list(lexer.get_tokens_unprocessed('"' + '\\' * 100))
+ assert time.time() - start_time < 1, 'possible backtracking bug'