@@ -118,5 +118,85 @@ public void CatTest()
118
118
var list3 = List < string > . Cat ( list1 , list2 ) ;
119
119
Assert . AreEqual ( "[now,, How, cow?, brown]" , list3 . ToReadableString ( ) ) ;
120
120
}
121
+
122
+ [ TestMethod ]
123
+ public void FoldRightSumTest ( )
124
+ {
125
+ var data = new [ ] { 1 , 2 , 3 , 4 , 5 } ;
126
+ var list = data . Aggregate ( List < int > . Empty , ( current , word ) => List < int > . Cons ( word , current ) ) ;
127
+
128
+ var sum = List < int > . FoldRight ( list , 0 , ( x , y ) => x + y ) ;
129
+ Assert . AreEqual ( 15 , sum ) ;
130
+ }
131
+
132
+ [ TestMethod ]
133
+ public void FoldLeftSumTest ( )
134
+ {
135
+ var data = new [ ] { 1 , 2 , 3 , 4 , 5 } ;
136
+ var list = data . Aggregate ( List < int > . Empty , ( current , word ) => List < int > . Cons ( word , current ) ) ;
137
+
138
+ var sum = List < int > . FoldLeft ( list , 0 , ( x , y ) => x + y ) ;
139
+ Assert . AreEqual ( 15 , sum ) ;
140
+ }
141
+
142
+ [ TestMethod ]
143
+ public void FoldLeftRSumTest ( )
144
+ {
145
+ var data = new [ ] { 1 , 2 , 3 , 4 , 5 } ;
146
+ var list = data . Aggregate ( List < int > . Empty , ( current , word ) => List < int > . Cons ( word , current ) ) ;
147
+
148
+ var sum = List < int > . FoldLeftR ( list , 0 , ( x , y ) => x + y ) ;
149
+ Assert . AreEqual ( 15 , sum ) ;
150
+ }
151
+
152
+ [ TestMethod ]
153
+ public void FoldRightLSumTest ( )
154
+ {
155
+ var data = new [ ] { 1 , 2 , 3 , 4 , 5 } ;
156
+ var list = data . Aggregate ( List < int > . Empty , ( current , word ) => List < int > . Cons ( word , current ) ) ;
157
+
158
+ var sum = List < int > . FoldRightL ( list , 0 , ( x , y ) => x + y ) ;
159
+ Assert . AreEqual ( 15 , sum ) ;
160
+ }
161
+
162
+ [ TestMethod ]
163
+ public void FoldRightProductTest ( )
164
+ {
165
+ var data = new [ ] { 1.0 , 2.0 , 3.0 , 4.0 , 5.0 } ;
166
+ var list = data . Aggregate ( List < double > . Empty , ( current , word ) => List < double > . Cons ( word , current ) ) ;
167
+
168
+ var product = List < double > . FoldRight ( list , 1.0 , ( x , y ) => x * y ) ;
169
+ Assert . AreEqual ( 120.0 , product ) ;
170
+ }
171
+
172
+ [ TestMethod ]
173
+ public void FoldLeftProductTest ( )
174
+ {
175
+ var data = new [ ] { 1.0 , 2.0 , 3.0 , 4.0 , 5.0 } ;
176
+ var list = data . Aggregate ( List < double > . Empty , ( current , word ) => List < double > . Cons ( word , current ) ) ;
177
+
178
+ var product = List < double > . FoldLeft ( list , 1.0 , ( x , y ) => x * y ) ;
179
+ Assert . AreEqual ( 120.0 , product ) ;
180
+ }
181
+
182
+ [ TestMethod ]
183
+ public void FoldLeftRProductTest ( )
184
+ {
185
+ var data = new [ ] { 1.0 , 2.0 , 3.0 , 4.0 , 5.0 } ;
186
+ var list = data . Aggregate ( List < double > . Empty , ( current , word ) => List < double > . Cons ( word , current ) ) ;
187
+
188
+ var product = List < double > . FoldLeftR ( list , 1.0 , ( x , y ) => x * y ) ;
189
+ Assert . AreEqual ( 120.0 , product ) ;
190
+ }
191
+
192
+ [ TestMethod ]
193
+ public void FoldRightLProductTest ( )
194
+ {
195
+ var data = new [ ] { 1.0 , 2.0 , 3.0 , 4.0 , 5.0 } ;
196
+ var list = data . Aggregate ( List < double > . Empty , ( current , word ) => List < double > . Cons ( word , current ) ) ;
197
+
198
+ var product = List < double > . FoldRightL ( list , 1.0 , ( x , y ) => x * y ) ;
199
+ Assert . AreEqual ( 120.0 , product ) ;
200
+ }
121
201
}
122
202
}
0 commit comments