Example #1
0
        public void IntIntervalCoverage()
        {
            var a = new IntInterval(7, 42);
            var b = new IntInterval(40, 50);
            var c = new IntInterval(200, 100); // negative
            var e = IntInterval.Empty;

            var empty  = IntInterval.Coverage(new IntInterval[] { });
            var single = IntInterval.Coverage(new IntInterval[] { a });
            var ab     = IntInterval.Coverage(new IntInterval[] { a, b });
            var ba     = IntInterval.Coverage(new IntInterval[] { b, a });
            var ac     = IntInterval.Coverage(new IntInterval[] { a, c });
            var ca     = IntInterval.Coverage(new IntInterval[] { c, a });
            var ae     = IntInterval.Coverage(new IntInterval[] { a, e });
            var ea     = IntInterval.Coverage(new IntInterval[] { e, a });
            var bc     = IntInterval.Coverage(new IntInterval[] { b, c });
            var cb     = IntInterval.Coverage(new IntInterval[] { c, b });
            var be     = IntInterval.Coverage(new IntInterval[] { b, e });
            var eb     = IntInterval.Coverage(new IntInterval[] { e, b });
            var ce     = IntInterval.Coverage(new IntInterval[] { c, e });
            var ec     = IntInterval.Coverage(new IntInterval[] { e, c });

            Assert.IsTrue(c.IsNegative);
            Assert.AreEqual(0, empty.Right);
            Assert.AreEqual(0, empty.Left);
            Assert.AreEqual(a.Left, single.Left);
            Assert.AreEqual(a.Right, single.Right);
            Assert.AreEqual(ab.Left, a.Left);
            Assert.AreEqual(ab.Right, b.Right);
            Assert.AreEqual(ba.Left, a.Left);
            Assert.AreEqual(ba.Right, b.Right);
            Assert.AreEqual(ac.Left, a.Left);
            Assert.AreEqual(ac.Right, c.Left); // c is negative
            Assert.AreEqual(ae.Left, a.Left);
            Assert.AreEqual(ae.Right, a.Right);
            Assert.AreEqual(ea.Left, a.Left);
            Assert.AreEqual(ea.Right, a.Right);
            Assert.AreEqual(ca.Left, a.Left);
            Assert.AreEqual(ca.Right, c.Left); // c is negative
            Assert.AreEqual(bc.Left, b.Left);
            Assert.AreEqual(bc.Right, c.Left); // c is negative
            Assert.AreEqual(cb.Left, b.Left);
            Assert.AreEqual(cb.Right, c.Left); // c is negative
            Assert.AreEqual(be.Left, b.Left);
            Assert.AreEqual(be.Right, b.Right);
            Assert.AreEqual(eb.Left, b.Left);
            Assert.AreEqual(eb.Right, b.Right);
            Assert.AreEqual(ce.Left, c.Right);                                    // c is negative
            Assert.AreEqual(ec.Right, c.Left);                                    // c is negative
            Assert.IsTrue(IntInterval.Coverage(new IntInterval[] { }).IsEmpty);   // empty sequence -> empty interval
            Assert.IsTrue(IntInterval.Coverage(new IntInterval[] { e }).IsEmpty); // sequence of only empty intervals -> empty interval
        }