/// <summary> /// Creates a new OidColumn object and initializes it to the values defined in this OidColumnAttribute. /// </summary> /// <param name="parent"></param> /// <returns></returns> public OidColumn CreateOidColumn(ClassOid parent) { OidColumn oidColumn = new OidColumn(parent); SetOidColumnValues(oidColumn); return(oidColumn); }
public void TestRanknDirNoPoly() { Type tMitarbeiter; Type tReise; List <Class> classes = new List <Class>(); Class cls = new Class(null); cls.FullName = "Mitarbeiter"; tMitarbeiter = cls.SystemType = CreateType(cls.FullName).Object; var oid = new ClassOid(cls); oid.OidColumns.Add(new OidColumn(oid) { AutoIncremented = true }); cls.Oid = oid; Mock <Relation> rel1Mock = new Mock <Relation>(cls); rel1Mock.Setup(t => t.Bidirectional).Returns(false); Relation relation = rel1Mock.Object; List <Relation> relations = (List <Relation>)cls.Relations; relations.Add(relation); relation.FieldName = "reisen"; relation.ReferencedTypeName = "Reise"; relation.RelationName = string.Empty; relation.Multiplicity = RelationMultiplicity.List; relation.Composition = true; relation.HasSubclasses = false; classes.Add(cls); cls = new Class(null); cls.FullName = "Reise"; tReise = cls.SystemType = CreateType(cls.FullName).Object; oid = new ClassOid(cls); cls.Oid = oid; classes.Add(cls); rel1Mock.Setup(r => r.ReferencedSubClasses).Returns(new List <Class> { classes[1] }); rel1Mock.Setup(r => r.ForeignRelation).Returns((Relation)null); ClassRank classRank = new ClassRank(); var updateRank = classRank.BuildUpdateRank(classes); Assert.That(updateRank[tReise] == 1); Assert.That(updateRank[tMitarbeiter] == 0); classes.Reverse(); classRank = new ClassRank(); updateRank = classRank.BuildUpdateRank(classes); Assert.That(updateRank[tReise] == 1); Assert.That(updateRank[tMitarbeiter] == 0); }
public void TestRank1DirNoPoly() { Type tMitarbeiter; Type tAdresse; List <Class> classes = new List <Class>(); Class cls1 = new Class(null); cls1.FullName = "Mitarbeiter"; tMitarbeiter = cls1.SystemType = CreateType(cls1.FullName).Object; var oid = new ClassOid(cls1); oid.OidColumns.Add(new OidColumn(oid) { AutoIncremented = true }); cls1.Oid = oid; Mock <Relation> rel1Mock = new Mock <Relation>(cls1); rel1Mock.Setup(t => t.Bidirectional).Returns(false); Relation relation = rel1Mock.Object; List <Relation> relations = (List <Relation>)cls1.Relations; relations.Add(relation); relation.FieldName = "adresse"; relation.ReferencedTypeName = "Adresse"; relation.RelationName = string.Empty; relation.Multiplicity = RelationMultiplicity.Element; relation.Composition = true; relation.HasSubclasses = false; classes.Add(cls1); Class cls2 = new Class(null); cls2.FullName = "Adresse"; tAdresse = cls2.SystemType = CreateType(cls2.FullName).Object; cls2.Oid = oid; // We can use the same oid, since the code asks only for autoincremented columns classes.Add(cls2); rel1Mock.Setup(r => r.ReferencedSubClasses).Returns(new List <Class> { cls2 }); rel1Mock.Setup(r => r.ForeignRelation).Returns((Relation)null); ClassRank classRank = new ClassRank(); var updateRank = classRank.BuildUpdateRank(classes); Assert.That(updateRank[tMitarbeiter] == 1); Assert.That(updateRank[tAdresse] == 0); classes.Reverse(); classRank = new ClassRank(); updateRank = classRank.BuildUpdateRank(classes); Assert.That(updateRank[tMitarbeiter] == 1); Assert.That(updateRank[tAdresse] == 0); }
public OidNode(ClassOid oid) : base("Oid", oid) { this.ImageIndex = 6; this.SelectedImageIndex = 6; foreach (OidColumn oidCol in oid.OidColumns) { this.Nodes.Add(new ColumnNode(this, oidCol)); } }
public void RankDictionaryWorksWithTheGivenMocks() { Type t1; Type t2; List <Class> classes = new List <Class>(); // Create two classes with an arbitrary relation // Class 1 Class cls = new Class(null); cls.FullName = "Mitarbeiter"; t1 = cls.SystemType = CreateType(cls.FullName).Object; var oid = new ClassOid(cls); oid.OidColumns.Add(new OidColumn(oid) { AutoIncremented = true }); cls.Oid = oid; Mock <Relation> rel1Mock = new Mock <Relation>(cls); rel1Mock.Setup(t => t.Bidirectional).Returns(false); Relation relation = rel1Mock.Object; List <Relation> relations = (List <Relation>)cls.Relations; relations.Add(relation); relation.FieldName = "reisen"; relation.ReferencedTypeName = "Reise"; relation.RelationName = string.Empty; relation.Multiplicity = RelationMultiplicity.List; relation.Composition = true; relation.HasSubclasses = false; classes.Add(cls); // Class 2 cls = new Class(null); cls.FullName = "Reise"; t2 = cls.SystemType = CreateType(cls.FullName).Object; cls.Oid = oid; rel1Mock.Setup(r => r.ForeignRelation).Returns((Relation)null); classes.Add(cls); ClassRank classRank = new ClassRank(); var updateRank = classRank.BuildUpdateRank(classes); // Make sure, that the types returned by the list // are equal to the types we assigned to the Class objects var list = updateRank.Keys.ToList(); var tx = list[0]; var ty = list[1]; Assert.That(tx.GetHashCode() != ty.GetHashCode()); Assert.That(!tx.Equals(ty)); Assert.That(tx.Equals(t1) && ty.Equals(t2) || tx.Equals(t2) && ty.Equals(t1)); Assert.That(!tx.Equals(t1) && !ty.Equals(t2) || !tx.Equals(t2) && !ty.Equals(t1)); // Make sure, that indexing the updateRank dictionary works int rank = updateRank[t1]; // Will throw an exception, if indexing doesn't work Assert.That(rank == 0 || rank == 1); // Expected result with two classes... }
public void TestRank1nRightPoly() { Type tMitarbeiter; Type tReise; List <Class> classes = new List <Class>(); Class cls1 = new Class(null); cls1.FullName = "Mitarbeiter"; tMitarbeiter = cls1.SystemType = CreateType(cls1.FullName).Object; var oid = new ClassOid(cls1); oid.OidColumns.Add(new OidColumn(oid) { AutoIncremented = true }); cls1.Oid = oid; Mock <Relation> rel1Mock = new Mock <Relation>(cls1); rel1Mock.Setup(t => t.Bidirectional).Returns(true); Relation relation = rel1Mock.Object; List <Relation> relations = (List <Relation>)cls1.Relations; relations.Add(relation); relation.FieldName = "reisen"; relation.ReferencedTypeName = "ReiseBase"; relation.RelationName = string.Empty; relation.Multiplicity = RelationMultiplicity.List; relation.Composition = true; relation.HasSubclasses = false; classes.Add(cls1); Class cls2 = new Class(null); cls2.FullName = "Reise"; tReise = cls2.SystemType = CreateType(cls2.FullName).Object; oid = new ClassOid(cls2); cls2.Oid = oid; Class cls2Base = new Class(null); cls2Base.FullName = "ReiseBase"; cls2Base.SystemType = CreateType(cls2Base.FullName).Object; cls2Base.Oid = oid; classes.Add(cls2Base); Mock <Relation> rel2Mock = new Mock <Relation>(cls2); rel2Mock.Setup(t => t.Bidirectional).Returns(true); relation = rel2Mock.Object; relations = (List <Relation>)cls2.Relations; relations.Add(relation); relation.FieldName = "mitarbeiter"; relation.ReferencedTypeName = "Mitarbeiter"; relation.RelationName = string.Empty; relation.Multiplicity = RelationMultiplicity.Element; relation.Composition = false; relation.HasSubclasses = false; classes.Add(cls2); rel1Mock.Setup(r => r.ReferencedSubClasses).Returns(new List <Class> { cls2, cls2Base }); rel1Mock.Setup(r => r.ForeignRelation).Returns(rel2Mock.Object); rel2Mock.Setup(r => r.ReferencedSubClasses).Returns(new List <Class> { cls1 }); rel2Mock.Setup(r => r.ForeignRelation).Returns(rel1Mock.Object); ClassRank classRank = new ClassRank(); var updateRank = classRank.BuildUpdateRank(classes); int maRank = updateRank[tMitarbeiter]; Assert.That(updateRank[tReise] > maRank); Assert.That(updateRank[cls2Base.SystemType] > maRank); classes.Reverse(); classRank = new ClassRank(); updateRank = classRank.BuildUpdateRank(classes); maRank = updateRank[tMitarbeiter]; Assert.That(updateRank[tReise] > maRank); Assert.That(updateRank[cls2Base.SystemType] > maRank); }
public void TestRank() { Type t1; Type t2; List <Class> classes = new List <Class>(); Class cls1 = new Class(null); cls1.FullName = "ShopFachklassen.AllgemeinZugabeGutschein"; t1 = cls1.SystemType = CreateType(cls1.FullName).Object; var oid = new ClassOid(cls1); oid.OidColumns.Add(new OidColumn(oid) { AutoIncremented = true }); cls1.Oid = oid; Mock <Relation> rel1Mock = new Mock <Relation>(cls1); rel1Mock.Setup(t => t.Bidirectional).Returns(true); Relation relation = rel1Mock.Object; List <Relation> relations = (List <Relation>)cls1.Relations; relations.Add(relation); relation.FieldName = "code"; relation.ReferencedTypeName = "ShopFachklassen.GutscheinCode"; relation.RelationName = string.Empty; relation.Multiplicity = RelationMultiplicity.Element; relation.Composition = true; relation.HasSubclasses = false; classes.Add(cls1); Class cls2 = new Class(null); cls2.FullName = "ShopFachklassen.GutscheinCode"; t2 = cls2.SystemType = CreateType(cls2.FullName).Object; cls2.Oid = oid; Mock <Relation> rel2Mock = new Mock <Relation>(cls1); rel2Mock.Setup(t => t.Bidirectional).Returns(true); relation = rel2Mock.Object; relations = (List <Relation>)cls2.Relations; relations.Add(relation); relation.FieldName = "gutschein"; relation.ReferencedTypeName = "ShopFachklassen.Gutschein"; relation.RelationName = string.Empty; relation.Multiplicity = RelationMultiplicity.Element; relation.Composition = false; relation.HasSubclasses = false; rel1Mock.Setup(r => r.ForeignRelation).Returns(rel2Mock.Object); rel1Mock.Setup(r => r.ReferencedSubClasses).Returns(new List <Class> { cls2 }); rel2Mock.Setup(r => r.ForeignRelation).Returns(rel1Mock.Object); rel2Mock.Setup(r => r.ReferencedSubClasses).Returns(new List <Class> { cls1 }); classes.Add(cls2); ClassRank classRank = new ClassRank(); var updateRank = classRank.BuildUpdateRank(classes); Assert.That(updateRank[t2] == 0); Assert.That(updateRank[t1] == 1); classes.Reverse(); classRank = new ClassRank(); updateRank = classRank.BuildUpdateRank(classes); Assert.That(updateRank[t2] == 0); Assert.That(updateRank[t1] == 1); }