Files
orca/native/computer-use-macos/Tests/OrcaComputerUseMacOSTests/StableElementIndexesTests.swift
T

37 lines
1.3 KiB
Swift

import OrcaComputerUseMacOSCore
import XCTest
final class StableElementIndexesTests: XCTestCase {
private typealias Previous = (key: String, index: Int, signature: String)
private func assign(_ current: [(String, String)], previous: [Previous] = [], nextFresh: Int = 0) -> (indexes: [Int], nextFreshIndex: Int) {
StableElementIndexes.assign(
current: current.map { $0.0 },
previous: previous.map { (key: $0.key, index: $0.index) },
previousNextFreshIndex: nextFresh
)
}
func testAnElementInsertedEarlyLeavesEveryOtherIndexAlone() {
let previous: [Previous] = [("window", 0, "AXWindow"), ("search", 1, "AXTextField"), ("row", 2, "AXRow")]
let result = assign(
[("window", "AXWindow"), ("clear", "AXButton"), ("search", "AXTextField"), ("row", "AXRow")],
previous: previous,
nextFresh: 3
)
XCTAssertEqual(result.indexes, [0, 3, 1, 2])
XCTAssertEqual(result.nextFreshIndex, 4)
}
func testARemovedIndexIsNeverHandedToADifferentNewElement() {
let previous: [Previous] = [("window", 0, "AXWindow"), ("search", 1, "AXTextField")]
let result = assign([("window", "AXWindow"), ("new row", "AXRow")], previous: previous, nextFresh: 7)
XCTAssertEqual(result.indexes, [0, 7])
}
}