return function() local Version = require(script.Parent.Version) it("should compare equal versions", function() expect(Version.compare({ 1, 2, 3 }, { 1, 2, 3 })).to.equal(0) expect(Version.compare({ 1, 2, 3, "rc1" }, { 1, 2, 3, "rc1" })).to.equal(0) expect(Version.compare({ 0, 4, 0 }, { 0, 4 })).to.equal(0) expect(Version.compare({ 0, 0, 123 }, { 0, 0, 123 })).to.equal(0) expect(Version.compare({ 26 }, { 26 })).to.equal(0) expect(Version.compare({ 26, 42 }, { 26, 42 })).to.equal(0) expect(Version.compare({ 1, 0, 0 }, { 1 })).to.equal(0) end) it("should compare newer, older versions", function() expect(Version.compare({ 1 }, { 0 })).to.equal(1) expect(Version.compare({ 1, 1 }, { 1, 0 })).to.equal(1) expect(Version.compare({ 1, 2, 3 }, { 1, 2, 0 })).to.equal(1) end) it("should compare different major versions", function() expect(Version.compare({ 1, 3, 2 }, { 2, 2, 1 })).to.equal(-1) expect(Version.compare({ 1, 2 }, { 2, 1 })).to.equal(-1) expect(Version.compare({ 1 }, { 2 })).to.equal(-1) end) it("should compare different minor versions", function() expect(Version.compare({ 1, 2, 3 }, { 1, 3, 2 })).to.equal(-1) expect(Version.compare({ 50, 1 }, { 50, 2 })).to.equal(-1) end) it("should compare different patch versions", function() expect(Version.compare({ 1, 1, 3 }, { 1, 1, 2 })).to.equal(1) expect(Version.compare({ 1, 1, 2 }, { 1, 1, 3 })).to.equal(-1) expect(Version.compare({ 1, 1, 3, "-rc1" }, { 1, 1, 2, "-rc2" })).to.equal(1) expect(Version.compare({ 1, 1, 2, "-rc5" }, { 1, 1, 3, "-alpha" })).to.equal(-1) end) it("should compare prerelease tags", function() expect(Version.compare({ 1, 0, 0, "-alpha" }, { 1, 0, 0 })).to.equal(-1) expect(Version.compare({ 1, 0, 0 }, { 1, 0, 0, "-alpha" })).to.equal(1) expect(Version.compare({ 1, 0, 0, "-rc1" }, { 1, 0, 0, "-rc2" })).to.equal(-1) expect(Version.compare({ 1, 0, 0, "-rc2" }, { 1, 0, 0, "-rc1" })).to.equal(1) -- Non number prereleases are not compared since that isn't meaningful expect(Version.compare({ 1, 0, 0, "-alpha" }, { 1, 0, 0, "-beta" })).to.equal(0) end) it("should parse version from strings", function() local a = Version.parse("v1.0.0") expect(a).to.be.ok() expect(a[1]).to.equal(1) expect(a[2]).to.equal(0) expect(a[3]).to.equal(0) expect(a[4]).to.equal(nil) local b = Version.parse("7.3.1-rc1") expect(b).to.be.ok() expect(b[1]).to.equal(7) expect(b[2]).to.equal(3) expect(b[3]).to.equal(1) expect(b[4]).to.equal("-rc1") end) end