2bc8c1b87d
Adapt typing/voice surfaces for iPad width and height, add the system globe key and last-input editing flow, harden host-only Rime deployment, and remove clipboard voice commands. Bump build to 61.
83 lines
2.9 KiB
Swift
83 lines
2.9 KiB
Swift
import XCTest
|
|
@testable import OSGKeyboardShared
|
|
|
|
final class EditTransactionStoreTests: XCTestCase {
|
|
func testHistoryMutationOutboxIsOrderedAndIdempotent() throws {
|
|
let suite = "EditTransactionStoreTests.\(UUID().uuidString)"
|
|
let defaults = try XCTUnwrap(UserDefaults(suiteName: suite))
|
|
defer { defaults.removePersistentDomain(forName: suite) }
|
|
let entryID = UUID()
|
|
let later = HistoryMutation(
|
|
sequence: 2,
|
|
action: .update,
|
|
entryID: entryID,
|
|
text: "later"
|
|
)
|
|
let earlier = HistoryMutation(
|
|
sequence: 1,
|
|
action: .update,
|
|
entryID: entryID,
|
|
text: "earlier"
|
|
)
|
|
|
|
HistoryMutationOutbox.enqueue(later, defaults: defaults)
|
|
HistoryMutationOutbox.enqueue(earlier, defaults: defaults)
|
|
HistoryMutationOutbox.enqueue(earlier, defaults: defaults)
|
|
XCTAssertEqual(
|
|
HistoryMutationOutbox.pending(defaults: defaults).map(\.id),
|
|
[earlier.id, later.id]
|
|
)
|
|
|
|
HistoryMutationOutbox.acknowledge(earlier.id, defaults: defaults)
|
|
XCTAssertEqual(
|
|
HistoryMutationOutbox.pending(defaults: defaults).map(\.id),
|
|
[later.id]
|
|
)
|
|
}
|
|
|
|
func testPendingTransactionRoundTrip() throws {
|
|
let suite = "PendingTextEditTransactionTests.\(UUID().uuidString)"
|
|
let defaults = try XCTUnwrap(UserDefaults(suiteName: suite))
|
|
defer { defaults.removePersistentDomain(forName: suite) }
|
|
let mutation = HistoryMutation(
|
|
action: .update,
|
|
entryID: UUID(),
|
|
expectedRevision: 3,
|
|
text: "after"
|
|
)
|
|
let transaction = PendingTextEditTransaction(
|
|
deliveryMode: .replace,
|
|
beforeText: "before",
|
|
afterText: "after",
|
|
expectedFieldFingerprint: "field",
|
|
historyMutation: mutation
|
|
)
|
|
PendingTextEditTransactionStore.save(transaction, defaults: defaults)
|
|
XCTAssertEqual(
|
|
PendingTextEditTransactionStore.load(defaults: defaults),
|
|
transaction
|
|
)
|
|
PendingTextEditTransactionStore.clear(defaults: defaults)
|
|
XCTAssertNil(PendingTextEditTransactionStore.load(defaults: defaults))
|
|
}
|
|
|
|
func testHistoryMutationReceiptRoundTrip() throws {
|
|
let suite = "HistoryMutationReceiptTests.\(UUID().uuidString)"
|
|
let defaults = try XCTUnwrap(UserDefaults(suiteName: suite))
|
|
defer { defaults.removePersistentDomain(forName: suite) }
|
|
let receipt = HistoryMutationReceipt(
|
|
mutationID: UUID(),
|
|
entryID: UUID(),
|
|
revision: 4
|
|
)
|
|
HistoryMutationReceiptStore.save(receipt, defaults: defaults)
|
|
XCTAssertEqual(
|
|
HistoryMutationReceiptStore.receipt(
|
|
for: receipt.mutationID,
|
|
defaults: defaults
|
|
),
|
|
receipt
|
|
)
|
|
}
|
|
}
|