@@ -547,6 +547,43 @@ func TestDeleteSheet(t *testing.T) {
547
547
assert .NoError (t , f .SaveAs (filepath .Join ("test" , "TestDeleteSheet2.xlsx" )))
548
548
}
549
549
550
+ func TestMoveSheet (t * testing.T ) {
551
+ f := NewFile ()
552
+ defer f .Close ()
553
+ for i := 2 ; i < 6 ; i ++ {
554
+ _ , err := f .NewSheet ("Sheet" + strconv .Itoa (i ))
555
+ assert .NoError (t , err )
556
+ }
557
+ assert .Equal (t , []string {"Sheet1" , "Sheet2" , "Sheet3" , "Sheet4" , "Sheet5" }, f .GetSheetList ())
558
+
559
+ // Move target to first position
560
+ assert .NoError (t , f .MoveSheet ("Sheet2" , "Sheet1" ))
561
+ assert .Equal (t , []string {"Sheet2" , "Sheet1" , "Sheet3" , "Sheet4" , "Sheet5" }, f .GetSheetList ())
562
+ assert .Equal (t , "Sheet1" , f .GetSheetName (f .GetActiveSheetIndex ()))
563
+
564
+ // Move target to last position
565
+ assert .NoError (t , f .MoveSheet ("Sheet2" , "Sheet5" ))
566
+ assert .NoError (t , f .MoveSheet ("Sheet5" , "Sheet2" ))
567
+ assert .Equal (t , []string {"Sheet1" , "Sheet3" , "Sheet4" , "Sheet5" , "Sheet2" }, f .GetSheetList ())
568
+
569
+ // Move target to same position
570
+ assert .NoError (t , f .MoveSheet ("Sheet1" , "Sheet1" ))
571
+ assert .Equal (t , []string {"Sheet1" , "Sheet3" , "Sheet4" , "Sheet5" , "Sheet2" }, f .GetSheetList ())
572
+
573
+ // Test move sheet with invalid sheet name
574
+ assert .Equal (t , ErrSheetNameBlank , f .MoveSheet ("" , "Sheet2" ))
575
+ assert .Equal (t , ErrSheetNameBlank , f .MoveSheet ("Sheet1" , "" ))
576
+
577
+ // Test move sheet on not exists worksheet
578
+ assert .Equal (t , ErrSheetNotExist {"SheetN" }, f .MoveSheet ("SheetN" , "Sheet2" ))
579
+ assert .Equal (t , ErrSheetNotExist {"SheetN" }, f .MoveSheet ("Sheet1" , "SheetN" ))
580
+
581
+ // Test move sheet with unsupported workbook charset
582
+ f .WorkBook = nil
583
+ f .Pkg .Store ("xl/workbook.xml" , MacintoshCyrillicCharset )
584
+ assert .EqualError (t , f .MoveSheet ("Sheet2" , "Sheet1" ), "XML syntax error on line 1: invalid UTF-8" )
585
+ }
586
+
550
587
func TestDeleteAndAdjustDefinedNames (t * testing.T ) {
551
588
deleteAndAdjustDefinedNames (nil , 0 )
552
589
deleteAndAdjustDefinedNames (& xlsxWorkbook {}, 0 )
0 commit comments