Merge pull request #3334 from keymanapp/fix/ios/engine/version-equality

fix(ios/engine): version equality
This commit is contained in:
Joshua Horton 2020-07-13 09:11:10 +07:00 • committed by GitHub
commit 4d5b3e5447
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 47 additions and 1 deletions

View file

@ -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.

View file

@ -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