public void Union_TwoEqualSets_ResultAll()
        {
            var lhs = new CharSet('a', 'b', 'c');
            var set = lhs.Union(lhs);

            Assert.IsTrue(set.Includes('a', 'c'));
            Assert.AreEqual(3, set.Length);
        }
        public void Union_TwoSetsRightEmpty_LeftResult()
        {
            var lhs = new CharSet('a', 'b', 'c');
            var rhs = CharSet.Empty;
            var set = lhs.Union(rhs);

            Assert.AreEqual(lhs, set);
        }
        public void Union_TwoSetsOverlap_ResultAll()
        {
            var lhs = new CharSet('a', 'b', 'c');
            var rhs = new CharSet('c', 'd', 'e');
            var set = lhs.Union(rhs);

            Assert.IsTrue(set.Includes('a', 'e'));
            Assert.AreEqual(5, set.Length);
        }
        public void Union_TwoSetsNoOverlapNeighbours_ResultAll()
        {
            var lhs = new CharSet('a', 'b', 'c');
            var rhs = new CharSet('d', 'e', 'f');
            var set = lhs.Union(rhs);

            Assert.IsTrue(set.Includes('a', 'f'));
            Assert.AreEqual(6, set.Length);
        }
        public void Union_TwoSetsNoOverlap_ResultAll()
        {
            var lhs = new CharSet('a', 'b', 'c');
            var rhs = new CharSet('e', 'f', 'g');
            var set = lhs.Union(rhs);

            Assert.IsTrue(set.Includes('a', 'c'));
            Assert.IsTrue(set.Includes('e', 'g'));
        }