|
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.
|