Skip to content

Commit 8995674

Browse files
committed
port MarkdownPluginSwiftTests to Swift Testing
1 parent 3efa7e3 commit 8995674

12 files changed

+1121
-1126
lines changed

Package.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -645,11 +645,10 @@ let package:Package = .init(
645645
.product(name: "Testing_", package: "swift-grammar"),
646646
]),
647647

648-
.executableTarget(name: "MarkdownPluginSwiftTests",
648+
.testTarget(name: "MarkdownPluginSwiftTests",
649649
dependencies: [
650650
.target(name: "MarkdownPluginSwift"),
651651
.target(name: "MarkdownRendering"),
652-
.product(name: "Testing_", package: "swift-grammar"),
653652
]),
654653

655654
.executableTarget(name: "MarkdownRenderingTests",
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import HTML
2+
import MarkdownPluginSwift
3+
import MarkdownRendering
4+
import Testing
5+
6+
@Suite
7+
struct Diffs
8+
{
9+
@Test
10+
static func Overlays()
11+
{
12+
let swift:Markdown.SwiftLanguage = .swift
13+
let code:String = """
14+
{
15+
return \"""
16+
Barbieland
17+
One
18+
Great
19+
Free
20+
\"""
21+
}
22+
"""
23+
24+
let bytes:[UInt8] = .init(code.utf8)
25+
let lines:[ArraySlice<UInt8>] = bytes.split(separator: 0x0A,
26+
omittingEmptySubsequences: false)
27+
28+
let layered:Markdown.Bytecode = swift.parse(code: bytes,
29+
diff: [
30+
(bytes.startIndex ..< lines[3].startIndex, nil),
31+
(lines[3].startIndex ..< lines[6].startIndex, .insert),
32+
(lines[6].startIndex ..< bytes.endIndex, nil)
33+
])
34+
35+
let html:HTML = .init { $0 += layered.safe }
36+
37+
#expect("\(html)" == """
38+
{
39+
<span class='xk'>return</span> <span class='xs'>\"""</span>
40+
<span class='xs'>Barbieland
41+
</span><ins> <span class='xs'>One
42+
</span> <span class='xs'>Great
43+
</span> <span class='xs'>Free</span>
44+
</ins> <span class='xs'>\"""</span>
45+
}
46+
""")
47+
}
48+
}
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
import Signatures
2+
import Testing
3+
4+
@_spi(testable)
5+
import MarkdownPluginSwift
6+
7+
@Suite
8+
struct InterestingKeywords
9+
{
10+
@Test
11+
static func Actor()
12+
{
13+
let decl:String = "actor MargotRobbie"
14+
15+
var keywords:Signature<Never>.Expanded.InterestingKeywords = .init()
16+
let expanded:Signature<Never>.Expanded = .init(decl,
17+
keywords: &keywords)
18+
19+
#expect("\(expanded.bytecode.safe)" == decl)
20+
#expect(keywords.actor)
21+
}
22+
@Test
23+
static func Final()
24+
{
25+
let decl:String = "final class C"
26+
27+
var keywords:Signature<Never>.Expanded.InterestingKeywords = .init()
28+
let expanded:Signature<Never>.Expanded = .init(decl,
29+
keywords: &keywords)
30+
31+
#expect("\(expanded.bytecode.safe)" == decl)
32+
#expect(keywords.final)
33+
}
34+
@Test
35+
static func ClassSubscript()
36+
{
37+
let decl:String = "class subscript(index: Int) -> Int"
38+
39+
var keywords:Signature<Never>.Expanded.InterestingKeywords = .init()
40+
let expanded:Signature<Never>.Expanded = .init(decl,
41+
keywords: &keywords)
42+
43+
#expect("\(expanded.bytecode.safe)" == decl)
44+
#expect(keywords.class)
45+
}
46+
@Test
47+
static func ClassFunc()
48+
{
49+
let decl:String = "class func x() -> Int"
50+
51+
var keywords:Signature<Never>.Expanded.InterestingKeywords = .init()
52+
let expanded:Signature<Never>.Expanded = .init(decl,
53+
keywords: &keywords)
54+
55+
#expect("\(expanded.bytecode.safe)" == decl)
56+
#expect(keywords.class)
57+
}
58+
@Test
59+
static func ClassVar()
60+
{
61+
let decl:String = "class var x: Int { get }"
62+
63+
var keywords:Signature<Never>.Expanded.InterestingKeywords = .init()
64+
let expanded:Signature<Never>.Expanded = .init(decl,
65+
keywords: &keywords)
66+
67+
#expect("\(expanded.bytecode.safe)" == decl)
68+
#expect(keywords.class)
69+
}
70+
@Test
71+
static func FreestandingMacro()
72+
{
73+
let decl:String = """
74+
@freestanding(expression) macro line<T: ExpressibleByIntegerLiteral>() -> T
75+
"""
76+
77+
var keywords:Signature<Never>.Expanded.InterestingKeywords = .init()
78+
let expanded:Signature<Never>.Expanded = .init(decl,
79+
keywords: &keywords)
80+
81+
#expect("\(expanded.bytecode.safe)" == decl)
82+
#expect(keywords.freestanding)
83+
}
84+
@Test
85+
static func AttachedMacro()
86+
{
87+
let decl:String = """
88+
@attached(member) @attached(conformance) public macro OptionSet<RawType>()
89+
"""
90+
91+
var keywords:Signature<Never>.Expanded.InterestingKeywords = .init()
92+
let expanded:Signature<Never>.Expanded = .init(decl,
93+
keywords: &keywords)
94+
95+
#expect("\(expanded.bytecode.safe)" == decl)
96+
#expect(keywords.attached)
97+
}
98+
}

Sources/MarkdownPluginSwiftTests/Main.Diffs.swift

Lines changed: 0 additions & 56 deletions
This file was deleted.

Sources/MarkdownPluginSwiftTests/Main.InterestingKeywords.swift

Lines changed: 0 additions & 100 deletions
This file was deleted.

0 commit comments

Comments
 (0)