aboutsummaryrefslogtreecommitdiff
path: root/Tests/WmapParserTests/GroupsParserTests.swift
blob: a441a6770e7f9fd133edcd3f36567b939a9e9e95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import Testing

@testable import WmapParser

@Test func shouldParseAGroupWithASingleComponent() {
  let source = "[Group] Lonely"
  let result = WmapParser.parse(source)
  #expect(result.groups.count == 1)
  #expect(result.groups.first?.components == ["Lonely"])
}

@Test func shouldParseAGroupWithMultipleComponents() {
  let source = "[GrouP] Huey, Dewey, Louie"
  let result = WmapParser.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 = WmapParser.parse(source)
  #expect(result.groups.count == 1)
  #expect(result.groups.first?.components == ["Salt", "Pepper"])
}

@Test func shouldPreserveCaseInGroupComponentLabel() {
  let source = "[GROUP] XML, LaTeX"
  let result = WmapParser.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 = WmapParser.parse(source)
  #expect(result.groups.count == 1)
  #expect(result.groups.first?.components == ["sky", "is  large", "emperor"])
}