|
|
|
// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
|
|
|
|
import Foundation
|
|
|
|
|
|
|
|
import Quick
|
|
|
|
import Nimble
|
|
|
|
|
|
|
|
@testable import SessionUtilitiesKit
|
|
|
|
|
|
|
|
class VersionSpec: QuickSpec {
|
|
|
|
// MARK: - Spec
|
|
|
|
|
|
|
|
override func spec() {
|
|
|
|
describe("a Version") {
|
|
|
|
it("can be created from a string") {
|
|
|
|
let version: Version = Version.from("1.20.3")
|
|
|
|
|
|
|
|
expect(version.major).to(equal(1))
|
|
|
|
expect(version.minor).to(equal(20))
|
|
|
|
expect(version.patch).to(equal(3))
|
|
|
|
}
|
|
|
|
|
|
|
|
it("correctly exposes a string value") {
|
|
|
|
let version: Version = Version(major: 1, minor: 20, patch: 3)
|
|
|
|
|
|
|
|
expect(version.stringValue).to(equal("1.20.3"))
|
|
|
|
}
|
|
|
|
|
|
|
|
context("when checking equality") {
|
|
|
|
it("returns true if the values match") {
|
|
|
|
let version1: Version = Version.from("1.0.0")
|
|
|
|
let version2: Version = Version.from("1.0.0")
|
|
|
|
|
|
|
|
expect(version1 == version2)
|
|
|
|
.to(beTrue())
|
|
|
|
}
|
|
|
|
|
|
|
|
it("returns false if the values do not match") {
|
|
|
|
let version1: Version = Version.from("1.0.0")
|
|
|
|
let version2: Version = Version.from("1.0.1")
|
|
|
|
|
|
|
|
expect(version1 == version2)
|
|
|
|
.to(beFalse())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
context("when comparing versions") {
|
|
|
|
it("returns correctly for a simple major difference") {
|
|
|
|
let version1: Version = Version.from("1.0.0")
|
|
|
|
let version2: Version = Version.from("2.0.0")
|
|
|
|
|
|
|
|
expect(version1 < version2).to(beTrue())
|
|
|
|
expect(version2 > version1).to(beTrue())
|
|
|
|
}
|
|
|
|
|
|
|
|
it("returns correctly for a complex major difference") {
|
|
|
|
let version1a: Version = Version.from("2.90.90")
|
|
|
|
let version2a: Version = Version.from("10.0.0")
|
|
|
|
let version1b: Version = Version.from("0.7.2")
|
|
|
|
let version2b: Version = Version.from("5.0.2")
|
|
|
|
|
|
|
|
expect(version1a < version2a).to(beTrue())
|
|
|
|
expect(version2a > version1a).to(beTrue())
|
|
|
|
expect(version1b < version2b).to(beTrue())
|
|
|
|
expect(version2b > version1b).to(beTrue())
|
|
|
|
}
|
|
|
|
|
|
|
|
it("returns correctly for a simple minor difference") {
|
|
|
|
let version1: Version = Version.from("1.0.0")
|
|
|
|
let version2: Version = Version.from("1.1.0")
|
|
|
|
|
|
|
|
expect(version1 < version2).to(beTrue())
|
|
|
|
expect(version2 > version1).to(beTrue())
|
|
|
|
}
|
|
|
|
|
|
|
|
it("returns correctly for a complex minor difference") {
|
|
|
|
let version1a: Version = Version.from("90.2.90")
|
|
|
|
let version2a: Version = Version.from("90.10.0")
|
|
|
|
let version1b: Version = Version.from("2.0.7")
|
|
|
|
let version2b: Version = Version.from("2.5.0")
|
|
|
|
|
|
|
|
expect(version1a < version2a).to(beTrue())
|
|
|
|
expect(version2a > version1a).to(beTrue())
|
|
|
|
expect(version1b < version2b).to(beTrue())
|
|
|
|
expect(version2b > version1b).to(beTrue())
|
|
|
|
}
|
|
|
|
|
|
|
|
it("returns correctly for a simple patch difference") {
|
|
|
|
let version1: Version = Version.from("1.0.0")
|
|
|
|
let version2: Version = Version.from("1.0.1")
|
|
|
|
|
|
|
|
expect(version1 < version2).to(beTrue())
|
|
|
|
expect(version2 > version1).to(beTrue())
|
|
|
|
}
|
|
|
|
|
|
|
|
it("returns correctly for a complex patch difference") {
|
|
|
|
let version1a: Version = Version.from("90.90.2")
|
|
|
|
let version2a: Version = Version.from("90.90.10")
|
|
|
|
let version1b: Version = Version.from("2.5.0")
|
|
|
|
let version2b: Version = Version.from("2.5.7")
|
|
|
|
|
|
|
|
expect(version1a < version2a).to(beTrue())
|
|
|
|
expect(version2a > version1a).to(beTrue())
|
|
|
|
expect(version1b < version2b).to(beTrue())
|
|
|
|
expect(version2b > version1b).to(beTrue())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|