aboutsummaryrefslogtreecommitdiffstats
path: root/tools/snippets_translate/tests/test_snippets.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/snippets_translate/tests/test_snippets.py')
-rw-r--r--tools/snippets_translate/tests/test_snippets.py134
1 files changed, 134 insertions, 0 deletions
diff --git a/tools/snippets_translate/tests/test_snippets.py b/tools/snippets_translate/tests/test_snippets.py
new file mode 100644
index 000000000..84897d815
--- /dev/null
+++ b/tools/snippets_translate/tests/test_snippets.py
@@ -0,0 +1,134 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+from main import _get_snippets, get_snippet_ids, CPP_SNIPPET_PATTERN
+
+
+C_COMMENT = "//"
+
+
+def test_stacking():
+ lines = [
+ "//! [A] //! [B] ",
+ "//! [C] //! [D] //! [E]",
+ "// Content",
+ "//! [C] //! [A] ",
+ "//! [B] //! [D] //! [E]",
+ ]
+ snippets = _get_snippets(lines, C_COMMENT, CPP_SNIPPET_PATTERN)
+ assert len(snippets) == 5
+
+ snippet_a = snippets["A"]
+ assert len(snippet_a) == 4 # A starts at line 0 and ends at line 3
+
+ snippet_b = snippets["B"]
+ assert len(snippet_b) == 5 # B starts at line 0 and ends at line 4
+
+ snippet_c = snippets["C"]
+ assert len(snippet_c) == 3 # C starts at line 1 and ends at line 3
+
+ snippet_d = snippets["D"]
+ assert len(snippet_d) == 4 # D starts at line 1 and ends at line 4
+
+ snippet_e = snippets["E"]
+ assert len(snippet_e) == 4 # E starts at line 1 and ends at line 4
+
+
+def test_nesting():
+ lines = [
+ "//! [A]",
+ "//! [B]",
+ "//! [C]",
+ "// Content",
+ "//! [A]",
+ "//! [C]",
+ "//! [B]",
+ ]
+ snippets = _get_snippets(lines, C_COMMENT, CPP_SNIPPET_PATTERN)
+ assert len(snippets) == 3
+
+ snippet_a = snippets["A"]
+ assert len(snippet_a) == 5
+ assert snippet_a == lines[:5]
+
+ snippet_b = snippets["B"]
+ assert len(snippet_b) == 6
+ assert snippet_b == lines[1:]
+
+ snippet_c = snippets["C"]
+ assert len(snippet_c) == 4
+ assert snippet_c == lines[2:6]
+
+
+def test_overlapping():
+ a_id = "//! [A]"
+ b_id = "//! [B]"
+ lines = [
+ "pretext",
+ a_id,
+ "l1",
+ "//! [C]",
+ "//! [A] //! [B]",
+ "l2",
+ "l3 // Comment",
+ b_id,
+ "posttext",
+ "//! [C]",
+ ]
+ snippets = _get_snippets(lines, C_COMMENT, CPP_SNIPPET_PATTERN)
+ assert len(snippets) == 3
+
+ # Simple snippet ID lines are generated
+ snippet_a = snippets["A"]
+ assert len(snippet_a) == 4
+ assert snippet_a == lines[1:4] + [a_id]
+
+ snippet_c = snippets["C"]
+ assert len(snippet_c) == 7
+ assert snippet_c == lines[3:]
+
+ snippet_b = snippets["B"]
+ assert len(snippet_b) == 4
+ assert snippet_b == [b_id] + lines[5:8]
+
+
+def test_snippets():
+ a_id = "//! [A]"
+ b_id = "//! [B]"
+
+ lines = [
+ "pretext",
+ a_id,
+ "l1",
+ "//! [A] //! [B]",
+ "l2",
+ "l3 // Comment",
+ b_id,
+ "posttext"
+ ]
+
+ snippets = _get_snippets(lines, C_COMMENT, CPP_SNIPPET_PATTERN)
+ assert len(snippets) == 2
+
+ snippet_a = snippets["A"]
+
+ assert len(snippet_a) == 3
+ assert snippet_a == lines[1:3] + [a_id]
+
+ snippet_b = snippets["B"]
+ assert len(snippet_b) == 4
+ assert snippet_b == [b_id] + lines[4:7]
+
+
+def test_snippet_ids():
+ assert get_snippet_ids("", CPP_SNIPPET_PATTERN) == []
+ assert get_snippet_ids("//! ",
+ CPP_SNIPPET_PATTERN) == [] # Invalid id
+ assert get_snippet_ids("//! [some name]",
+ CPP_SNIPPET_PATTERN) == ["some name"]
+ assert get_snippet_ids("//! [some name] [some other name]",
+ CPP_SNIPPET_PATTERN) == ["some name"]
+ assert get_snippet_ids("//! [some name] //! ",
+ CPP_SNIPPET_PATTERN) == ["some name"] # Invalid id
+ assert get_snippet_ids("//! [some name] //! [some other name]",
+ CPP_SNIPPET_PATTERN) == ["some name", "some other name"]