Skip to content

Commit a559014

Browse files
[NFC] add additional tests for initialising Version
1 parent bdcb2a5 commit a559014

File tree

1 file changed

+106
-2
lines changed

1 file changed

+106
-2
lines changed

Tests/TSCUtilityTests/VersionTests.swift

Lines changed: 106 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,37 @@ import XCTest
1313

1414
class VersionTests: XCTestCase {
1515

16+
func testVersionInitialization() {
17+
let v0 = Version(0, 0, 0, prereleaseIdentifiers: [], buildMetadataIdentifiers: [])
18+
XCTAssertEqual(v0.minor, 0)
19+
XCTAssertEqual(v0.minor, 0)
20+
XCTAssertEqual(v0.patch, 0)
21+
XCTAssertEqual(v0.prereleaseIdentifiers, [])
22+
XCTAssertEqual(v0.buildMetadataIdentifiers, [])
23+
24+
let v1 = Version(1, 1, 2, prereleaseIdentifiers: ["3", "5"], buildMetadataIdentifiers: ["8", "13"])
25+
XCTAssertEqual(v1.minor, 1)
26+
XCTAssertEqual(v1.minor, 1)
27+
XCTAssertEqual(v1.patch, 2)
28+
XCTAssertEqual(v1.prereleaseIdentifiers, ["3", "5"])
29+
XCTAssertEqual(v1.buildMetadataIdentifiers, ["8", "13"])
30+
31+
XCTAssertEqual(
32+
Version(3, 5, 8),
33+
Version(3, 5, 8, prereleaseIdentifiers: [], buildMetadataIdentifiers: [])
34+
)
35+
36+
XCTAssertEqual(
37+
Version(13, 21, 34, prereleaseIdentifiers: ["55"]),
38+
Version(13, 21, 34, prereleaseIdentifiers: ["55"], buildMetadataIdentifiers: [])
39+
)
40+
41+
XCTAssertEqual(
42+
Version(89, 144, 233, buildMetadataIdentifiers: ["377"]),
43+
Version(89, 144, 233, prereleaseIdentifiers: [], buildMetadataIdentifiers: ["377"])
44+
)
45+
}
46+
1647
func testVersionComparison() {
1748

1849
// MARK: version core vs. version core
@@ -248,8 +279,58 @@ class VersionTests: XCTestCase {
248279
XCTAssertNotEqual(Set([Version(1,2,3)]), Set([Version(1,2,3, prereleaseIdentifiers: ["alpha"])]))
249280
XCTAssertEqual(Set([Version(1,2,3)]), Set([Version(1,2,3, buildMetadataIdentifiers: ["1011"])]))
250281
}
251-
252-
func testDescription() {
282+
283+
func testCustomConversionFromVersionToString() {
284+
285+
// MARK: Version.description
286+
287+
XCTAssertEqual(Version(0, 0, 0).description, "0.0.0" as String)
288+
XCTAssertEqual(Version(1, 2, 3).description, "1.2.3" as String)
289+
XCTAssertEqual(Version(1, 2, 3, prereleaseIdentifiers: [""]).description, "1.2.3-" as String)
290+
XCTAssertEqual(Version(1, 2, 3, prereleaseIdentifiers: ["", ""]).description, "1.2.3-." as String)
291+
XCTAssertEqual(Version(1, 2, 3, prereleaseIdentifiers: ["beta1"]).description, "1.2.3-beta1" as String)
292+
XCTAssertEqual(Version(1, 2, 3, prereleaseIdentifiers: ["beta", "1"]).description, "1.2.3-beta.1" as String)
293+
XCTAssertEqual(Version(1, 2, 3, prereleaseIdentifiers: ["beta", "", "1"]).description, "1.2.3-beta..1" as String)
294+
XCTAssertEqual(Version(1, 2, 3, prereleaseIdentifiers: ["be-ta", "", "1"]).description, "1.2.3-be-ta..1" as String)
295+
XCTAssertEqual(Version(1, 2, 3, buildMetadataIdentifiers: [""]).description, "1.2.3+" as String)
296+
XCTAssertEqual(Version(1, 2, 3, buildMetadataIdentifiers: ["", ""]).description, "1.2.3+." as String)
297+
XCTAssertEqual(Version(1, 2, 3, buildMetadataIdentifiers: ["beta1"]).description, "1.2.3+beta1" as String)
298+
XCTAssertEqual(Version(1, 2, 3, buildMetadataIdentifiers: ["beta", "1"]).description, "1.2.3+beta.1" as String)
299+
XCTAssertEqual(Version(1, 2, 3, buildMetadataIdentifiers: ["beta", "", "1"]).description, "1.2.3+beta..1" as String)
300+
XCTAssertEqual(Version(1, 2, 3, buildMetadataIdentifiers: ["be-ta", "", "1"]).description, "1.2.3+be-ta..1" as String)
301+
XCTAssertEqual(Version(1, 2, 3, prereleaseIdentifiers: [""], buildMetadataIdentifiers: [""]).description, "1.2.3-+" as String)
302+
XCTAssertEqual(Version(1, 2, 3, prereleaseIdentifiers: ["", ""], buildMetadataIdentifiers: ["", "-", ""]).description, "1.2.3-.+.-." as String)
303+
XCTAssertEqual(Version(1, 2, 3, prereleaseIdentifiers: ["beta1"], buildMetadataIdentifiers: ["alpha1"]).description, "1.2.3-beta1+alpha1" as String)
304+
XCTAssertEqual(Version(1, 2, 3, prereleaseIdentifiers: ["beta", "1"], buildMetadataIdentifiers: ["alpha", "1"]).description, "1.2.3-beta.1+alpha.1" as String)
305+
XCTAssertEqual(Version(1, 2, 3, prereleaseIdentifiers: ["beta", "", "1"], buildMetadataIdentifiers: ["alpha", "", "1"]).description, "1.2.3-beta..1+alpha..1" as String)
306+
XCTAssertEqual(Version(1, 2, 3, prereleaseIdentifiers: ["be-ta", "", "1"], buildMetadataIdentifiers: ["al-pha", "", "1"]).description, "1.2.3-be-ta..1+al-pha..1" as String)
307+
308+
// MARK: String interpolation
309+
310+
XCTAssertEqual("\(Version(0, 0, 0))", "0.0.0" as String)
311+
XCTAssertEqual("\(Version(1, 2, 3))", "1.2.3" as String)
312+
XCTAssertEqual("\(Version(1, 2, 3, prereleaseIdentifiers: [""]))", "1.2.3-" as String)
313+
XCTAssertEqual("\(Version(1, 2, 3, prereleaseIdentifiers: ["", ""]))", "1.2.3-." as String)
314+
XCTAssertEqual("\(Version(1, 2, 3, prereleaseIdentifiers: ["beta1"]))", "1.2.3-beta1" as String)
315+
XCTAssertEqual("\(Version(1, 2, 3, prereleaseIdentifiers: ["beta", "1"]))", "1.2.3-beta.1" as String)
316+
XCTAssertEqual("\(Version(1, 2, 3, prereleaseIdentifiers: ["beta", "", "1"]))", "1.2.3-beta..1" as String)
317+
XCTAssertEqual("\(Version(1, 2, 3, prereleaseIdentifiers: ["be-ta", "", "1"]))", "1.2.3-be-ta..1" as String)
318+
XCTAssertEqual("\(Version(1, 2, 3, buildMetadataIdentifiers: [""]))", "1.2.3+" as String)
319+
XCTAssertEqual("\(Version(1, 2, 3, buildMetadataIdentifiers: ["", ""]))", "1.2.3+." as String)
320+
XCTAssertEqual("\(Version(1, 2, 3, buildMetadataIdentifiers: ["beta1"]))", "1.2.3+beta1" as String)
321+
XCTAssertEqual("\(Version(1, 2, 3, buildMetadataIdentifiers: ["beta", "1"]))", "1.2.3+beta.1" as String)
322+
XCTAssertEqual("\(Version(1, 2, 3, buildMetadataIdentifiers: ["beta", "", "1"]))", "1.2.3+beta..1" as String)
323+
XCTAssertEqual("\(Version(1, 2, 3, buildMetadataIdentifiers: ["be-ta", "", "1"]))", "1.2.3+be-ta..1" as String)
324+
XCTAssertEqual("\(Version(1, 2, 3, prereleaseIdentifiers: [""], buildMetadataIdentifiers: [""]))", "1.2.3-+" as String)
325+
XCTAssertEqual("\(Version(1, 2, 3, prereleaseIdentifiers: ["", ""], buildMetadataIdentifiers: ["", "-", ""]))", "1.2.3-.+.-." as String)
326+
XCTAssertEqual("\(Version(1, 2, 3, prereleaseIdentifiers: ["beta1"], buildMetadataIdentifiers: ["alpha1"]))", "1.2.3-beta1+alpha1" as String)
327+
XCTAssertEqual("\(Version(1, 2, 3, prereleaseIdentifiers: ["beta", "1"], buildMetadataIdentifiers: ["alpha", "1"]))", "1.2.3-beta.1+alpha.1" as String)
328+
XCTAssertEqual("\(Version(1, 2, 3, prereleaseIdentifiers: ["beta", "", "1"], buildMetadataIdentifiers: ["alpha", "", "1"]))", "1.2.3-beta..1+alpha..1" as String)
329+
XCTAssertEqual("\(Version(1, 2, 3, prereleaseIdentifiers: ["be-ta", "", "1"], buildMetadataIdentifiers: ["al-pha", "", "1"]))", "1.2.3-be-ta..1+al-pha..1" as String)
330+
331+
}
332+
333+
func testAdditionalCustomConversionFromVersionToString() {
253334
let v: Version = "123.234.345-alpha.beta+sha1.1011"
254335
XCTAssertEqual(v.description, "123.234.345-alpha.beta+sha1.1011")
255336
XCTAssertEqual(v.major, 123)
@@ -306,6 +387,29 @@ class VersionTests: XCTestCase {
306387

307388
}
308389

390+
func testExpressingVersionByStringLiteral() {
391+
392+
// MARK: Well-formed version core
393+
394+
XCTAssertEqual("0.0.0" as Version, Version(0, 0, 0))
395+
XCTAssertEqual("1.1.2" as Version, Version(1, 1, 2))
396+
397+
// MARK: Well-formed version core, well-formed pre-release identifiers
398+
399+
XCTAssertEqual("0.0.0-pre-alpha" as Version, Version(0, 0, 0, prereleaseIdentifiers: ["pre-alpha"]))
400+
XCTAssertEqual("55.89.144-beta.1" as Version, Version(55, 89, 144, prereleaseIdentifiers: ["beta", "1"]))
401+
XCTAssertEqual("89.144.233-a.whole..lot.of.pre-release.identifiers" as Version, Version(89, 144, 233, prereleaseIdentifiers: ["a", "whole", "", "lot", "of", "pre-release", "identifiers"]))
402+
XCTAssertEqual("144.233.377-" as Version, Version(144, 233, 377, prereleaseIdentifiers: [""]))
403+
404+
// MARK: Well-formed version core, well-formed build metadata identifiers
405+
406+
XCTAssertEqual("0.0.0+some-metadata" as Version, Version(0, 0, 0, buildMetadataIdentifiers: ["some-metadata"]))
407+
XCTAssertEqual("4181.6765.10946+more.meta..more.data" as Version, Version(4181, 6765, 10946, buildMetadataIdentifiers: ["more", "meta", "", "more", "data"]))
408+
XCTAssertEqual("6765.10946.17711+-a-very--long---build-----metadata--------identifier-------------with---------------------many----------------------------------hyphens-------------------------------------------------------" as Version, Version(6765, 10946, 17711, buildMetadataIdentifiers: ["-a-very--long---build-----metadata--------identifier-------------with---------------------many----------------------------------hyphens-------------------------------------------------------"]))
409+
XCTAssertEqual("10946.17711.28657+" as Version, Version(10946, 17711, 28657, buildMetadataIdentifiers: [""]))
410+
411+
}
412+
309413
func testAdditionalInitializationFromString() {
310414
let badStrings = [
311415
"", "1", "1.2", "1.2.3.4", "1.2.3.4.5",

0 commit comments

Comments
 (0)