From 473a302dad8de4291a6270ddcb7b1e3a01218b3f Mon Sep 17 00:00:00 2001 From: ened Date: Fri, 9 Jun 2023 14:16:33 +0900 Subject: [PATCH] Validate when result of Item is un-sorted --- KissMeme/KissDB.swift | 2 ++ KissMemeTests/KissMemeTests.swift | 17 +++++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/KissMeme/KissDB.swift b/KissMeme/KissDB.swift index 951468b..9075e78 100644 --- a/KissMeme/KissDB.swift +++ b/KissMeme/KissDB.swift @@ -126,6 +126,8 @@ public class KissDB: NSObject { } } + /// The result of `Item` is not sorted. + /// public func select(into: ((Item)->Bool)?) throws { let obj = ItemCallbackObject(itemCallback: into) let userPtr = Unmanaged.passUnretained(obj).toOpaque() diff --git a/KissMemeTests/KissMemeTests.swift b/KissMemeTests/KissMemeTests.swift index 7fd1f88..f1fbcb2 100644 --- a/KissMemeTests/KissMemeTests.swift +++ b/KissMemeTests/KissMemeTests.swift @@ -62,14 +62,23 @@ final class KissMemeTests: XCTestCase { try db.begin() print("DB count: \(db.count)") - var index = 0 + var result = [String: String]() try db.select(into: { item in - XCTAssertTrue(item.key == "hello\(index)") - XCTAssertTrue(item.value == "world\(index)") - index += 1 + result[item.key] = item.value return true }) + for i in 0 ..< maxItems { + guard let value = result["hello\(i)"] else { + XCTAssertThrowsError("key not exist for hello\(i)") + continue + } + guard value == "world\(i)" else { + XCTAssertThrowsError("value not matched for hello\(i) \(value)") + continue + } + } + try db.rollback() let endTime = KissDB.appTime print("DB count: \(db.count) selectAll elapsed: \(endTime - startTime)")