1
- using System . Linq ;
1
+ using System ;
2
+ using System . Linq ;
3
+ using NHibernate . DomainModel . Northwind . Entities ;
2
4
using NUnit . Framework ;
3
5
4
6
namespace NHibernate . Test . Linq
@@ -14,7 +16,7 @@ public void CanExecuteAny()
14
16
}
15
17
16
18
[ Test ]
17
- public void CanExecuteAnyWithArguments ( )
19
+ public void CanExecuteAnyWithArguments ( )
18
20
{
19
21
var result = db . Users . Any ( u => u . Name == "user-does-not-exist" ) ;
20
22
Assert . IsFalse ( result ) ;
@@ -27,5 +29,102 @@ public void CanExecuteCountWithOrderByArguments()
27
29
var count = query . Count ( ) ;
28
30
Assert . AreEqual ( 3 , count ) ;
29
31
}
32
+
33
+ [ Test , Description ( "NH-2744" ) ]
34
+ public void CanSelectPropertiesIntoObjectArray ( )
35
+ {
36
+ var result = db . Users
37
+ . Select ( u => new object [ ] { u . Id , u . Name , u . InvalidLoginAttempts } )
38
+ . First ( ) ;
39
+
40
+ Assert . That ( result . Length , Is . EqualTo ( 3 ) ) ;
41
+ Assert . That ( result [ 0 ] , Is . EqualTo ( 1 ) ) ;
42
+ Assert . That ( result [ 1 ] , Is . EqualTo ( "ayende" ) ) ;
43
+ Assert . That ( result [ 2 ] , Is . EqualTo ( 4 ) ) ;
44
+ }
45
+
46
+ [ Test , Description ( "NH-2744" ) ]
47
+ public void CanSelectComponentsIntoObjectArray ( )
48
+ {
49
+ var result = db . Users
50
+ . Select ( u => new object [ ] { u . Component , u . Component . OtherComponent } )
51
+ . First ( ) ;
52
+
53
+ Assert . That ( result . Length , Is . EqualTo ( 2 ) ) ;
54
+ Assert . That ( result [ 0 ] , Is . TypeOf < UserComponent > ( ) ) ;
55
+ Assert . That ( result [ 1 ] , Is . TypeOf < UserComponent2 > ( ) ) ;
56
+
57
+ var component = ( UserComponent ) result [ 0 ] ;
58
+ Assert . That ( component . Property1 , Is . EqualTo ( "test1" ) ) ;
59
+
60
+ var otherComponent = ( UserComponent2 ) result [ 1 ] ;
61
+ Assert . That ( otherComponent . OtherProperty1 , Is . EqualTo ( "othertest1" ) ) ;
62
+ }
63
+
64
+ [ Test , Description ( "NH-2744" ) ]
65
+ public void CanSelectEnumerationPropertiesIntoObjectArray ( )
66
+ {
67
+ var result = db . Users
68
+ . Where ( u => u . Name == "nhibernate" )
69
+ . Select ( u => new object [ ] { u . Enum1 , u . Enum2 , u . Features } )
70
+ . First ( ) ;
71
+
72
+ Assert . That ( result . Length , Is . EqualTo ( 3 ) ) ;
73
+ Assert . That ( result [ 0 ] , Is . EqualTo ( EnumStoredAsString . Medium ) ) ;
74
+ Assert . That ( result [ 1 ] , Is . EqualTo ( EnumStoredAsInt32 . Unspecified ) ) ;
75
+ Assert . That ( result [ 2 ] , Is . EqualTo ( FeatureSet . HasAll ) ) ;
76
+ }
77
+
78
+ [ Test , Description ( "NH-2744" ) ]
79
+ public void CanSelectConstantsIntoObjectArray ( )
80
+ {
81
+ const decimal pi = 3.1415m ;
82
+ const string name = "Julian" ;
83
+
84
+ var result = db . Users
85
+ . Select ( u => new object [ ] { u . Id , pi , name , DateTime . MinValue } )
86
+ . First ( ) ;
87
+
88
+ Assert . That ( result . Length , Is . EqualTo ( 4 ) ) ;
89
+ Assert . That ( result [ 0 ] , Is . EqualTo ( 1 ) ) ;
90
+ Assert . That ( result [ 1 ] , Is . EqualTo ( pi ) ) ;
91
+ Assert . That ( result [ 2 ] , Is . EqualTo ( name ) ) ;
92
+ Assert . That ( result [ 3 ] , Is . EqualTo ( DateTime . MinValue ) ) ;
93
+ }
94
+
95
+ [ Test , Description ( "NH-2744" ) ]
96
+ public void CanSelectPropertiesFromAssociationsIntoObjectArray ( )
97
+ {
98
+ var result = db . Users
99
+ . Select ( u => new object [ ] { u . Id , u . Role . Name , u . Role . Entity . Output } )
100
+ . First ( ) ;
101
+
102
+ Assert . That ( result . Length , Is . EqualTo ( 3 ) ) ;
103
+ Assert . That ( result [ 0 ] , Is . EqualTo ( 1 ) ) ;
104
+ Assert . That ( result [ 1 ] , Is . EqualTo ( "Admin" ) ) ;
105
+ Assert . That ( result [ 2 ] , Is . EqualTo ( "output" ) ) ;
106
+ }
107
+
108
+ [ Test , Description ( "NH-2744" ) ]
109
+ public void CanSelectPropertiesIntoNestedObjectArrays ( )
110
+ {
111
+ var query = db . Users . Select ( u => new object [ ] { "Root" , new object [ ] { "Sub1" , u . Name , new object [ ] { "Sub2" , u . Name } } } ) ;
112
+ var result = query . First ( ) ;
113
+
114
+ Assert . That ( result . Length , Is . EqualTo ( 2 ) ) ;
115
+ Assert . That ( result [ 0 ] , Is . EqualTo ( "Root" ) ) ;
116
+ Assert . That ( result [ 1 ] , Is . TypeOf < object [ ] > ( ) ) ;
117
+
118
+ var nestedObjectArray = ( object [ ] ) result [ 1 ] ;
119
+ Assert . That ( nestedObjectArray . Length , Is . EqualTo ( 3 ) ) ;
120
+ Assert . That ( nestedObjectArray [ 0 ] , Is . EqualTo ( "Sub1" ) ) ;
121
+ Assert . That ( nestedObjectArray [ 1 ] , Is . EqualTo ( "ayende" ) ) ;
122
+ Assert . That ( nestedObjectArray [ 2 ] , Is . TypeOf < object [ ] > ( ) ) ;
123
+
124
+ var nestedNestedObjectArray = ( object [ ] ) nestedObjectArray [ 2 ] ;
125
+ Assert . That ( nestedNestedObjectArray . Length , Is . EqualTo ( 2 ) ) ;
126
+ Assert . That ( nestedNestedObjectArray [ 0 ] , Is . EqualTo ( "Sub2" ) ) ;
127
+ Assert . That ( nestedNestedObjectArray [ 1 ] , Is . EqualTo ( "ayende" ) ) ;
128
+ }
30
129
}
31
- }
130
+ }
0 commit comments