mirror of
https://github.com/keymanapp/keyman.git
synced 2026-09-26 01:27:42 +00:00
Merge pull request #3334 from keymanapp/fix/ios/engine/version-equality
fix(ios/engine): version equality
This commit is contained in:
commit
4d5b3e5447
2 changed files with 47 additions and 1 deletions
|
|
@ -124,7 +124,25 @@ public class Version: NSObject, Comparable {
|
|||
* (For example, 12.3.45 beta is considered equal to 12.3.45 stable.)
|
||||
*/
|
||||
public static func ==(lhs: Version, rhs: Version) -> Bool {
|
||||
return lhs.components == rhs.components
|
||||
var left = lhs.components
|
||||
while(left.last == 0 && left.count > 0) {
|
||||
left.removeLast()
|
||||
}
|
||||
|
||||
var right = rhs.components
|
||||
while(right.last == 0 && right.count > 0) {
|
||||
right.removeLast()
|
||||
}
|
||||
|
||||
return left.elementsEqual(right)
|
||||
}
|
||||
|
||||
public override func isEqual(_ object: Any?) -> Bool {
|
||||
if let object = object as? Version {
|
||||
return self == object
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// For nice logging output & debugger visibility.
|
||||
|
|
|
|||
|
|
@ -63,6 +63,34 @@ class VersionTests: XCTestCase {
|
|||
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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue