Skip to content

Commit 4cc7f42

Browse files
committed
refactor test code
1 parent 0866e9b commit 4cc7f42

File tree

1 file changed

+24
-30
lines changed

1 file changed

+24
-30
lines changed

Tests/DataCacheKitTests/DiskCacheTests.swift

Lines changed: 24 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,6 @@ func yield(until condition: @autoclosure () async -> Bool, message: @autoclosure
1616
throw E(errorDescription: message())
1717
}
1818

19-
private extension Staging {
20-
func changes(for key: Key) -> Change? {
21-
for stage in stages {
22-
if let change = stage.changes[key] {
23-
return change
24-
}
25-
}
26-
return nil
27-
}
28-
}
29-
3019
@MainActor
3120
final class DiskCacheTests: XCTestCase {
3221
private var tmpDir: URL!
@@ -56,39 +45,38 @@ final class DiskCacheTests: XCTestCase {
5645
let clock = ManualClock()
5746
let cache = DiskCache<String>(options: cacheOptions(), clock: clock, logger: .init(.default))
5847

59-
await cache.store(Data(), for: "empty").value
48+
cache.store(Data(), for: "empty")
49+
50+
try await yield(until: await cache.isFlushScheduled)
6051

6152
do {
6253
// load from staging (memory)
63-
let change = await cache.staging.changes(for: "empty")
64-
XCTAssertNotNil(change)
54+
let data = try await cache.value(for: "empty")
55+
XCTAssertNotNil(data)
6556

6657
let url = try XCTUnwrap(cache.url(for: "empty"))
6758
XCTAssertFalse(FileManager.default.fileExists(atPath: url.path))
68-
69-
let data = try await cache.value(for: "empty")
70-
XCTAssertNotNil(data)
7159
} catch {
7260
XCTFail("\(error)")
7361
}
7462

7563
clock.advance(by: .milliseconds(500))
64+
try? await SuspendingClock().sleep(until: .now.advanced(by: .microseconds(300)))
7665

7766
XCTAssertEqual(numberOfItems, 0)
7867

7968
clock.advance(by: .milliseconds(500))
80-
81-
try await yield(until: await cache.staging.changes(for: "empty") == nil)
69+
try? await SuspendingClock().sleep(until: .now.advanced(by: .microseconds(300)))
8270

8371
XCTAssertEqual(numberOfItems, 1)
8472

8573
do {
8674
// load from disk
87-
let url = try XCTUnwrap(cache.url(for: "empty"))
88-
XCTAssertTrue(FileManager.default.fileExists(atPath: url.path))
89-
9075
let data = try await cache.value(for: "empty")
9176
XCTAssertNotNil(data)
77+
78+
let url = try XCTUnwrap(cache.url(for: "empty"))
79+
XCTAssertTrue(FileManager.default.fileExists(atPath: url.path))
9280
} catch {
9381
XCTFail("\(error)")
9482
}
@@ -100,7 +88,9 @@ final class DiskCacheTests: XCTestCase {
10088
let cache = DiskCache<String>(options: cacheOptions(), clock: clock, logger: .init(.default))
10189

10290
cache.store(Data([1]), for: "item0")
103-
await cache.store(Data([1, 2]), for: "item1").value
91+
cache.store(Data([1, 2]), for: "item1")
92+
93+
try await yield(until: await cache.isFlushScheduled)
10494

10595
do {
10696
cache.logger.debug("check staging items")
@@ -110,7 +100,7 @@ final class DiskCacheTests: XCTestCase {
110100

111101
clock.advance(by: .milliseconds(1000))
112102

113-
try await yield(until: await cache.staging.stages.isEmpty)
103+
try? await cache.flushingTask?.value
114104

115105
XCTAssertEqual(numberOfItems, 2)
116106
}
@@ -123,7 +113,9 @@ final class DiskCacheTests: XCTestCase {
123113

124114
cache.store(Data([1]), for: "item0")
125115
cache.store(Data([1, 2]), for: "item1")
126-
await cache.remove(for: "item0").value
116+
cache.remove(for: "item0")
117+
118+
try await yield(until: await cache.isFlushScheduled)
127119

128120
do {
129121
let data0 = try await cache.value(for: "item0")
@@ -145,7 +137,7 @@ final class DiskCacheTests: XCTestCase {
145137

146138
clock.advance(by: .milliseconds(1000))
147139

148-
try await yield(until: await cache.staging.stages.isEmpty)
140+
try? await cache.flushingTask?.value
149141

150142
XCTAssertEqual(numberOfItems, 1)
151143
}
@@ -194,7 +186,7 @@ final class DiskCacheTests: XCTestCase {
194186
}
195187

196188
@available(macOS 13.0, iOS 16.0, watchOS 9.0, tvOS 16.0, *)
197-
func testSweep() async {
189+
func testSweep() async throws {
198190
let allocationUnit = 4096
199191

200192
var options = cacheOptions() as DiskCache<String>.Options
@@ -204,17 +196,19 @@ final class DiskCacheTests: XCTestCase {
204196

205197
cache.store(Data([1]), for: "item0")
206198
cache.store(Data([1, 2]), for: "item1")
207-
await cache.store(Data([1, 2, 3]), for: "item2").value
199+
cache.store(Data([1, 2, 3]), for: "item2")
200+
201+
try await yield(until: await cache.isFlushScheduled)
208202

209203
do {
210204
cache.logger.debug("check staging layers")
211205
clock.advance(by: .milliseconds(1000))
212206

207+
try? await cache.flushingTask?.value
208+
213209
let data2 = try? await cache.value(for: "item2")
214210
XCTAssertEqual(data2, Data([1, 2, 3]))
215211

216-
try? await cache.flushingTask?.value
217-
218212
XCTAssertEqual(numberOfItems, 3)
219213
}
220214

0 commit comments

Comments
 (0)