@@ -644,3 +644,51 @@ func TestCheckSheetName(t *testing.T) {
644
644
assert .EqualError (t , checkSheetName ("'Sheet" ), ErrSheetNameSingleQuote .Error ())
645
645
assert .EqualError (t , checkSheetName ("Sheet'" ), ErrSheetNameSingleQuote .Error ())
646
646
}
647
+
648
+ func TestSheetDimension (t * testing.T ) {
649
+ f := NewFile ()
650
+ const sheetName = "Sheet1"
651
+ // Test get a new worksheet dimension
652
+ dimension , err := f .GetSheetDimension (sheetName )
653
+ assert .NoError (t , err )
654
+ assert .Equal (t , "A1" , dimension )
655
+ // Test remove the worksheet dimension
656
+ assert .NoError (t , f .SetSheetDimension (sheetName , "" ))
657
+ assert .NoError (t , err )
658
+ dimension , err = f .GetSheetDimension (sheetName )
659
+ assert .NoError (t , err )
660
+ assert .Equal (t , "" , dimension )
661
+ // Test set the worksheet dimension
662
+ for _ , excepted := range []string {"A1" , "A1:D5" , "A1:XFD1048576" , "a1" , "A1:d5" } {
663
+ err = f .SetSheetDimension (sheetName , excepted )
664
+ assert .NoError (t , err )
665
+ dimension , err := f .GetSheetDimension (sheetName )
666
+ assert .NoError (t , err )
667
+ assert .Equal (t , strings .ToUpper (excepted ), dimension )
668
+ }
669
+ // Test set the worksheet dimension with invalid range reference or no exists worksheet
670
+ for _ , c := range []struct {
671
+ sheetName string
672
+ rangeRef string
673
+ err string
674
+ }{
675
+ {"Sheet1" , "A-1" , "cannot convert cell \" A-1\" to coordinates: invalid cell name \" A-1\" " },
676
+ {"Sheet1" , "A1:B-1" , "cannot convert cell \" B-1\" to coordinates: invalid cell name \" B-1\" " },
677
+ {"Sheet1" , "A1:XFD1048577" , "row number exceeds maximum limit" },
678
+ {"Sheet1" , "123" , "cannot convert cell \" 123\" to coordinates: invalid cell name \" 123\" " },
679
+ {"Sheet1" , "A:B" , "cannot convert cell \" A\" to coordinates: invalid cell name \" A\" " },
680
+ {"Sheet1" , ":B10" , "cannot convert cell \" \" to coordinates: invalid cell name \" \" " },
681
+ {"Sheet1" , "XFE1" , "the column number must be greater than or equal to 1 and less than or equal to 16384" },
682
+ {"Sheet1" , "A1048577" , "row number exceeds maximum limit" },
683
+ {"Sheet1" , "ZZZ" , "cannot convert cell \" ZZZ\" to coordinates: invalid cell name \" ZZZ\" " },
684
+ {"SheetN" , "A1" , "sheet SheetN does not exist" },
685
+ {"Sheet1" , "A1:B3:D5" , ErrParameterInvalid .Error ()},
686
+ } {
687
+ err = f .SetSheetDimension (c .sheetName , c .rangeRef )
688
+ assert .EqualError (t , err , c .err )
689
+ }
690
+ // Test get the worksheet dimension no exists worksheet
691
+ dimension , err = f .GetSheetDimension ("SheetN" )
692
+ assert .Empty (t , dimension )
693
+ assert .EqualError (t , err , "sheet SheetN does not exist" )
694
+ }
0 commit comments