On Thursday, 23 January 2020 at 17:05:10 UTC, Robert Schadek wrote:
DESTROY!

Tried:

---
unittest {
  immutable SemVer v1 = SemVer(1,1,1);
  immutable SemVer v2 = SemVer(2,2,2);
  immutable SemVer v3 = SemVer(3,3,3);
  immutable SemVer v4 = SemVer(4,4,4);
immutable VersionRange a = VersionRange(v1, Inclusive.yes, v2, Inclusive.yes); immutable VersionRange b = VersionRange(v3, Inclusive.yes, v4, Inclusive.yes); immutable VersionRange c = VersionRange(v2, Inclusive.yes, v3, Inclusive.yes);

  assert(intersectionOf(a, invert(a)).ranges.length == 0);
  assert(intersectionOf(a, a) == a);
  assert(intersectionOf(a, b) != a);
  assert(intersectionOf(a, b) != b);
  assert(intersectionOf(b, a) != a);
  assert(intersectionOf(b, a) != b);
  assert(intersectionOf(invert(a), invert(a)) == invert(a));
assert(invert(intersectionOf(a, invert(b))) == invert(intersectionOf(a,a)));

  auto add(T, P)(T a, P b) {
        return invert(intersectionOf(invert(a), invert(b)));
  }
  auto remove(T, P)(T a, P b) {
        return intersectionOf(a, invert(b));
  }

  assert(add(a,b) == add(b,a));

assert(invert(invert(a)) == add(intersectionOf(a,c), remove(a,c)));
  assert(differenceOf(a, a).ranges.length == 0);
assert(invert(intersectionOf(invert(a), invert(a))) == invert(invert(a))); assert(invert(invert(differenceOf(a, invert(a)))) == invert(invert(a))); assert(invert(invert(intersectionOf(a, c))) == invert(invert(remove(a, remove(a, c)))));
}
---

Everything green. Nice work.

Haven't tried Inclusive.no yet. I'll leave that to someone else.

Reply via email to