public void TestAssociationToEndMultiList2MultiList() { var model = new MutableModel(); var factory = new PropertiesTestFactory(model); var assoc = factory.Association(); var end1 = factory.AssociationEndMultiList(); var end2 = factory.AssociationEndMultiList(); assoc.FirstMultiList.Add(end1); Assert.True(assoc.FirstMultiList.Count == 1); Assert.True(assoc.SecondMultiList.Count == 0); Assert.Contains(end1, assoc.FirstMultiList); Assert.Equal(assoc, end1.Association); Assert.Null(end2.Association); assoc.SecondMultiList.Add(end2); Assert.True(assoc.FirstMultiList.Count == 1); Assert.True(assoc.SecondMultiList.Count == 1); Assert.Contains(end1, assoc.FirstMultiList); Assert.Contains(end2, assoc.SecondMultiList); Assert.Equal(assoc, end1.Association); Assert.Equal(assoc, end2.Association); var imodel = model.ToImmutable(); var iassoc = assoc.ToImmutable(imodel); var iend1 = end1.ToImmutable(imodel); var iend2 = end2.ToImmutable(imodel); Assert.Contains(iend1, iassoc.FirstMultiList); Assert.Contains(iend2, iassoc.SecondMultiList); Assert.Equal(iassoc, iend1.Association); Assert.Equal(iassoc, iend2.Association); }
public void TestEndToAssociationResetMultiList2MultiList() { var model = new MutableModel(); var factory = new PropertiesTestFactory(model); var assoc = factory.Association(); var end = factory.AssociationEndMultiList(); end.Association = assoc; Assert.True(assoc.FirstMultiList.Count == 1); Assert.True(assoc.SecondMultiList.Count == 1); Assert.Contains(end, assoc.FirstMultiList); Assert.Contains(end, assoc.SecondMultiList); Assert.Equal(assoc, end.Association); end.Association = null; Assert.True(assoc.FirstMultiList.Count == 0); Assert.True(assoc.SecondMultiList.Count == 0); Assert.Null(end.Association); var imodel = model.ToImmutable(); var iassoc = assoc.ToImmutable(imodel); var iend = end.ToImmutable(imodel); Assert.Null(iassoc.First); Assert.Null(iassoc.Second); Assert.Null(iend.Association); }
public void TestAssociationToEnd() { var model = new MutableModel(); var factory = new PropertiesTestFactory(model); var assoc = factory.Association(); var end1 = factory.AssociationEnd(); var end2 = factory.AssociationEnd(); assoc.First = end1; Assert.Equal(end1, assoc.First); Assert.Null(assoc.Second); Assert.Equal(assoc, end1.Association); Assert.Null(end2.Association); assoc.Second = end2; Assert.Equal(end1, assoc.First); Assert.Equal(end2, assoc.Second); Assert.Equal(assoc, end1.Association); Assert.Equal(assoc, end2.Association); var imodel = model.ToImmutable(); var iassoc = assoc.ToImmutable(imodel); var iend1 = end1.ToImmutable(imodel); var iend2 = end2.ToImmutable(imodel); Assert.Equal(iend1, iassoc.First); Assert.Equal(iend2, iassoc.Second); Assert.Equal(iassoc, iend1.Association); Assert.Equal(iassoc, iend2.Association); }
public void TestParentToManyChildrenReset() { var model = new MutableModel(); var factory = new PropertiesTestFactory(model); var parent = factory.ParentMultiList(); var child = factory.ChildMultiList(); parent.Children.Add(child); parent.Children.Add(child); Assert.Equal(parent, child.Parent); Assert.Contains(child, parent.Children); Assert.True(parent.Children.Count == 2); Assert.Equal(child, parent.Children[0]); Assert.Equal(child, parent.Children[1]); parent.Children.Remove(child); Assert.Equal(parent, child.Parent); Assert.Contains(child, parent.Children); Assert.True(parent.Children.Count == 1); Assert.Equal(child, parent.Children[0]); var imodel = model.ToImmutable(); var iparent = parent.ToImmutable(imodel); var ichild = child.ToImmutable(imodel); Assert.Equal(iparent, ichild.Parent); Assert.Contains(ichild, iparent.Children); Assert.True(iparent.Children.Count == 1); Assert.Equal(ichild, iparent.Children[0]); }
public void TestWifeToHusband() { var model = new MutableModel(); var factory = new PropertiesTestFactory(model); var husband = factory.Husband(); var wife = factory.Wife(); wife.Husband = husband; Assert.Equal(wife, husband.Wife); Assert.Equal(husband, wife.Husband); var imodel = model.ToImmutable(); var ihusband = husband.ToImmutable(imodel); var iwife = wife.ToImmutable(imodel); Assert.Equal(iwife, ihusband.Wife); Assert.Equal(ihusband, iwife.Husband); }
public void TestSingle2List() { var model = new MutableModel(); var factory = new PropertiesTestFactory(model); var base1 = factory.BaseClass(); var derived1 = factory.DerivedClass(); var subs = factory.SubsettingDerived2Base(); subs.Single2ListDerived.Add(derived1); Assert.Contains(derived1, subs.Single2ListDerived); Assert.Equal(derived1, subs.Single2ListBase); var imodel = model.ToImmutable(); var ibase1 = base1.ToImmutable(imodel); var iderived1 = derived1.ToImmutable(imodel); var isubs = subs.ToImmutable(imodel); Assert.Contains(iderived1, isubs.Single2ListDerived); Assert.Equal(iderived1, isubs.Single2ListBase); }
public void TestList2SetBaseDerived() { var model = new MutableModel(); var factory = new PropertiesTestFactory(model); var base1 = factory.BaseClass(); var derived1 = factory.DerivedClass(); var subs = factory.SubsettingDerived2Base(); subs.List2SetBase.Add(derived1); Assert.True(subs.List2SetDerived.Count == 0); Assert.Contains(derived1, subs.List2SetBase); var imodel = model.ToImmutable(); var ibase1 = base1.ToImmutable(imodel); var iderived1 = derived1.ToImmutable(imodel); var isubs = subs.ToImmutable(imodel); Assert.True(isubs.List2SetDerived.Count == 0); Assert.Contains(iderived1, isubs.List2SetBase); }
public void TestSingle2ListBaseDerived() { var model = new MutableModel(); var factory = new PropertiesTestFactory(model); var base1 = factory.BaseClass(); var derived1 = factory.DerivedClass(); var subs = factory.SubsettingBase2Derived(); subs.Single2ListBase = derived1; Assert.True(subs.Single2ListDerived.Count == 0); Assert.Equal(derived1, subs.Single2ListBase); var imodel = model.ToImmutable(); var ibase1 = base1.ToImmutable(imodel); var iderived1 = derived1.ToImmutable(imodel); var isubs = subs.ToImmutable(imodel); Assert.True(isubs.Single2ListDerived.Count == 0); Assert.Equal(iderived1, isubs.Single2ListBase); }
public void TestParentToChild() { var model = new MutableModel(); var factory = new PropertiesTestFactory(model); var parent = factory.ParentSet(); var child = factory.ChildSet(); parent.Children.Add(child); Assert.Equal(parent, child.Parent); Assert.Contains(child, parent.Children); Assert.True(parent.Children.Count == 1); var imodel = model.ToImmutable(); var iparent = parent.ToImmutable(imodel); var ichild = child.ToImmutable(imodel); Assert.Equal(iparent, ichild.Parent); Assert.Contains(ichild, iparent.Children); Assert.True(iparent.Children.Count == 1); }
public void TestEndToAssociationMultiSet2MultiSet() { var model = new MutableModel(); var factory = new PropertiesTestFactory(model); var assoc = factory.Association(); var end = factory.AssociationEndMultiSet(); end.Association = assoc; Assert.Contains(end, assoc.FirstMultiSet); Assert.Contains(end, assoc.SecondMultiSet); Assert.Equal(assoc, end.Association); var imodel = model.ToImmutable(); var iassoc = assoc.ToImmutable(imodel); var iend = end.ToImmutable(imodel); Assert.Contains(iend, iassoc.FirstMultiSet); Assert.Contains(iend, iassoc.SecondMultiSet); Assert.Equal(iassoc, iend.Association); }
public void TestSingle2SingleBaseDerived() { var model = new MutableModel(); var factory = new PropertiesTestFactory(model); var base1 = factory.BaseClass(); var derived1 = factory.DerivedClass(); var subs = factory.SubsettingDerived2Base(); subs.Single2SingleBase = derived1; Assert.Null(subs.Single2SingleDerived); Assert.Equal(derived1, subs.Single2SingleBase); var imodel = model.ToImmutable(); var ibase1 = base1.ToImmutable(imodel); var iderived1 = derived1.ToImmutable(imodel); var isubs = subs.ToImmutable(imodel); Assert.Null(isubs.Single2SingleDerived); Assert.Equal(iderived1, isubs.Single2SingleBase); }
public void TestManyChildrenToParent() { var model = new MutableModel(); var factory = new PropertiesTestFactory(model); var parent = factory.ParentList(); var child = factory.ChildList(); child.Parent = parent; child.Parent = parent; Assert.Equal(parent, child.Parent); Assert.Contains(child, parent.Children); Assert.True(parent.Children.Count == 1); var imodel = model.ToImmutable(); var iparent = parent.ToImmutable(imodel); var ichild = child.ToImmutable(imodel); Assert.Equal(iparent, ichild.Parent); Assert.Contains(ichild, iparent.Children); Assert.True(iparent.Children.Count == 1); }
public void TestHusbandToWifeCrossReset() { var model = new MutableModel(); var factory = new PropertiesTestFactory(model); var husband = factory.Husband(); var wife = factory.Wife(); husband.Wife = wife; Assert.Equal(wife, husband.Wife); Assert.Equal(husband, wife.Husband); wife.Husband = null; Assert.Null(husband.Wife); Assert.Null(wife.Husband); var imodel = model.ToImmutable(); var ihusband = husband.ToImmutable(imodel); var iwife = wife.ToImmutable(imodel); Assert.Null(ihusband.Wife); Assert.Null(iwife.Husband); }
public void TestChildToParentReset() { var model = new MutableModel(); var factory = new PropertiesTestFactory(model); var parent = factory.ParentSet(); var child = factory.ChildSet(); child.Parent = parent; Assert.Equal(parent, child.Parent); Assert.Contains(child, parent.Children); Assert.True(parent.Children.Count == 1); child.Parent = null; Assert.Null(child.Parent); Assert.True(parent.Children.Count == 0); var imodel = model.ToImmutable(); var iparent = parent.ToImmutable(imodel); var ichild = child.ToImmutable(imodel); Assert.Null(ichild.Parent); Assert.True(iparent.Children.Count == 0); }
public void TestParentToManyChildrenCrossReset() { var model = new MutableModel(); var factory = new PropertiesTestFactory(model); var parent = factory.ParentMultiSet(); var child = factory.ChildMultiSet(); parent.Children.Add(child); parent.Children.Add(child); Assert.Equal(parent, child.Parent); Assert.Contains(child, parent.Children); Assert.True(parent.Children.Count == 2); child.Parent = null; Assert.Null(child.Parent); Assert.True(parent.Children.Count == 0); var imodel = model.ToImmutable(); var iparent = parent.ToImmutable(imodel); var ichild = child.ToImmutable(imodel); Assert.Null(ichild.Parent); Assert.True(iparent.Children.Count == 0); }
public void TestSingle2SetResetBase() { var model = new MutableModel(); var factory = new PropertiesTestFactory(model); var base1 = factory.BaseClass(); var derived1 = factory.DerivedClass(); var subs = factory.SubsettingBase2Derived(); subs.Single2SetDerived.Add(derived1); Assert.Contains(derived1, subs.Single2SetDerived); Assert.Equal(derived1, subs.Single2SetBase); subs.Single2SetBase = null; Assert.True(subs.Single2SetDerived.Count == 0); Assert.Null(subs.Single2SetBase); var imodel = model.ToImmutable(); var ibase1 = base1.ToImmutable(imodel); var iderived1 = derived1.ToImmutable(imodel); var isubs = subs.ToImmutable(imodel); Assert.True(isubs.Single2SetDerived.Count == 0); Assert.Null(isubs.Single2SetBase); }
public void TestAddToSubsetSingle() { 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.UnionSingle(); subs.Subset4 = base1; Assert.Equal(base1, subs.Union1); Assert.Single(subs.Subset1); Assert.Contains(base1, subs.Subset1); Assert.Equal(base1, subs.Subset4); Assert.Throws <ModelException>(() => subs.Subset1.Add(base2)); Assert.Equal(base1, subs.Union1); Assert.Single(subs.Subset1); Assert.Contains(base1, subs.Subset1); Assert.Equal(base1, subs.Subset4); subs.Subset5 = derived1; Assert.Equal(derived1, subs.Union1); Assert.Single(subs.Subset1); Assert.Contains(derived1, subs.Subset1); Assert.Equal(derived1, subs.Subset4); Assert.Equal(derived1, subs.Subset5); Assert.Throws <ModelException>(() => subs.Subset1.Add(base2)); subs.Subset5 = derived1; Assert.Equal(derived1, subs.Union1); Assert.Single(subs.Subset1); Assert.Contains(derived1, subs.Subset1); Assert.Equal(derived1, subs.Subset4); Assert.Equal(derived1, subs.Subset5); }
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)); }