aboutsummaryrefslogtreecommitdiff
path: root/src/testing/testing.odin
diff options
context:
space:
mode:
authorDanielGavin <danielgavin5@hotmail.com>2024-06-13 19:58:48 +0200
committerDanielGavin <danielgavin5@hotmail.com>2024-06-13 19:58:48 +0200
commitf330a19afa116a386166bce1133c1d64cf524d3c (patch)
tree14d70187d3b3a9b1159dce213bea15b0b4119f1f /src/testing/testing.odin
parent582a1b1c1b42065d3bd22bd0f23bfd3ec38cdae4 (diff)
parent9e05f30ca31e0b42c37ddc70a89e3a0863757cd8 (diff)
Merge branch 'rename' of https://github.com/DanielGavin/ols into rename
Diffstat (limited to 'src/testing/testing.odin')
-rw-r--r--src/testing/testing.odin33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/testing/testing.odin b/src/testing/testing.odin
index 210db59..0d9c028 100644
--- a/src/testing/testing.odin
+++ b/src/testing/testing.odin
@@ -414,3 +414,36 @@ expect_reference_locations :: proc(
}
}
}
+
+expect_semantic_tokens :: proc(
+ t: ^testing.T,
+ src: ^Source,
+ expected: []server.SemanticToken,
+) {
+ setup(src)
+ defer teardown(src)
+
+
+ resolve_flag: server.ResolveReferenceFlag
+ symbols_and_nodes := server.resolve_entire_file(
+ src.document,
+ resolve_flag,
+ context.temp_allocator,
+ )
+
+ range := common.Range{end = {line = 9000000}} //should be enough
+ tokens := server.get_semantic_tokens(src.document, range, symbols_and_nodes)
+
+ testing.expectf(t, len(expected) == len(tokens), "\nExpected %d tokens, but received %d", len(expected), len(tokens))
+
+ for i in 0..<min(len(expected), len(tokens)) {
+ e, a := expected[i], tokens[i]
+ testing.expectf(t,
+ e == a,
+ "\n[%d]: Expected \n(%d, %d, %d, %v, %w)\nbut received\n(%d, %d, %d, %v, %w)",
+ i,
+ e.delta_line, e.delta_char, e.len, e.type, e.modifiers,
+ a.delta_line, a.delta_char, a.len, a.type, a.modifiers,
+ )
+ }
+}