Skip to content

Commit fa5e03a

Browse files
committed
Swift: Add tests of URL.resourceBytes and URL.lines.
1 parent 69dd2c0 commit fa5e03a

File tree

1 file changed

+76
-0
lines changed
  • swift/ql/test/library-tests/dataflow/flowsources

1 file changed

+76
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
// --- stubs ---
2+
3+
struct URL {
4+
init?(string: String) {}
5+
6+
struct AsyncBytes : AsyncSequence, AsyncIteratorProtocol {
7+
typealias Element = UInt8
8+
9+
func makeAsyncIterator() -> AsyncBytes {
10+
return AsyncBytes()
11+
}
12+
13+
mutating func next() async -> Element? { return nil }
14+
15+
var lines: AsyncLineSequence<Self> {
16+
get {
17+
return AsyncLineSequence<Self>()
18+
}
19+
}
20+
}
21+
22+
var resourceBytes: URL.AsyncBytes {
23+
get {
24+
return AsyncBytes()
25+
}
26+
}
27+
28+
struct AsyncLineSequence<Base> : AsyncSequence, AsyncIteratorProtocol where Base : AsyncSequence, Base.Element == UInt8 {
29+
typealias Element = String
30+
31+
func makeAsyncIterator() -> AsyncLineSequence<Base> {
32+
return AsyncLineSequence<Base>()
33+
}
34+
35+
mutating func next() async -> Element? { return nil }
36+
}
37+
38+
var lines: AsyncLineSequence<URL.AsyncBytes> {
39+
get {
40+
return AsyncLineSequence<URL.AsyncBytes>()
41+
}
42+
}
43+
}
44+
45+
func print(_ items: Any...) {}
46+
47+
// --- tests ---
48+
49+
func testURLs() async {
50+
do
51+
{
52+
let url = URL(string: "http://example.com/")!
53+
let bytes = url.resourceBytes // SOURCE
54+
55+
for try await byte in bytes
56+
{
57+
print(byte)
58+
}
59+
60+
let lines = url.lines // SOURCE
61+
62+
for try await line in lines
63+
{
64+
print(line)
65+
}
66+
67+
let lines2 = bytes.lines // SOURCE
68+
69+
for try await line in lines2
70+
{
71+
print(line)
72+
}
73+
} catch {
74+
// ...
75+
}
76+
}

0 commit comments

Comments
 (0)