aboutsummaryrefslogtreecommitdiff
path: root/Tests/WmapParserTests/GroupsParserTests.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/WmapParserTests/GroupsParserTests.swift')
-rw-r--r--Tests/WmapParserTests/GroupsParserTests.swift38
1 files changed, 38 insertions, 0 deletions
diff --git a/Tests/WmapParserTests/GroupsParserTests.swift b/Tests/WmapParserTests/GroupsParserTests.swift
new file mode 100644
index 0000000..dced486
--- /dev/null
+++ b/Tests/WmapParserTests/GroupsParserTests.swift
@@ -0,0 +1,38 @@
+import Testing
+
+@testable import WmapParser
+
+@Test func shouldParseAGroupWithASingleComponent() {
+ let source = "[Group] Lonely"
+ let result = parse(source)
+ #expect(result.groups.count == 1)
+ #expect(result.groups.first?.components == ["Lonely"])
+}
+
+@Test func shouldParseAGroupWithMultipleComponents() {
+ let source = "[GrouP] Huey, Dewey, Louie"
+ let result = parse(source)
+ #expect(result.groups.count == 1)
+ #expect(result.groups.first?.components == ["Huey", "Dewey", "Louie"])
+}
+
+@Test func shouldHandleCaseInsensitiveGroupKeyword() {
+ let source = "[group] Salt, Pepper"
+ let result = parse(source)
+ #expect(result.groups.count == 1)
+ #expect(result.groups.first?.components == ["Salt", "Pepper"])
+}
+
+@Test func shouldPreserveCaseInGroupComponentLabel() {
+ let source = "[GROUP] XML, LaTeX"
+ let result = parse(source)
+ #expect(result.groups.count == 1)
+ #expect(result.groups.first?.components == ["XML", "LaTeX"])
+}
+
+@Test func shouldHandleWhitespaceAroundCommas() {
+ let source = "[Group] sky, is large, emperor"
+ let result = parse(source)
+ #expect(result.groups.count == 1)
+ #expect(result.groups.first?.components == ["sky", "is large", "emperor"])
+}