1
1
using System . Collections ;
2
+ using System . Linq ;
2
3
using NHibernate . Transform ;
3
4
using NUnit . Framework ;
4
5
using NHibernate . Criterion ;
@@ -596,5 +597,66 @@ public static void AssertClassAssignability(System.Type source, System.Type targ
596
597
target . FullName + ">"
597
598
) ;
598
599
}
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
+ }
599
661
}
600
662
}
0 commit comments