@@ -286,14 +286,12 @@ describe('remove sheet - adjust formula dependencies', () => {
286286
287287describe ( 'removeSheet() recalculates formulas (issue #1116)' , ( ) => {
288288 it ( 'returns REF error if other sheet depends on the removed one' , ( ) => {
289- const engine = HyperFormula . buildEmpty ( )
290289 const table1Name = 'table1'
291290 const table2Name = 'table2'
292-
293- engine . addSheet ( table1Name )
294- engine . addSheet ( table2Name )
295- engine . setCellContents ( adr ( 'A1' , engine . getSheetId ( table2Name ) ) , 10 )
296- engine . setCellContents ( adr ( 'A1' , engine . getSheetId ( table1Name ) ) , `='${ table2Name } '!A1` )
291+ const engine = HyperFormula . buildFromSheets ( {
292+ [ table1Name ] : [ [ `='${ table2Name } '!A1` ] ] ,
293+ [ table2Name ] : [ [ 10 ] ] ,
294+ } )
297295
298296 expect ( engine . getCellValue ( adr ( 'A1' , engine . getSheetId ( table1Name ) ) ) ) . toBe ( 10 )
299297 expect ( engine . getCellValue ( adr ( 'A1' , engine . getSheetId ( table2Name ) ) ) ) . toBe ( 10 )
@@ -305,17 +303,14 @@ describe('removeSheet() recalculates formulas (issue #1116)', () => {
305303 } )
306304
307305 it ( 'returns REF error for chained dependencies across multiple sheets' , ( ) => {
308- const engine = HyperFormula . buildEmpty ( )
309306 const sheet1Name = 'Sheet1'
310307 const sheet2Name = 'Sheet2'
311308 const sheet3Name = 'Sheet3'
312-
313- engine . addSheet ( sheet1Name )
314- engine . addSheet ( sheet2Name )
315- engine . addSheet ( sheet3Name )
316- engine . setCellContents ( adr ( 'A1' , engine . getSheetId ( sheet3Name ) ) , 42 )
317- engine . setCellContents ( adr ( 'A1' , engine . getSheetId ( sheet2Name ) ) , `='${ sheet3Name } '!A1*2` )
318- engine . setCellContents ( adr ( 'A1' , engine . getSheetId ( sheet1Name ) ) , `='${ sheet2Name } '!A1+2` )
309+ const engine = HyperFormula . buildFromSheets ( {
310+ [ sheet1Name ] : [ [ `='${ sheet2Name } '!A1+2` ] ] ,
311+ [ sheet2Name ] : [ [ `='${ sheet3Name } '!A1*2` ] ] ,
312+ [ sheet3Name ] : [ [ 42 ] ] ,
313+ } )
319314
320315 expect ( engine . getCellValue ( adr ( 'A1' , engine . getSheetId ( sheet2Name ) ) ) ) . toBe ( 84 )
321316 expect ( engine . getCellValue ( adr ( 'A1' , engine . getSheetId ( sheet1Name ) ) ) ) . toBe ( 86 )
@@ -327,15 +322,12 @@ describe('removeSheet() recalculates formulas (issue #1116)', () => {
327322 } )
328323
329324 it ( 'returns REF error for nested dependencies within same sheet referencing removed sheet' , ( ) => {
330- const engine = HyperFormula . buildEmpty ( )
331325 const sheet1Name = 'Sheet1'
332326 const removedSheetName = 'RemovedSheet'
333-
334- engine . addSheet ( sheet1Name )
335- engine . addSheet ( removedSheetName )
336- engine . setCellContents ( adr ( 'A1' , engine . getSheetId ( removedSheetName ) ) , 15 )
337- engine . setCellContents ( adr ( 'B1' , engine . getSheetId ( sheet1Name ) ) , `='${ removedSheetName } '!A1` )
338- engine . setCellContents ( adr ( 'A1' , engine . getSheetId ( sheet1Name ) ) , '=B1*2' )
327+ const engine = HyperFormula . buildFromSheets ( {
328+ [ sheet1Name ] : [ [ '=B1*2' , `='${ removedSheetName } '!A1` ] ] ,
329+ [ removedSheetName ] : [ [ 15 ] ] ,
330+ } )
339331
340332 expect ( engine . getCellValue ( adr ( 'B1' , engine . getSheetId ( sheet1Name ) ) ) ) . toBe ( 15 )
341333 expect ( engine . getCellValue ( adr ( 'A1' , engine . getSheetId ( sheet1Name ) ) ) ) . toBe ( 30 )
@@ -347,20 +339,14 @@ describe('removeSheet() recalculates formulas (issue #1116)', () => {
347339 } )
348340
349341 it ( 'returns REF error for multiple cells from different sheets referencing removed sheet' , ( ) => {
350- const engine = HyperFormula . buildEmpty ( )
351342 const sheet1Name = 'Sheet1'
352343 const sheet2Name = 'Sheet2'
353344 const targetSheetName = 'TargetSheet'
354-
355- engine . addSheet ( sheet1Name )
356- engine . addSheet ( sheet2Name )
357- engine . addSheet ( targetSheetName )
358- engine . setCellContents ( adr ( 'A1' , engine . getSheetId ( targetSheetName ) ) , 5 )
359- engine . setCellContents ( adr ( 'B1' , engine . getSheetId ( targetSheetName ) ) , 7 )
360- engine . setCellContents ( adr ( 'A1' , engine . getSheetId ( sheet1Name ) ) , `='${ targetSheetName } '!A1` )
361- engine . setCellContents ( adr ( 'B1' , engine . getSheetId ( sheet1Name ) ) , `='${ targetSheetName } '!B1` )
362- engine . setCellContents ( adr ( 'A1' , engine . getSheetId ( sheet2Name ) ) , `='${ targetSheetName } '!A1+10` )
363- engine . setCellContents ( adr ( 'B1' , engine . getSheetId ( sheet2Name ) ) , `='${ targetSheetName } '!B1+20` )
345+ const engine = HyperFormula . buildFromSheets ( {
346+ [ sheet1Name ] : [ [ `='${ targetSheetName } '!A1` , `='${ targetSheetName } '!B1` ] ] ,
347+ [ sheet2Name ] : [ [ `='${ targetSheetName } '!A1+10` , `='${ targetSheetName } '!B1+20` ] ] ,
348+ [ targetSheetName ] : [ [ 5 , 7 ] ] ,
349+ } )
364350
365351 expect ( engine . getCellValue ( adr ( 'A1' , engine . getSheetId ( sheet1Name ) ) ) ) . toBe ( 5 )
366352 expect ( engine . getCellValue ( adr ( 'B1' , engine . getSheetId ( sheet1Name ) ) ) ) . toBe ( 7 )
@@ -376,17 +362,12 @@ describe('removeSheet() recalculates formulas (issue #1116)', () => {
376362 } )
377363
378364 it ( 'returns REF error for formulas with mixed operations combining removed sheet references' , ( ) => {
379- const engine = HyperFormula . buildEmpty ( )
380365 const sheet1Name = 'Sheet1'
381366 const removedSheetName = 'RemovedSheet'
382-
383- engine . addSheet ( sheet1Name )
384- engine . addSheet ( removedSheetName )
385- engine . setCellContents ( adr ( 'A1' , engine . getSheetId ( sheet1Name ) ) , 100 )
386- engine . setCellContents ( adr ( 'A1' , engine . getSheetId ( removedSheetName ) ) , 50 )
387- engine . setCellContents ( adr ( 'B1' , engine . getSheetId ( removedSheetName ) ) , 25 )
388- engine . setCellContents ( adr ( 'B1' , engine . getSheetId ( sheet1Name ) ) , `='${ removedSheetName } '!A1 + A1` )
389- engine . setCellContents ( adr ( 'C1' , engine . getSheetId ( sheet1Name ) ) , `='${ removedSheetName } '!B1 * 2` )
367+ const engine = HyperFormula . buildFromSheets ( {
368+ [ sheet1Name ] : [ [ 100 , `='${ removedSheetName } '!A1 + A1` , `='${ removedSheetName } '!B1 * 2` ] ] ,
369+ [ removedSheetName ] : [ [ 50 , 25 ] ] ,
370+ } )
390371
391372 expect ( engine . getCellValue ( adr ( 'B1' , engine . getSheetId ( sheet1Name ) ) ) ) . toBe ( 150 )
392373 expect ( engine . getCellValue ( adr ( 'C1' , engine . getSheetId ( sheet1Name ) ) ) ) . toBe ( 50 )
@@ -398,24 +379,21 @@ describe('removeSheet() recalculates formulas (issue #1116)', () => {
398379 } )
399380
400381 it ( 'returns REF error for formulas with multi-cell ranges from removed sheet' , ( ) => {
401- const engine = HyperFormula . buildEmpty ( )
402382 const sheet1Name = 'Sheet1'
403383 const dataSheetName = 'DataSheet'
404-
405- engine . addSheet ( sheet1Name )
406- engine . addSheet ( dataSheetName )
407- engine . setCellContents ( adr ( 'A1' , engine . getSheetId ( dataSheetName ) ) , 1 )
408- engine . setCellContents ( adr ( 'B1' , engine . getSheetId ( dataSheetName ) ) , 2 )
409- engine . setCellContents ( adr ( 'A2' , engine . getSheetId ( dataSheetName ) ) , 3 )
410- engine . setCellContents ( adr ( 'B2' , engine . getSheetId ( dataSheetName ) ) , 4 )
411- engine . setCellContents ( adr ( 'A3' , engine . getSheetId ( dataSheetName ) ) , 5 )
412- engine . setCellContents ( adr ( 'B3' , engine . getSheetId ( dataSheetName ) ) , 6 )
413- engine . setCellContents ( adr ( 'A4' , engine . getSheetId ( dataSheetName ) ) , 7 )
414- engine . setCellContents ( adr ( 'B4' , engine . getSheetId ( dataSheetName ) ) , 8 )
415- engine . setCellContents ( adr ( 'A5' , engine . getSheetId ( dataSheetName ) ) , 9 )
416- engine . setCellContents ( adr ( 'B5' , engine . getSheetId ( dataSheetName ) ) , 10 )
417- engine . setCellContents ( adr ( 'A1' , engine . getSheetId ( sheet1Name ) ) , `=SUM('${ dataSheetName } '!A1:B5)` )
418- engine . setCellContents ( adr ( 'A2' , engine . getSheetId ( sheet1Name ) ) , `=MEDIAN('${ dataSheetName } '!A1:B5)` )
384+ const engine = HyperFormula . buildFromSheets ( {
385+ [ sheet1Name ] : [
386+ [ `=SUM('${ dataSheetName } '!A1:B5)` ] ,
387+ [ `=MEDIAN('${ dataSheetName } '!A1:B5)` ] ,
388+ ] ,
389+ [ dataSheetName ] : [
390+ [ 1 , 2 ] ,
391+ [ 3 , 4 ] ,
392+ [ 5 , 6 ] ,
393+ [ 7 , 8 ] ,
394+ [ 9 , 10 ] ,
395+ ] ,
396+ } )
419397
420398 expect ( engine . getCellValue ( adr ( 'A1' , engine . getSheetId ( sheet1Name ) ) ) ) . toBe ( 55 )
421399 expect ( engine . getCellValue ( adr ( 'A2' , engine . getSheetId ( sheet1Name ) ) ) ) . toBe ( 5.5 )
@@ -427,16 +405,14 @@ describe('removeSheet() recalculates formulas (issue #1116)', () => {
427405 } )
428406
429407 it ( 'returns REF error for named expressions referencing removed sheet' , ( ) => {
430- const engine = HyperFormula . buildEmpty ( )
431408 const sheet1Name = 'Sheet1'
432409 const removedSheetName = 'RemovedSheet'
433-
434- engine . addSheet ( sheet1Name )
435- engine . addSheet ( removedSheetName )
436- engine . addNamedExpression ( 'MyValue' , `='${ removedSheetName } '!$A$1` )
437- engine . setCellContents ( adr ( 'A1' , engine . getSheetId ( removedSheetName ) ) , 99 )
438- engine . setCellContents ( adr ( 'A1' , engine . getSheetId ( sheet1Name ) ) , '=MyValue' )
439- engine . setCellContents ( adr ( 'A2' , engine . getSheetId ( sheet1Name ) ) , '=MyValue*2' )
410+ const engine = HyperFormula . buildFromSheets ( {
411+ [ sheet1Name ] : [ [ '=MyValue' ] , [ '=MyValue*2' ] ] ,
412+ [ removedSheetName ] : [ [ 99 ] ]
413+ } , { } , [
414+ { name : 'MyValue' , expression : `='${ removedSheetName } '!$A$1` }
415+ ] )
440416
441417 expect ( engine . getCellValue ( adr ( 'A1' , engine . getSheetId ( sheet1Name ) ) ) ) . toBe ( 99 )
442418 expect ( engine . getCellValue ( adr ( 'A2' , engine . getSheetId ( sheet1Name ) ) ) ) . toBe ( 198 )
0 commit comments