11using System . Collections ;
2+ using System . Linq ;
23using NHibernate . Transform ;
34using NUnit . Framework ;
45using NHibernate . Criterion ;
@@ -596,5 +597,66 @@ public static void AssertClassAssignability(System.Type source, System.Type targ
596597 target . FullName + ">"
597598 ) ;
598599 }
600+
601+ class TestResultSetTransformer : IResultTransformer
602+ {
603+ public bool TransformTupleCalled { get ; set ; }
604+ public bool TransformListCalled { get ; set ; }
605+ public object TransformTuple ( object [ ] tuple , string [ ] aliases )
606+ {
607+ this . TransformTupleCalled = true ;
608+ return tuple ;
609+ }
610+ public IList TransformList ( IList collection )
611+ {
612+ this . TransformListCalled = true ;
613+ return collection ;
614+ }
615+ }
616+
617+ [ Test ]
618+ public void CanSetResultTransformerOnFutureQuery ( )
619+ {
620+ using ( var s = this . OpenSession ( ) )
621+ using ( s . BeginTransaction ( ) )
622+ {
623+ s . Save ( new Person ( "Ricardo" ) ) ;
624+ s . Flush ( ) ;
625+
626+ var transformer = new TestResultSetTransformer ( ) ;
627+ var l = s
628+ . CreateSQLQuery ( "select Name from Person" )
629+ . SetResultTransformer ( transformer )
630+ . Future < object [ ] > ( ) ;
631+
632+ Assert . AreEqual ( l . Count ( ) , 1 ) ;
633+ Assert . AreEqual ( "Ricardo" , l . ElementAt ( 0 ) [ 0 ] ) ;
634+ Assert . IsTrue ( transformer . TransformListCalled ) ;
635+ Assert . IsTrue ( transformer . TransformTupleCalled ) ;
636+ }
637+ }
638+
639+ [ Test ]
640+ public void CanSetResultTransformerOnFutureValue ( )
641+ {
642+ using ( var s = this . OpenSession ( ) )
643+ using ( s . BeginTransaction ( ) )
644+ {
645+ s . Save ( new Person ( "Ricardo" ) ) ;
646+ s . Flush ( ) ;
647+
648+ var transformer = new TestResultSetTransformer ( ) ;
649+ var l = s
650+ . CreateSQLQuery ( "select Name from Person" )
651+ . SetResultTransformer ( transformer )
652+ . FutureValue < object [ ] > ( ) ;
653+
654+ var v = l . Value ;
655+
656+ Assert . AreEqual ( "Ricardo" , v [ 0 ] ) ;
657+ Assert . IsTrue ( transformer . TransformListCalled ) ;
658+ Assert . IsTrue ( transformer . TransformTupleCalled ) ;
659+ }
660+ }
599661 }
600662}
0 commit comments