@@ -139,8 +139,8 @@ describe('Function XLOOKUP', () => {
139
139
140
140
expect ( engine . getCellValue ( adr ( 'A1' ) ) ) . toEqualError ( detailedError ( ErrorType . NA , ErrorMessage . ValueNotFound ) )
141
141
expect ( engine . getCellValue ( adr ( 'A2' ) ) ) . toEqualError ( detailedError ( ErrorType . NA , ErrorMessage . ValueNotFound ) )
142
- expect ( engine . getCellValue ( adr ( 'A3' ) ) ) . toEqual ( " not found" )
143
- expect ( engine . getCellValue ( adr ( 'A4' ) ) ) . toEqual ( " not found" )
142
+ expect ( engine . getCellValue ( adr ( 'A3' ) ) ) . toEqual ( ' not found' )
143
+ expect ( engine . getCellValue ( adr ( 'A4' ) ) ) . toEqual ( ' not found' )
144
144
} )
145
145
146
146
it ( 'works when returnArray is shifted (verical search)' , ( ) => {
@@ -172,24 +172,45 @@ describe('Function XLOOKUP', () => {
172
172
expect ( engine . getCellValue ( adr ( 'A1' ) ) ) . toEqual ( 'b' )
173
173
} )
174
174
175
- it ( 'works when lookupArray is a single cell' , ( ) => {
176
- const engine = HyperFormula . buildFromArray ( [
177
- [ '=XLOOKUP(1, B1:B1, C1:C1)' , 1 , 'a' , 'horizontal' ] , // lookupArray: single cell, returnArray: single cell
178
- [ '=XLOOKUP(1, B1, C1:C1)' , '' , 'vertical' ] , // lookupArray: single cell, returnArray: single cell
179
- [ '=XLOOKUP(1, B1:B1, C1:C2)' ] , // lookupArray: single cell, returnArray: vertical range
180
- [ ] ,
181
- [ '=XLOOKUP(1, B1, C1:C2)' ] , // lookupArray: single cell, returnArray: vertical range
182
- [ ] ,
183
- [ '=XLOOKUP(1, B1:B1, C1:D1)' ] , // lookupArray: single cell, returnArray: horizontal range
184
- [ '=XLOOKUP(1, B1, C1:D1)' ] , // lookupArray: single cell, returnArray: horizontal range
185
- ] )
186
-
187
- expect ( engine . getCellValue ( adr ( 'A1' ) ) ) . toEqual ( 'a' )
188
- expect ( engine . getCellValue ( adr ( 'A2' ) ) ) . toEqual ( 'a' )
189
- expect ( engine . getRangeValues ( AbsoluteCellRange . spanFrom ( adr ( 'A3' ) , 1 , 2 ) ) ) . toEqual ( [ [ 'a' ] , [ 'vertical' ] ] )
190
- expect ( engine . getRangeValues ( AbsoluteCellRange . spanFrom ( adr ( 'A5' ) , 1 , 2 ) ) ) . toEqual ( [ [ 'a' ] , [ 'vertical' ] ] )
191
- expect ( engine . getRangeValues ( AbsoluteCellRange . spanFrom ( adr ( 'A7' ) , 2 , 1 ) ) ) . toEqual ( [ [ 'a' , 'horizontal' ] ] )
192
- expect ( engine . getRangeValues ( AbsoluteCellRange . spanFrom ( adr ( 'A8' ) , 2 , 1 ) ) ) . toEqual ( [ [ 'a' , 'horizontal' ] ] )
175
+ describe ( 'when lookupArray is a single cell' , ( ) => {
176
+ it ( 'works when returnArray is also a single cell' , ( ) => {
177
+ const engine = HyperFormula . buildFromArray ( [
178
+ [ '=XLOOKUP(1, B1:B1, C1:C1)' , 1 , 'a' ] ,
179
+ [ '=XLOOKUP(1, B1, C1:C1)' ] ,
180
+ ] )
181
+
182
+ expect ( engine . getCellValue ( adr ( 'A1' ) ) ) . toEqual ( 'a' )
183
+ expect ( engine . getCellValue ( adr ( 'A2' ) ) ) . toEqual ( 'a' )
184
+ } )
185
+
186
+ it ( 'works when returnArray is a vertical range' , ( ) => {
187
+ const engine = HyperFormula . buildFromArray ( [
188
+ [ '=XLOOKUP(1, B1:B1, A5:A6)' , 1 ] ,
189
+ [ ] ,
190
+ [ '=XLOOKUP(1, B1, A5:A6)' ] ,
191
+ [ ] ,
192
+ [ 'b' ] ,
193
+ [ 'c' ]
194
+ ] )
195
+
196
+ expect ( engine . getCellValue ( adr ( 'A1' ) ) ) . toEqual ( 'b' )
197
+ expect ( engine . getCellValue ( adr ( 'A2' ) ) ) . toEqual ( 'c' )
198
+ expect ( engine . getCellValue ( adr ( 'A3' ) ) ) . toEqual ( 'b' )
199
+ expect ( engine . getCellValue ( adr ( 'A4' ) ) ) . toEqual ( 'c' )
200
+ } )
201
+
202
+ it ( 'works when returnArray is a horizontal range' , ( ) => {
203
+ const engine = HyperFormula . buildFromArray ( [
204
+ [ 1 , 'b' , 'c' ] ,
205
+ [ '=XLOOKUP(1, A1:A1, B1:C1)' ] ,
206
+ [ '=XLOOKUP(1, A1, B1:C1)' ] ,
207
+ ] )
208
+
209
+ expect ( engine . getCellValue ( adr ( 'A2' ) ) ) . toEqual ( 'b' )
210
+ expect ( engine . getCellValue ( adr ( 'B2' ) ) ) . toEqual ( 'c' )
211
+ expect ( engine . getCellValue ( adr ( 'A3' ) ) ) . toEqual ( 'b' )
212
+ expect ( engine . getCellValue ( adr ( 'B3' ) ) ) . toEqual ( 'c' )
213
+ } )
193
214
} )
194
215
195
216
it ( 'finds an empty cell' , ( ) => {
@@ -294,5 +315,7 @@ describe('Function XLOOKUP', () => {
294
315
} )
295
316
296
317
// TODO:
297
- // - single cell
298
- // - modes
318
+ // - debugger
319
+ // - review arraysize function
320
+ // - fix single cell
321
+ // - implementmodes
0 commit comments