@@ -272,6 +272,19 @@ public void NestedComponentPropertyCastTest()
272272 o => o ? . Name == "component[OtherProperty1]" ) ;
273273 }
274274
275+ [ Test ( Description = "GH-2937" ) ]
276+ public void CompositeUserTypePropertyTest ( )
277+ {
278+ var query = session . Query < Glarch > ( ) . Select ( o => o . Multiple . count ) ;
279+ AssertSupported (
280+ query ,
281+ typeof ( Glarch ) . FullName ,
282+ "Multiple.count" ,
283+ o => o is Int32Type ,
284+ o => o ? . Name == typeof ( MultiplicityType ) . FullName ,
285+ null ) ;
286+ }
287+
275288 [ Test ]
276289 public void ManyToOneTest ( )
277290 {
@@ -723,9 +736,10 @@ private void AssertSupported(
723736 string expectedEntityName ,
724737 string expectedMemberPath ,
725738 Predicate < IType > expectedMemberType ,
726- Predicate < IAbstractComponentType > expectedComponentType = null )
739+ Predicate < IAbstractComponentType > expectedComponentType = null ,
740+ bool ? nullability = true )
727741 {
728- AssertResult ( query , true , true , expectedEntityName , expectedMemberPath , expectedMemberType , expectedComponentType ) ;
742+ AssertResult ( query , true , true , expectedEntityName , expectedMemberPath , expectedMemberType , expectedComponentType , nullability ) ;
729743 }
730744
731745 private void AssertSupported (
@@ -768,7 +782,7 @@ private void AssertResult(
768782 string expectedMemberPath ,
769783 Predicate < IType > expectedMemberType ,
770784 Predicate < IAbstractComponentType > expectedComponentType = null ,
771- bool nullability = true )
785+ bool ? nullability = true )
772786 {
773787 expectedComponentType = expectedComponentType ?? ( o => o == null ) ;
774788
@@ -809,8 +823,12 @@ private void AssertResult(
809823
810824 if ( found )
811825 {
812- Assert . That ( _tryGetMappedNullability ( Sfi , queryModel . SelectClause . Selector , out var isNullable ) , Is . True , "Expression should be supported" ) ;
813- Assert . That ( nullability , Is . EqualTo ( isNullable ) , "Nullability is not correct" ) ;
826+ Assert . That (
827+ _tryGetMappedNullability ( Sfi , queryModel . SelectClause . Selector , out var isNullable ) ,
828+ Is . EqualTo ( nullability . HasValue ) ,
829+ $ "Expression should be { ( nullability . HasValue ? "supported" : "unsupported" ) } ") ;
830+ if ( nullability . HasValue )
831+ Assert . That ( nullability , Is . EqualTo ( isNullable ) , "Nullability is not correct" ) ;
814832 }
815833 }
816834 }
0 commit comments