mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-06 00:45:32 +00:00
108 lines
3.4 KiB
Swift
108 lines
3.4 KiB
Swift
//
|
|
// VersionTests.swift
|
|
// KeymanEngineTests
|
|
//
|
|
// Created by Joshua Horton on 2020-02-13.
|
|
// Copyright © 2020 SIL International. All rights reserved.
|
|
//
|
|
|
|
@testable import KeymanEngine
|
|
import XCTest
|
|
|
|
class VersionTests: XCTestCase {
|
|
|
|
func testStringConstruction() {
|
|
let simpleEarly = Version("11.0")
|
|
|
|
XCTAssertNotNil(simpleEarly, "Could not construct Version instance from a simple major-minor version string")
|
|
|
|
let complexEarly = Version("11.0.65.17.8")
|
|
|
|
XCTAssertNotNil(complexEarly, "Could not process the version string '11.0.65.17.8'")
|
|
|
|
let broken = Version("apple.orange")
|
|
|
|
XCTAssertNil(broken, "Erroneously constructed Version instance from character-text strings")
|
|
|
|
let tagged = Version("14.0.18-alpha-local")
|
|
|
|
XCTAssertNotNil(tagged, "Could not construct Verison instance from a text-tagged version string")
|
|
XCTAssertTrue(tagged! == Version("14.0.18")!, "Did not produce expected version from text-tagged version string")
|
|
XCTAssertEqual(tagged!.tier, .alpha, "Did not properly store a tagged version's tier information")
|
|
}
|
|
|
|
func testVersionComparison() {
|
|
// Simple unit testing for version-comparison logic.
|
|
let simpleEarly = Version("11.0")!
|
|
let simpleLate = Version("13.0")!
|
|
|
|
XCTAssertLessThan(simpleEarly, simpleLate)
|
|
|
|
let complexEarly1 = Version("11.0.65")!
|
|
let complexEarly2 = Version("11.1.1")!
|
|
|
|
XCTAssertLessThan(complexEarly1, complexEarly2)
|
|
|
|
let complexLate1 = Version("13.0.1")!
|
|
|
|
XCTAssertLessThan(complexEarly2, complexLate1)
|
|
XCTAssertLessThan(simpleLate, complexLate1)
|
|
|
|
let simpleLater = Version("13.1")!
|
|
|
|
XCTAssertLessThan(complexLate1, simpleLater)
|
|
}
|
|
|
|
func testMajorMinor() {
|
|
let simple = Version("12")!
|
|
|
|
XCTAssertTrue(simple.majorMinor == Version("12.0")!, "Did not append .minor to major-only version")
|
|
|
|
let complex = Version("11.0.65.17.8")!
|
|
|
|
XCTAssertTrue(complex.majorMinor == Version("11.0")!, "Did not properly trim off excess version components")
|
|
}
|
|
|
|
func testEquals() {
|
|
let simple = Version("12.0")!
|
|
let other = Version("12.0")!
|
|
|
|
XCTAssertTrue(simple == other)
|
|
|
|
let longer = Version("12.0.0.0")!
|
|
|
|
XCTAssertTrue(simple == longer)
|
|
|
|
let unequal_1 = Version("12.0.0.1")!
|
|
|
|
XCTAssertFalse(simple == unequal_1)
|
|
XCTAssertFalse(longer == unequal_1)
|
|
|
|
let diffMajor = Version("13.0")!
|
|
|
|
XCTAssertFalse(simple == diffMajor)
|
|
|
|
// Tests in "optional" mode. Was trickier than it would appear!
|
|
XCTAssertEqual(Version("12.0"), Version("12.0"))
|
|
|
|
// Some tests against major-version zero to ensure the edge case is covered.
|
|
XCTAssertEqual(Version("0"), Version("0"))
|
|
XCTAssertEqual(Version("0"), Version("0.0"))
|
|
XCTAssertNotEqual(Version("0"), Version("0.0.1"))
|
|
}
|
|
|
|
func testValidCurrentEngineVersion() {
|
|
let version = Version.current
|
|
|
|
// The key is that it always returns a version value; this is the most likely 'big break' we may see.
|
|
XCTAssertNotNil(version, "Could not construct a valid version from value in bundle's plist file")
|
|
|
|
// Now that we update KeymanEngine's version too, we can rely on its versioning.
|
|
// This was implemented in very early 14.0 development.
|
|
//
|
|
// So long as we don't change the actual _project's_ version, this test proves that Versions
|
|
// are being updated correctly by the build process.
|
|
let minimumEngineVersion = Version("14.0")!
|
|
XCTAssertGreaterThan(version, minimumEngineVersion, "Build process did not properly update Engine version")
|
|
}
|
|
}
|