|
From: <fab...@us...> - 2011-05-15 19:22:20
|
Revision: 5821
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5821&view=rev
Author: fabiomaulo
Date: 2011-05-15 19:22:14 +0000 (Sun, 15 May 2011)
Log Message:
-----------
Test ported with bug fix
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/OneToOneMapper.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/OneToOneMapperTest.cs
Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/OneToOneMapper.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/OneToOneMapper.cs 2011-05-15 19:15:09 UTC (rev 5820)
+++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/OneToOneMapper.cs 2011-05-15 19:22:14 UTC (rev 5821)
@@ -11,7 +11,7 @@
private readonly HbmOneToOne oneToOne;
public OneToOneMapper(MemberInfo member, HbmOneToOne oneToOne)
- : this(member, new AccessorPropertyMapper(member.DeclaringType, member.Name, x => oneToOne.access = x), oneToOne) {}
+ : this(member, member == null ? (IAccessorPropertyMapper)new NoMemberPropertyMapper() : new AccessorPropertyMapper(member.DeclaringType, member.Name, x => oneToOne.access = x), oneToOne) { }
public OneToOneMapper(MemberInfo member, IAccessorPropertyMapper accessorMapper, HbmOneToOne oneToOne)
{
Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/OneToOneMapperTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/OneToOneMapperTest.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/MappersTests/OneToOneMapperTest.cs 2011-05-15 19:22:14 UTC (rev 5821)
@@ -0,0 +1,143 @@
+using System;
+using System.Linq;
+using NHibernate.Mapping.ByCode;
+using NHibernate.Cfg.MappingSchema;
+using NHibernate.Mapping.ByCode.Impl;
+using NUnit.Framework;
+using SharpTestsEx;
+
+namespace NHibernate.Test.MappingByCode.MappersTests
+{
+ public class OneToOneMapperTest
+ {
+ private class MyClass
+ {
+ public Relation Relation { get; set; }
+ }
+
+ private class Relation
+ {
+ public string Whatever { get; set; }
+ }
+
+ [Test]
+ public void AssignCascadeStyle()
+ {
+ var hbm = new HbmOneToOne();
+ var mapper = new OneToOneMapper(null, hbm);
+ mapper.Cascade(Mapping.ByCode.Cascade.Persist | Mapping.ByCode.Cascade.Remove);
+ hbm.cascade.Split(',').Select(w => w.Trim()).Should().Contain("persist").And.Contain("delete");
+ }
+
+ [Test]
+ public void AutoCleanUnsupportedCascadeStyle()
+ {
+ var hbm = new HbmOneToOne();
+ var mapper = new OneToOneMapper(null, hbm);
+ mapper.Cascade(Mapping.ByCode.Cascade.Persist | Mapping.ByCode.Cascade.DeleteOrphans | Mapping.ByCode.Cascade.Remove);
+ hbm.cascade.Split(',').Select(w => w.Trim()).All(w => w.Satisfy(cascade => !cascade.Contains("orphan")));
+ }
+
+ [Test]
+ public void CanSetAccessor()
+ {
+ var member = typeof(MyClass).GetProperty("Relation");
+ var hbm = new HbmOneToOne();
+ var mapper = new OneToOneMapper(member, hbm);
+
+ mapper.Access(Accessor.ReadOnly);
+ hbm.Access.Should().Be("readonly");
+ }
+
+ [Test]
+ public void CanSetLazyness()
+ {
+ var hbm = new HbmOneToOne();
+ var mapper = new OneToOneMapper(null, hbm);
+ mapper.Lazy(LazyRelation.NoProxy);
+ hbm.Lazy.Should().Have.Value();
+ hbm.Lazy.Should().Be(HbmLaziness.NoProxy);
+ }
+
+ [Test]
+ public void CanSetConstrained()
+ {
+ var hbm = new HbmOneToOne();
+ var mapper = new OneToOneMapper(null, hbm);
+ mapper.Constrained(true);
+ hbm.constrained.Should().Be.True();
+ }
+
+ [Test]
+ public void WhenNoMemberPropertyRefAcceptAnything()
+ {
+ var hbm = new HbmOneToOne();
+ var mapper = new OneToOneMapper(null, hbm);
+ mapper.PropertyReference(typeof(Array).GetProperty("Length"));
+
+ hbm.propertyref.Should().Be("Length");
+ }
+
+ [Test]
+ public void WhenNullMemberPropertyRefNull()
+ {
+ var hbm = new HbmOneToOne();
+ var mapper = new OneToOneMapper(null, hbm);
+ mapper.PropertyReference(null);
+
+ hbm.propertyref.Should().Be.Null();
+ }
+
+ [Test]
+ public void WhenMemberPropertyRefAcceptOnlyMemberOfExpectedType()
+ {
+ var hbm = new HbmOneToOne();
+ var mapper = new OneToOneMapper(typeof(MyClass).GetProperty("Relation"), hbm);
+ mapper.PropertyReference(typeof(Relation).GetProperty("Whatever"));
+
+ hbm.propertyref.Should().Be("Whatever");
+
+ Executing.This(() => mapper.PropertyReference(typeof(Array).GetProperty("Length"))).Should().Throw<ArgumentOutOfRangeException>();
+ }
+
+
+ [Test]
+ public void CanSetFormula()
+ {
+ var member = For<MyClass>.Property(c => c.Relation);
+ var mapping = new HbmOneToOne();
+ var mapper = new OneToOneMapper(member, mapping);
+
+ mapper.Formula("SomeFormula");
+ mapping.formula1.Should().Be("SomeFormula");
+ }
+
+ [Test]
+ public void WhenSetFormulaWithNullThenSetFormulaWithNull()
+ {
+ var member = For<MyClass>.Property(c => c.Relation);
+ var mapping = new HbmOneToOne();
+ var mapper = new OneToOneMapper(member, mapping);
+ mapper.Formula(null);
+ mapping.formula.Should().Be.Null();
+ mapping.formula1.Should().Be.Null();
+ }
+
+ [Test]
+ public void WhenSetFormulaWithMultipleLinesThenSetFormulaNode()
+ {
+ var member = For<MyClass>.Property(c => c.Relation);
+ var mapping = new HbmOneToOne();
+ var mapper = new OneToOneMapper(member, mapping);
+ var formula = @"Line1
+Line2";
+ mapper.Formula(formula);
+ mapping.formula1.Should().Be.Null();
+ var hbmFormula = mapping.formula.First();
+ hbmFormula.Text.Length.Should().Be(2);
+ hbmFormula.Text[0].Should().Be("Line1");
+ hbmFormula.Text[1].Should().Be("Line2");
+ mapping.formula1.Should().Be.Null();
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-05-15 19:15:09 UTC (rev 5820)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-05-15 19:22:14 UTC (rev 5821)
@@ -580,6 +580,7 @@
<Compile Include="MappingByCode\MappersTests\JoinedSubclassMapperTests\TablesSincronizationTests.cs" />
<Compile Include="MappingByCode\MappersTests\JoinMapperTests.cs" />
<Compile Include="MappingByCode\MappersTests\NaturalIdMapperTest.cs" />
+ <Compile Include="MappingByCode\MappersTests\OneToOneMapperTest.cs" />
<Compile Include="MappingByCode\MappersTests\PropertyMapperTest.cs" />
<Compile Include="MappingByCode\MappersTests\SubclassMapperTests\SetPersisterTests.cs" />
<Compile Include="MappingByCode\MappersTests\SubclassMapperTests\TablesSincronizationTests.cs" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|