97 lines
2.4 KiB
Swift
97 lines
2.4 KiB
Swift
//
|
|
// LevenshteinTransformationsTests.swift
|
|
// LevenshteinTransformations
|
|
//
|
|
// Created by david-swift on 01.01.24.
|
|
//
|
|
|
|
// swiftlint:disable no_magic_numbers
|
|
|
|
import LevenshteinTransformations
|
|
|
|
/// Tests for the LevenshteinTransformations library.
|
|
@main
|
|
enum LevenshteinTransformationsTests {
|
|
|
|
/// An example type conforming to `Identifiable`.
|
|
struct TestType: Identifiable, Equatable {
|
|
|
|
/// The identifier.
|
|
var id: Int
|
|
|
|
}
|
|
|
|
/// Test the `transform` function on an equatable array.
|
|
static func testEquatable() {
|
|
let source = [1, 2, 5, 6]
|
|
let target = [0, 1, 5, 6, 10]
|
|
|
|
var modified = source
|
|
|
|
source.transform(
|
|
to: target,
|
|
functions: .init { index, element in
|
|
modified[index] = element
|
|
} delete: { index in
|
|
modified.remove(at: index)
|
|
} insert: { index, element in
|
|
modified.insert(element, at: index)
|
|
}
|
|
)
|
|
|
|
print(modified == target)
|
|
}
|
|
|
|
/// Test the `transform` function on an identifiable array.
|
|
static func testIdentifiable() {
|
|
let source = [1, 2, 5, 6].map { TestType(id: $0) }
|
|
let target = [0, 1, 5, 6, 10].map { TestType(id: $0) }
|
|
|
|
var modified = source
|
|
|
|
source.identifiableTransform(
|
|
to: target,
|
|
functions: .init { index, element in
|
|
modified[index] = element
|
|
} delete: { index in
|
|
modified.remove(at: index)
|
|
} insert: { index, element in
|
|
modified.insert(element, at: index)
|
|
}
|
|
)
|
|
|
|
print(modified == target)
|
|
}
|
|
|
|
/// Test the `transform` function on a string.
|
|
static func testString() {
|
|
let source = "Hello World"
|
|
let target = "Servus Welt"
|
|
|
|
var modified = Array(source)
|
|
|
|
source.transform(
|
|
to: target,
|
|
functions: .init { index, element in
|
|
modified[index] = element
|
|
} delete: { index in
|
|
modified.remove(at: index)
|
|
} insert: { index, element in
|
|
modified.insert(element, at: index)
|
|
}
|
|
)
|
|
|
|
print(String(modified) == target)
|
|
}
|
|
|
|
/// Run the tests.
|
|
static func main() {
|
|
testEquatable()
|
|
testIdentifiable()
|
|
testString()
|
|
}
|
|
|
|
}
|
|
|
|
// swiftlint:enable no_magic_numbers
|