@@ -549,6 +549,100 @@ public void GroupByComputedValueInObjectArray()
549
549
Assert . AreEqual ( 830 , orderGroups . Sum ( g => g . Count ) ) ;
550
550
}
551
551
552
+ [ Test ( Description = "NH-3474" ) ]
553
+ public void GroupByConstant ( )
554
+ {
555
+ var totals = db . Orders . GroupBy ( o => 1 ) . Select ( g => new { Key = g . Key , Count = g . Count ( ) , Sum = g . Sum ( x => x . Freight ) } ) . ToList ( ) ;
556
+ Assert . That ( totals . Count , Is . EqualTo ( 1 ) ) ;
557
+ Assert . That ( totals , Has . All . With . Property ( "Key" ) . EqualTo ( 1 ) ) ;
558
+ }
559
+
560
+ [ Test ( Description = "NH-3474" ) ]
561
+ public void GroupByConstantAnonymousType ( )
562
+ {
563
+ var totals = db . Orders . GroupBy ( o => new { A = 1 } ) . Select ( g => new { Key = g . Key , Count = g . Count ( ) , Sum = g . Sum ( x => x . Freight ) } ) . ToList ( ) ;
564
+ Assert . That ( totals . Count , Is . EqualTo ( 1 ) ) ;
565
+ Assert . That ( totals , Has . All . With . Property ( "Key" ) . With . Property ( "A" ) . EqualTo ( 1 ) ) ;
566
+ }
567
+
568
+ [ Test ( Description = "NH-3474" ) ]
569
+ public void GroupByConstantArray ( )
570
+ {
571
+ var totals = db . Orders . GroupBy ( o => new object [ ] { 1 } ) . Select ( g => new { Key = g . Key , Count = g . Count ( ) , Sum = g . Sum ( x => x . Freight ) } ) . ToList ( ) ;
572
+ Assert . That ( totals . Count , Is . EqualTo ( 1 ) ) ;
573
+ Assert . That ( totals , Has . All . With . Property ( "Key" ) . EqualTo ( new object [ ] { 1 } ) ) ;
574
+ }
575
+
576
+ [ Test ( Description = "NH-3474" ) ]
577
+ public void GroupByKeyWithConstantInAnonymousType ( )
578
+ {
579
+ var totals = db . Orders . GroupBy ( o => new { A = 1 , B = o . Shipper . ShipperId } ) . Select ( g => new { Key = g . Key , Count = g . Count ( ) , Sum = g . Sum ( x => x . Freight ) } ) . ToList ( ) ;
580
+ Assert . That ( totals . Count , Is . EqualTo ( 3 ) ) ;
581
+ Assert . That ( totals , Has . All . With . Property ( "Key" ) . With . Property ( "A" ) . EqualTo ( 1 ) ) ;
582
+ }
583
+
584
+ [ Test ( Description = "NH-3474" ) ]
585
+ public void GroupByKeyWithConstantInArray ( )
586
+ {
587
+ var totals = db . Orders . GroupBy ( o => new [ ] { 1 , o . Shipper . ShipperId } ) . Select ( g => new { Key = g . Key , Count = g . Count ( ) , Sum = g . Sum ( x => x . Freight ) } ) . ToList ( ) ;
588
+ Assert . That ( totals . Count , Is . EqualTo ( 3 ) ) ;
589
+ Assert . That ( totals , Has . All . With . Property ( "Key" ) . Contains ( 1 ) ) ;
590
+ }
591
+
592
+ private int constKey ;
593
+ [ Test ( Description = "NH-3474" ) ]
594
+ public void GroupByKeyWithConstantFromVariable ( )
595
+ {
596
+ constKey = 1 ;
597
+ var q1 = db . Orders . GroupBy ( o => constKey ) . Select ( g => new { Key = g . Key , Count = g . Count ( ) , Sum = g . Sum ( x => x . Freight ) } ) ;
598
+ var q2 = db . Orders . GroupBy ( o => new { A = constKey } ) . Select ( g => new { Key = g . Key , Count = g . Count ( ) , Sum = g . Sum ( x => x . Freight ) } ) ;
599
+ var q3 = db . Orders . GroupBy ( o => new object [ ] { constKey } ) . Select ( g => new { Key = g . Key , Count = g . Count ( ) , Sum = g . Sum ( x => x . Freight ) } ) ;
600
+ var q4 = db . Orders . GroupBy ( o => new { A = constKey , B = o . Shipper . ShipperId } ) . Select ( g => new { Key = g . Key , Count = g . Count ( ) , Sum = g . Sum ( x => x . Freight ) } ) ;
601
+ var q5 = db . Orders . GroupBy ( o => new [ ] { constKey , o . Shipper . ShipperId } ) . Select ( g => new { Key = g . Key , Count = g . Count ( ) , Sum = g . Sum ( x => x . Freight ) } ) ;
602
+
603
+ var r1_1 = q1 . ToList ( ) ;
604
+ Assert . That ( r1_1 . Count , Is . EqualTo ( 1 ) ) ;
605
+ Assert . That ( r1_1 , Has . All . With . Property ( "Key" ) . EqualTo ( 1 ) ) ;
606
+
607
+ var r2_1 = q2 . ToList ( ) ;
608
+ Assert . That ( r2_1 . Count , Is . EqualTo ( 1 ) ) ;
609
+ Assert . That ( r2_1 , Has . All . With . Property ( "Key" ) . With . Property ( "A" ) . EqualTo ( 1 ) ) ;
610
+
611
+ var r3_1 = q3 . ToList ( ) ;
612
+ Assert . That ( r3_1 . Count , Is . EqualTo ( 1 ) ) ;
613
+ Assert . That ( r3_1 , Has . All . With . Property ( "Key" ) . EqualTo ( new object [ ] { 1 } ) ) ;
614
+
615
+ var r4_1 = q4 . ToList ( ) ;
616
+ Assert . That ( r4_1 . Count , Is . EqualTo ( 3 ) ) ;
617
+ Assert . That ( r4_1 , Has . All . With . Property ( "Key" ) . With . Property ( "A" ) . EqualTo ( 1 ) ) ;
618
+
619
+ var r5_1 = q5 . ToList ( ) ;
620
+ Assert . That ( r5_1 . Count , Is . EqualTo ( 3 ) ) ;
621
+ Assert . That ( r5_1 , Has . All . With . Property ( "Key" ) . Contains ( 1 ) ) ;
622
+
623
+ constKey = 2 ;
624
+
625
+ var r1_2 = q1 . ToList ( ) ;
626
+ Assert . That ( r1_2 . Count , Is . EqualTo ( 1 ) ) ;
627
+ Assert . That ( r1_2 , Has . All . With . Property ( "Key" ) . EqualTo ( 2 ) ) ;
628
+
629
+ var r2_2 = q2 . ToList ( ) ;
630
+ Assert . That ( r2_2 . Count , Is . EqualTo ( 1 ) ) ;
631
+ Assert . That ( r2_2 , Has . All . With . Property ( "Key" ) . With . Property ( "A" ) . EqualTo ( 2 ) ) ;
632
+
633
+ var r3_2 = q3 . ToList ( ) ;
634
+ Assert . That ( r3_2 . Count , Is . EqualTo ( 1 ) ) ;
635
+ Assert . That ( r3_2 , Has . All . With . Property ( "Key" ) . EqualTo ( new object [ ] { constKey } ) ) ;
636
+
637
+ var r4_2 = q4 . ToList ( ) ;
638
+ Assert . That ( r4_2 . Count , Is . EqualTo ( 3 ) ) ;
639
+ Assert . That ( r4_2 , Has . All . With . Property ( "Key" ) . With . Property ( "A" ) . EqualTo ( 2 ) ) ;
640
+
641
+ var r5_2 = q5 . ToList ( ) ;
642
+ Assert . That ( r5_2 . Count , Is . EqualTo ( 3 ) ) ;
643
+ Assert . That ( r5_2 , Has . All . With . Property ( "Key" ) . Contains ( 2 ) ) ;
644
+ }
645
+
552
646
[ Test ( Description = "NH-3801" ) ]
553
647
public void GroupByComputedValueWithJoinOnObject ( )
554
648
{
0 commit comments