import "package:test/test.dart"; import "package:clawd_code/src/utils/semver_utils.dart"; void main() { group("semverOrder", () { test("equal versions return 0", () { expect(semverOrder("1.2.3", "1.2.3"), equals(0)); }); test("greater major returns 1", () { expect(semverOrder("2.0.0", "1.0.0"), equals(1)); }); test("lesser patch returns -1", () { expect(semverOrder("1.2.2", "1.2.3"), equals(-1)); }); test("strips v prefix", () { expect(semverOrder("v1.0.0", "1.0.0"), equals(0)); }); }); group("semverGt / semverLt", () { test("gt works", () { expect(semverGt("2.0.0", "1.9.9"), isTrue); expect(semverGt("1.0.0", "2.0.0"), isFalse); }); test("lt works", () { expect(semverLt("1.0.0", "1.0.1"), isTrue); }); }); group("semverSatisfies", () { test("caret range", () { expect(semverSatisfies("1.2.3", "^1.0.0"), isTrue); expect(semverSatisfies("2.0.0", "^1.0.0"), isFalse); }); test("tilde range", () { expect(semverSatisfies("1.2.5", "~1.2.0"), isTrue); expect(semverSatisfies("1.3.0", "~1.2.0"), isFalse); }); test("gte range", () { expect(semverSatisfies("3.0.0", ">=2.0.0"), isTrue); expect(semverSatisfies("1.9.9", ">=2.0.0"), isFalse); }); test("exact match", () { expect(semverSatisfies("1.2.3", "1.2.3"), isTrue); expect(semverSatisfies("1.2.4", "1.2.3"), isFalse); }); }); }