Example #1
0
        public void TestAddToSubset()
        {
            var model    = new MutableModel();
            var factory  = new PropertiesTestFactory(model);
            var base1    = factory.BaseClass();
            var base2    = factory.BaseClass();
            var base3    = factory.BaseClass();
            var base4    = factory.BaseClass();
            var derived1 = factory.DerivedClass();
            var derived2 = factory.DerivedClass();
            var derived3 = factory.DerivedClass();
            var derived4 = factory.DerivedClass();
            var subs     = factory.UnionSet();

            Assert.Throws <ModelException>(() => subs.Union1.Add(base1));
            subs.Subset1.Add(base1);
            Assert.Single(subs.Union1);
            Assert.Contains(base1, subs.Union1);
            Assert.Single(subs.Subset1);
            Assert.Contains(base1, subs.Subset1);
            subs.Subset1.Add(base1);
            Assert.Single(subs.Union1);
            Assert.Contains(base1, subs.Union1);
            Assert.Single(subs.Subset1);
            Assert.Contains(base1, subs.Subset1);
            subs.Subset2.Add(base1);
            Assert.Single(subs.Union1);
            Assert.Contains(base1, subs.Union1);
            Assert.Single(subs.Subset1);
            Assert.Contains(base1, subs.Subset1);
            Assert.Single(subs.Subset2);
            Assert.Contains(base1, subs.Subset2);
            subs.Subset3.Add(base1);
            Assert.Single(subs.Union1);
            Assert.Contains(base1, subs.Union1);
            Assert.Single(subs.Subset1);
            Assert.Contains(base1, subs.Subset1);
            Assert.Single(subs.Subset2);
            Assert.Contains(base1, subs.Subset2);
            Assert.Single(subs.Subset3);
            Assert.Contains(base1, subs.Subset3);
            subs.Subset3.Add(base2);
            Assert.True(subs.Union1.Count == 2);
            Assert.Contains(base1, subs.Union1);
            Assert.Contains(base2, subs.Union1);
            Assert.True(subs.Subset1.Count == 2);
            Assert.Contains(base1, subs.Subset1);
            Assert.Contains(base2, subs.Subset1);
            Assert.Single(subs.Subset2);
            Assert.Contains(base1, subs.Subset2);
            Assert.True(subs.Subset3.Count == 2);
            Assert.Contains(base1, subs.Subset3);
            Assert.Contains(base2, subs.Subset3);
            subs.Subset4.Add(derived1);
            Assert.True(subs.Union1.Count == 3);
            Assert.Contains(base1, subs.Union1);
            Assert.Contains(base2, subs.Union1);
            Assert.True(subs.Subset1.Count == 3);
            Assert.Contains(base1, subs.Subset1);
            Assert.Contains(base2, subs.Subset1);
            Assert.Contains(derived1, subs.Subset1);
            Assert.Single(subs.Subset2);
            Assert.Contains(base1, subs.Subset2);
            Assert.True(subs.Subset3.Count == 2);
            Assert.Contains(base1, subs.Subset3);
            Assert.Contains(base2, subs.Subset3);
            Assert.Single(subs.Subset4);
            Assert.Contains(derived1, subs.Subset4);
            Assert.Throws <ModelException>(() => subs.Union1.Add(base1));
        }