From: <fab...@us...> - 2011-04-27 22:32:10
|
Revision: 5780 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5780&view=rev Author: fabiomaulo Date: 2011-04-27 22:32:04 +0000 (Wed, 27 Apr 2011) Log Message: ----------- Passing test to check we are merging all Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs 2011-04-27 22:04:24 UTC (rev 5779) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/FakeModelExplicitDeclarationsHolder.cs 2011-04-27 22:32:04 UTC (rev 5780) @@ -182,8 +182,6 @@ public void AddAsTablePerClassHierarchyEntity(System.Type type) {} - public void AddAsTablePerClassHierarchyJoinEntity(System.Type type) {} - public void AddAsTablePerConcreteClassEntity(System.Type type) {} public void AddAsOneToOneRelation(MemberInfo member) {} Modified: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs 2011-04-27 22:04:24 UTC (rev 5779) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ModelExplicitDeclarationsHolderMergeTest.cs 2011-04-27 22:32:04 UTC (rev 5780) @@ -1,3 +1,5 @@ +using System.Collections.Generic; +using System.Linq; using System.Reflection; using NHibernate.Mapping.ByCode; using NHibernate.Mapping.ByCode.Impl; @@ -8,6 +10,299 @@ { public class ModelExplicitDeclarationsHolderMergeTest { + private class ExplicitDeclarationsHolderMock: IModelExplicitDeclarationsHolder + { + public ExplicitDeclarationsHolderMock() + { + PropertiesGettersUsed = new HashSet<string>(); + } + private readonly HashSet<MemberInfo> any = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> arrays = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> bags = new HashSet<MemberInfo>(); + private readonly HashSet<System.Type> components = new HashSet<System.Type>(); + private readonly HashSet<MemberInfo> dictionaries = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> idBags = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> lists = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> manyToManyRelations = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> manyToOneRelations = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> naturalIds = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> oneToManyRelations = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> oneToOneRelations = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> poids = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> composedIds = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> properties = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> dynamicComponents = new HashSet<MemberInfo>(); + private readonly HashSet<MemberInfo> persistentMembers = new HashSet<MemberInfo>(); + private readonly HashSet<System.Type> rootEntities = new HashSet<System.Type>(); + private readonly HashSet<MemberInfo> sets = new HashSet<MemberInfo>(); + private readonly HashSet<SplitDefinition> splitDefinitions = new HashSet<SplitDefinition>(); + private readonly HashSet<System.Type> tablePerClassEntities = new HashSet<System.Type>(); + private readonly HashSet<System.Type> tablePerClassHierarchyEntities = new HashSet<System.Type>(); + private readonly HashSet<System.Type> tablePerConcreteClassEntities = new HashSet<System.Type>(); + private readonly HashSet<MemberInfo> versionProperties = new HashSet<MemberInfo>(); + + public HashSet<string> PropertiesGettersUsed { get; set; } + + #region IModelExplicitDeclarationsHolder Members + + public IEnumerable<System.Type> RootEntities + { + get + { + PropertiesGettersUsed.Add("RootEntities"); + return rootEntities; + } + } + + public IEnumerable<System.Type> Components + { + get + { + PropertiesGettersUsed.Add("Components"); + return components; + } + } + + public IEnumerable<System.Type> TablePerClassEntities + { + get + { + PropertiesGettersUsed.Add("TablePerClassEntities"); + return tablePerClassEntities; + } + } + + public IEnumerable<System.Type> TablePerClassHierarchyEntities + { + get + { + PropertiesGettersUsed.Add("TablePerClassHierarchyEntities"); + return tablePerClassHierarchyEntities; + } + } + + public IEnumerable<System.Type> TablePerConcreteClassEntities + { + get + { + PropertiesGettersUsed.Add("TablePerConcreteClassEntities"); + return tablePerConcreteClassEntities; + } + } + + public IEnumerable<MemberInfo> OneToOneRelations + { + get + { + PropertiesGettersUsed.Add("OneToOneRelations"); + return oneToOneRelations; + } + } + + public IEnumerable<MemberInfo> ManyToOneRelations + { + get + { + PropertiesGettersUsed.Add("ManyToOneRelations"); + return manyToOneRelations; + } + } + + public IEnumerable<MemberInfo> ManyToManyRelations + { + get + { + PropertiesGettersUsed.Add("ManyToManyRelations"); + return manyToManyRelations; + } + } + + public IEnumerable<MemberInfo> OneToManyRelations + { + get + { + PropertiesGettersUsed.Add("OneToManyRelations"); + return oneToManyRelations; + } + } + + public IEnumerable<MemberInfo> Any + { + get + { + PropertiesGettersUsed.Add("Any"); + return any; + } + } + + public IEnumerable<MemberInfo> Poids + { + get + { + PropertiesGettersUsed.Add("Poids"); + return poids; + } + } + + public IEnumerable<MemberInfo> ComposedIds + { + get + { + PropertiesGettersUsed.Add("ComposedIds"); + return composedIds; + } + } + + public IEnumerable<MemberInfo> VersionProperties + { + get + { + PropertiesGettersUsed.Add("VersionProperties"); + return versionProperties; + } + } + + public IEnumerable<MemberInfo> NaturalIds + { + get + { + PropertiesGettersUsed.Add("NaturalIds"); + return naturalIds; + } + } + + public IEnumerable<MemberInfo> Sets + { + get + { + PropertiesGettersUsed.Add("Sets"); + return sets; + } + } + + public IEnumerable<MemberInfo> Bags + { + get + { + PropertiesGettersUsed.Add("Bags"); + return bags; + } + } + + public IEnumerable<MemberInfo> IdBags + { + get + { + PropertiesGettersUsed.Add("IdBags"); + return idBags; + } + } + + public IEnumerable<MemberInfo> Lists + { + get + { + PropertiesGettersUsed.Add("Lists"); + return lists; + } + } + + public IEnumerable<MemberInfo> Arrays + { + get + { + PropertiesGettersUsed.Add("Arrays"); + return arrays; + } + } + + public IEnumerable<MemberInfo> Dictionaries + { + get + { + PropertiesGettersUsed.Add("Dictionaries"); + return dictionaries; + } + } + + public IEnumerable<MemberInfo> Properties + { + get + { + PropertiesGettersUsed.Add("Properties"); + return properties; + } + } + + public IEnumerable<MemberInfo> DynamicComponents + { + get + { + PropertiesGettersUsed.Add("DynamicComponents"); + return dynamicComponents; + } + } + + public IEnumerable<MemberInfo> PersistentMembers + { + get + { + PropertiesGettersUsed.Add("PersistentMembers"); + return persistentMembers; + } + } + + public IEnumerable<SplitDefinition> SplitDefinitions + { + get + { + PropertiesGettersUsed.Add("SplitDefinitions"); + return splitDefinitions; + } + } + + public IEnumerable<string> GetSplitGroupsFor(System.Type type) + { + return Enumerable.Empty<string>(); + } + + public string GetSplitGroupFor(MemberInfo member) + { + return null; + } + + public System.Type GetDynamicComponentTemplate(MemberInfo member) + { + return null; + } + + public void AddAsRootEntity(System.Type type) { } + public void AddAsComponent(System.Type type) { } + public void AddAsTablePerClassEntity(System.Type type) { } + public void AddAsTablePerClassHierarchyEntity(System.Type type) { } + public void AddAsTablePerConcreteClassEntity(System.Type type) { } + public void AddAsOneToOneRelation(MemberInfo member) { } + public void AddAsManyToOneRelation(MemberInfo member) { } + public void AddAsManyToManyRelation(MemberInfo member) { } + public void AddAsOneToManyRelation(MemberInfo member) { } + public void AddAsAny(MemberInfo member) { } + public void AddAsPoid(MemberInfo member) { } + public void AddAsPartOfComposedId(MemberInfo member) { } + public void AddAsVersionProperty(MemberInfo member) { } + public void AddAsNaturalId(MemberInfo member) { } + public void AddAsSet(MemberInfo member) { } + public void AddAsBag(MemberInfo member) { } + public void AddAsIdBag(MemberInfo member) { } + public void AddAsList(MemberInfo member) { } + public void AddAsArray(MemberInfo member) { } + public void AddAsMap(MemberInfo member) { } + public void AddAsProperty(MemberInfo member) { } + public void AddAsPersistentMember(MemberInfo member) { } + public void AddAsPropertySplit(SplitDefinition definition) { } + public void AddAsDynamicComponent(MemberInfo member, System.Type componentTemplate) { } + + #endregion + } private readonly MemberInfo property = typeof (MyClass).GetProperty("Bar"); [Test] @@ -282,6 +577,21 @@ destination.ComposedIds.Should().Have.Count.EqualTo(1); } + [Test] + public void MergeShouldGetAllPropertiesOfPatternsAppliersHolderOfBothSide() + { + // this test is to check that, at least, we are getting all properties (to avoid to forget something) + string[] propertiesOfIPatternsAppliersHolder = + typeof(IModelExplicitDeclarationsHolder).GetProperties().Select(x => x.Name).ToArray(); + + var first = new ExplicitDeclarationsHolderMock(); + var second = new ExplicitDeclarationsHolderMock(); + + first.Merge(second); + + second.PropertiesGettersUsed.Should().Have.SameValuesAs(propertiesOfIPatternsAppliersHolder); + } + #region Nested type: MyClass private class MyClass This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |