From 480f04a821a92753c541db2629c3c1ffb37618e1 Mon Sep 17 00:00:00 2001 From: sashakboo <31510839+sashakboo@users.noreply.github.com> Date: Wed, 21 Jun 2023 11:14:09 +0400 Subject: [PATCH] test for issue with nosetter.pascalcase-underscore --- src/NHibernate.Test/LazyProperty/Book.cs | 9 +++++++ .../LazyProperty/LazyPropertyFixture.cs | 26 +++++++++++++++++++ .../LazyProperty/Mappings.hbm.xml | 1 + 3 files changed, 36 insertions(+) diff --git a/src/NHibernate.Test/LazyProperty/Book.cs b/src/NHibernate.Test/LazyProperty/Book.cs index 40942a6af47..6f7f199233d 100644 --- a/src/NHibernate.Test/LazyProperty/Book.cs +++ b/src/NHibernate.Test/LazyProperty/Book.cs @@ -14,5 +14,14 @@ public virtual string ALotOfText } public virtual string FieldInterceptor { get; set; } + + private byte[] _NoSetterImage; + + public virtual byte[] NoSetterImage + { + get { return _NoSetterImage; } + set { _NoSetterImage = value; } + } + } } diff --git a/src/NHibernate.Test/LazyProperty/LazyPropertyFixture.cs b/src/NHibernate.Test/LazyProperty/LazyPropertyFixture.cs index 1bc83ffa367..ad1a230ba25 100644 --- a/src/NHibernate.Test/LazyProperty/LazyPropertyFixture.cs +++ b/src/NHibernate.Test/LazyProperty/LazyPropertyFixture.cs @@ -46,6 +46,7 @@ protected override void OnSetUp() Name = "some name", Id = 1, ALotOfText = "a lot of text ...", + NoSetterImage = new byte[10], FieldInterceptor = "Why not that name?" }); tx.Commit(); @@ -210,5 +211,30 @@ public void CanMergeTransientWithLazyProperty() Assert.That(book.ALotOfText, Is.EqualTo("a lot of text two...")); } } + + [Test] + public void GetLazyPropertyWithNoSetterAccessor_PropertyShouldBeInitialized() + { + using (ISession s = OpenSession()) + { + var book = s.Get(1); + var image = book.NoSetterImage; + // Fails. Property remains uninitialized after it has been accessed. + Assert.That(NHibernateUtil.IsPropertyInitialized(book, "NoSetterImage"), Is.True); + } + } + + [Test] + public void GetLazyPropertyWithNoSetterAccessorTwice_ResultsAreSameObject() + { + using (ISession s = OpenSession()) + { + var book = s.Get(1); + var image = book.NoSetterImage; + var sameImage = book.NoSetterImage; + // Fails. Each call to a property getter returns a new object. + Assert.That(ReferenceEquals(image, sameImage), Is.True); + } + } } } diff --git a/src/NHibernate.Test/LazyProperty/Mappings.hbm.xml b/src/NHibernate.Test/LazyProperty/Mappings.hbm.xml index 25eaafa3554..ffe6aa3c84e 100644 --- a/src/NHibernate.Test/LazyProperty/Mappings.hbm.xml +++ b/src/NHibernate.Test/LazyProperty/Mappings.hbm.xml @@ -10,6 +10,7 @@ +