@@ -23,9 +23,9 @@ class Semantic_VersioningTests: XCTestCase {
2323
2424
2525 func testDescription( ) {
26- XCTAssertEqual ( SemVer ( 01 , 2 , 3 , " RC.4 " , 567 ) . description, " 1.2.3-RC.4+567 " )
27- XCTAssertEqual ( SemVer ( 01 , 2 , 3 , [ " RC " , " 4 " ] , 567 ) . description, " 1.2.3-RC.4+567 " )
28- XCTAssertEqual ( SemVer ( 01 , 2 , 3 , [ " RC " , " 4 " ] , [ 567 ] ) . description, " 1.2.3-RC.4+567 " )
26+ XCTAssertEqual ( SemVer ( 01 , 2 , 3 , preRelease : " RC.4 " , build : 567 ) . description, " 1.2.3-RC.4+567 " )
27+ XCTAssertEqual ( SemVer ( 01 , 2 , 3 , preRelease : [ " RC " , " 4 " ] , build : 567 ) . description, " 1.2.3-RC.4+567 " )
28+ XCTAssertEqual ( SemVer ( 01 , 2 , 3 , preRelease : [ " RC " , " 4 " ] , build : [ 567 ] ) . description, " 1.2.3-RC.4+567 " )
2929 XCTAssertEqual ( SemVer ( " 1.2.3-RC.4+567 " ) ? . description, " 1.2.3-RC.4+567 " )
3030 }
3131
@@ -38,6 +38,7 @@ class Semantic_VersioningTests: XCTestCase {
3838 XCTAssertEqual ( SemVer ( " 1.2.3+567.8 " ) , SemVer ( major: 1 , minor: 2 , patch: 3 , build: SemanticVersionBuild ( identifiers: [ 567 ] ) ) )
3939 XCTAssertEqual ( SemVer ( " 1.2-RC.4+567.8 " ) , SemVer ( major: 1 , minor: 2 , preRelease: SemanticVersionPreRelease ( identifiers: [ " RC " , " 4 " ] ) , build: SemanticVersionBuild ( identifiers: [ " 567 " , " 8 " ] ) ) )
4040 XCTAssertEqual ( SemVer ( " 1.2.3-RC.4+567.8 " ) , SemVer ( major: 1 , minor: 2 , patch: 3 , preRelease: SemanticVersionPreRelease ( identifiers: [ " RC " , " 4 " ] ) , build: SemanticVersionBuild ( identifiers: [ " 567 " , " 8 " ] ) ) )
41+ XCTAssertEqual ( SemVer ( " 1.2.3-RC.4+567.8 " ) , SemVer ( 1 , 2 , 3 , preRelease: [ " RC " , 4 ] , build: [ 567 , 8 ] ) )
4142 }
4243
4344
@@ -56,4 +57,34 @@ class Semantic_VersioningTests: XCTestCase {
5657 XCTAssertLessThan ( SemVer ( " 1.0.0-beta.11 " ) !, SemVer ( " 1.0.0-rc.1 " ) !)
5758 XCTAssertLessThan ( SemVer ( " 1.0.0-rc.1 " ) !, SemVer ( " 1.0.0 " ) !)
5859 }
60+
61+
62+ func testEquivalence( ) {
63+ XCTAssertEqual ( SemVer ( " 1.0 " ) , SemVer ( major: 1 , minor: 0 , patch: 0 ) )
64+ XCTAssertEqual ( SemVer ( " 1.0 " ) , SemVer ( " 1.0.0 " ) )
65+ // According to https://semver.org/spec/v2.0.0.html#spec-item-11, "Build metadata does not figure into precedence"
66+ XCTAssertEqual ( SemVer ( " 1.0+543 " ) , SemVer ( " 1.0+345 " ) )
67+ XCTAssertEqual ( SemVer ( major: 2 , minor: 0 , preRelease: [ " RC " , 1 ] ) , SemVer ( 2 , 0 , 0 , preRelease: [ " RC " , 1 ] ) )
68+ XCTAssertEqual ( SemVer ( 2 , 0 , 0 , preRelease: [ " RC " , 1 ] ) , SemVer ( " 2.0-RC.1 " ) )
69+ XCTAssertEqual ( SemVer ( " 2.0-RC.1 " ) , SemVer ( " 2.0.0-RC.1 " ) )
70+ }
71+
72+
73+ func testInvalid( ) {
74+ XCTAssertNil ( SemVer ( " Obviously Bad " ) )
75+ XCTAssertNil ( SemVer ( " 1 " ) )
76+ XCTAssertNil ( SemVer ( " -2.0 " ) )
77+ XCTAssertNil ( SemVer ( " 2.0-β " ) )
78+ XCTAssertNil ( SemVer ( " 2.0-beta_1 " ) )
79+ XCTAssertNil ( SemVer ( " 1.-2 " ) )
80+ XCTAssertNil ( SemVer ( " 1.2.-3 " ) )
81+ XCTAssertNil ( SemVer ( " 1.2.3.4 " ) )
82+ }
83+
84+
85+ func testBasicFixes( ) {
86+ XCTAssertEqual ( SemVer ( 1 , 2 , 3 ) , SemVer ( " 01.2.3 " ) )
87+ XCTAssertEqual ( SemVer ( 1 , 2 , 3 ) , SemVer ( " 1.02.3 " ) )
88+ XCTAssertEqual ( SemVer ( 1 , 2 , 3 ) , SemVer ( " 1.2.03 " ) )
89+ }
5990}
0 commit comments