summaryrefslogtreecommitdiff
path: root/sheetview_test.go
diff options
context:
space:
mode:
authorxuri <xuri.me@gmail.com>2022-09-29 22:00:21 +0800
committerxuri <xuri.me@gmail.com>2022-09-29 22:04:50 +0800
commit53a495563a2b9acf09ae45eae05d5f33aa242a87 (patch)
tree36ae707b1e38e755063aec7c13e878126a128c84 /sheetview_test.go
parentefcf599dfe2ec25f10c4d55513a5648addfe989b (diff)
This closes #1358, made a refactor with breaking changes, see details:
This made a refactor with breaking changes: Motivation and Context When I decided to add set horizontal centered support for this library to resolve #1358, the reason I made this huge breaking change was: - There are too many exported types for set sheet view, properties, and format properties, although a function using the functional options pattern can be optimized by returning an anonymous function, these types or property set or get function has no binding categorization, so I change these functions like `SetAppProps` to accept a pointer of options structure. - Users can not easily find out which properties should be in the `SetSheetPrOptions` or `SetSheetFormatPr` categories - Nested properties cannot proceed modify easily Introduce 5 new export data types: `HeaderFooterOptions`, `PageLayoutMarginsOptions`, `PageLayoutOptions`, `SheetPropsOptions`, and `ViewOptions` Rename 4 exported data types: - Rename `PivotTableOption` to `PivotTableOptions` - Rename `FormatHeaderFooter` to `HeaderFooterOptions` - Rename `FormatSheetProtection` to `SheetProtectionOptions` - Rename `SparklineOption` to `SparklineOptions` Remove 54 exported types: `AutoPageBreaks`, `BaseColWidth`, `BlackAndWhite`, `CodeName`, `CustomHeight`, `Date1904`, `DefaultColWidth`, `DefaultGridColor`, `DefaultRowHeight`, `EnableFormatConditionsCalculation`, `FilterPrivacy`, `FirstPageNumber`, `FitToHeight`, `FitToPage`, `FitToWidth`, `OutlineSummaryBelow`, `PageLayoutOption`, `PageLayoutOptionPtr`, `PageLayoutOrientation`, `PageLayoutPaperSize`, `PageLayoutScale`, `PageMarginBottom`, `PageMarginFooter`, `PageMarginHeader`, `PageMarginLeft`, `PageMarginRight`, `PageMarginsOptions`, `PageMarginsOptionsPtr`, `PageMarginTop`, `Published`, `RightToLeft`, `SheetFormatPrOptions`, `SheetFormatPrOptionsPtr`, `SheetPrOption`, `SheetPrOptionPtr`, `SheetViewOption`, `SheetViewOptionPtr`, `ShowFormulas`, `ShowGridLines`, `ShowRowColHeaders`, `ShowRuler`, `ShowZeros`, `TabColorIndexed`, `TabColorRGB`, `TabColorTheme`, `TabColorTint`, `ThickBottom`, `ThickTop`, `TopLeftCell`, `View`, `WorkbookPrOption`, `WorkbookPrOptionPtr`, `ZeroHeight` and `ZoomScale` Remove 2 exported constants: `OrientationPortrait` and `OrientationLandscape` Change 8 functions: - Change the `func (f *File) SetPageLayout(sheet string, opts ...PageLayoutOption) error` to `func (f *File) SetPageLayout(sheet string, opts *PageLayoutOptions) error` - Change the `func (f *File) GetPageLayout(sheet string, opts ...PageLayoutOptionPtr) error` to `func (f *File) GetPageLayout(sheet string) (PageLayoutOptions, error)` - Change the `func (f *File) SetPageMargins(sheet string, opts ...PageMarginsOptions) error` to `func (f *File) SetPageMargins(sheet string, opts *PageLayoutMarginsOptions) error` - Change the `func (f *File) GetPageMargins(sheet string, opts ...PageMarginsOptionsPtr) error` to `func (f *File) GetPageMargins(sheet string) (PageLayoutMarginsOptions, error)` - Change the `func (f *File) SetSheetViewOptions(sheet string, viewIndex int, opts ...SheetViewOption) error` to `func (f *File) SetSheetView(sheet string, viewIndex int, opts *ViewOptions) error` - Change the `func (f *File) GetSheetViewOptions(sheet string, viewIndex int, opts ...SheetViewOptionPtr) error` to `func (f *File) GetSheetView(sheet string, viewIndex int) (ViewOptions, error)` - Change the `func (f *File) SetWorkbookPrOptions(opts ...WorkbookPrOption) error` to `func (f *File) SetWorkbookProps(opts *WorkbookPropsOptions) error` - Change the `func (f *File) GetWorkbookPrOptions(opts ...WorkbookPrOptionPtr) error` to `func (f *File) GetWorkbookProps() (WorkbookPropsOptions, error)` Introduce new function to instead of existing functions: - New function `func (f *File) SetSheetProps(sheet string, opts *SheetPropsOptions) error` instead of `func (f *File) SetSheetPrOptions(sheet string, opts ...SheetPrOption) error` and `func (f *File) SetSheetFormatPr(sheet string, opts ...SheetFormatPrOption
Diffstat (limited to 'sheetview_test.go')
-rw-r--r--sheetview_test.go242
1 files changed, 37 insertions, 205 deletions
diff --git a/sheetview_test.go b/sheetview_test.go
index 65c4f51..8d022a2 100644
--- a/sheetview_test.go
+++ b/sheetview_test.go
@@ -1,218 +1,50 @@
package excelize
import (
- "fmt"
"testing"
"github.com/stretchr/testify/assert"
)
-var _ = []SheetViewOption{
- DefaultGridColor(true),
- ShowFormulas(false),
- ShowGridLines(true),
- ShowRowColHeaders(true),
- ShowZeros(true),
- RightToLeft(false),
- ShowRuler(false),
- View("pageLayout"),
- TopLeftCell("B2"),
- ZoomScale(100),
- // SheetViewOptionPtr are also SheetViewOption
- new(DefaultGridColor),
- new(ShowFormulas),
- new(ShowGridLines),
- new(ShowRowColHeaders),
- new(ShowZeros),
- new(RightToLeft),
- new(ShowRuler),
- new(View),
- new(TopLeftCell),
- new(ZoomScale),
-}
-
-var _ = []SheetViewOptionPtr{
- (*DefaultGridColor)(nil),
- (*ShowFormulas)(nil),
- (*ShowGridLines)(nil),
- (*ShowRowColHeaders)(nil),
- (*ShowZeros)(nil),
- (*RightToLeft)(nil),
- (*ShowRuler)(nil),
- (*View)(nil),
- (*TopLeftCell)(nil),
- (*ZoomScale)(nil),
-}
-
-func ExampleFile_SetSheetViewOptions() {
- f := NewFile()
- const sheet = "Sheet1"
-
- if err := f.SetSheetViewOptions(sheet, 0,
- DefaultGridColor(false),
- ShowFormulas(true),
- ShowGridLines(true),
- ShowRowColHeaders(true),
- RightToLeft(false),
- ShowRuler(false),
- View("pageLayout"),
- TopLeftCell("C3"),
- ZoomScale(80),
- ); err != nil {
- fmt.Println(err)
- }
-
- var zoomScale ZoomScale
- fmt.Println("Default:")
- fmt.Println("- zoomScale: 80")
-
- if err := f.SetSheetViewOptions(sheet, 0, ZoomScale(500)); err != nil {
- fmt.Println(err)
- }
-
- if err := f.GetSheetViewOptions(sheet, 0, &zoomScale); err != nil {
- fmt.Println(err)
- }
-
- fmt.Println("Used out of range value:")
- fmt.Println("- zoomScale:", zoomScale)
-
- if err := f.SetSheetViewOptions(sheet, 0, ZoomScale(123)); err != nil {
- fmt.Println(err)
- }
-
- if err := f.GetSheetViewOptions(sheet, 0, &zoomScale); err != nil {
- fmt.Println(err)
- }
-
- fmt.Println("Used correct value:")
- fmt.Println("- zoomScale:", zoomScale)
-
- // Output:
- // Default:
- // - zoomScale: 80
- // Used out of range value:
- // - zoomScale: 80
- // Used correct value:
- // - zoomScale: 123
-}
-
-func ExampleFile_GetSheetViewOptions() {
+func TestSetView(t *testing.T) {
f := NewFile()
- const sheet = "Sheet1"
-
- var (
- defaultGridColor DefaultGridColor
- showFormulas ShowFormulas
- showGridLines ShowGridLines
- showRowColHeaders ShowRowColHeaders
- showZeros ShowZeros
- rightToLeft RightToLeft
- showRuler ShowRuler
- view View
- topLeftCell TopLeftCell
- zoomScale ZoomScale
- )
-
- if err := f.GetSheetViewOptions(sheet, 0,
- &defaultGridColor,
- &showFormulas,
- &showGridLines,
- &showRowColHeaders,
- &showZeros,
- &rightToLeft,
- &showRuler,
- &view,
- &topLeftCell,
- &zoomScale,
- ); err != nil {
- fmt.Println(err)
- }
-
- fmt.Println("Default:")
- fmt.Println("- defaultGridColor:", defaultGridColor)
- fmt.Println("- showFormulas:", showFormulas)
- fmt.Println("- showGridLines:", showGridLines)
- fmt.Println("- showRowColHeaders:", showRowColHeaders)
- fmt.Println("- showZeros:", showZeros)
- fmt.Println("- rightToLeft:", rightToLeft)
- fmt.Println("- showRuler:", showRuler)
- fmt.Println("- view:", view)
- fmt.Println("- topLeftCell:", `"`+topLeftCell+`"`)
- fmt.Println("- zoomScale:", zoomScale)
-
- if err := f.SetSheetViewOptions(sheet, 0, ShowGridLines(false)); err != nil {
- fmt.Println(err)
- }
-
- if err := f.GetSheetViewOptions(sheet, 0, &showGridLines); err != nil {
- fmt.Println(err)
- }
-
- if err := f.SetSheetViewOptions(sheet, 0, ShowZeros(false)); err != nil {
- fmt.Println(err)
- }
-
- if err := f.GetSheetViewOptions(sheet, 0, &showZeros); err != nil {
- fmt.Println(err)
- }
-
- if err := f.SetSheetViewOptions(sheet, 0, View("pageLayout")); err != nil {
- fmt.Println(err)
- }
-
- if err := f.GetSheetViewOptions(sheet, 0, &view); err != nil {
- fmt.Println(err)
- }
-
- if err := f.SetSheetViewOptions(sheet, 0, TopLeftCell("B2")); err != nil {
- fmt.Println(err)
- }
-
- if err := f.GetSheetViewOptions(sheet, 0, &topLeftCell); err != nil {
- fmt.Println(err)
- }
-
- fmt.Println("After change:")
- fmt.Println("- showGridLines:", showGridLines)
- fmt.Println("- showZeros:", showZeros)
- fmt.Println("- view:", view)
- fmt.Println("- topLeftCell:", topLeftCell)
-
- // Output:
- // Default:
- // - defaultGridColor: true
- // - showFormulas: false
- // - showGridLines: true
- // - showRowColHeaders: true
- // - showZeros: true
- // - rightToLeft: false
- // - showRuler: true
- // - view: normal
- // - topLeftCell: ""
- // - zoomScale: 0
- // After change:
- // - showGridLines: false
- // - showZeros: false
- // - view: pageLayout
- // - topLeftCell: B2
-}
-
-func TestSheetViewOptionsErrors(t *testing.T) {
- f := NewFile()
- const sheet = "Sheet1"
-
- assert.NoError(t, f.GetSheetViewOptions(sheet, 0))
- assert.NoError(t, f.GetSheetViewOptions(sheet, -1))
- assert.Error(t, f.GetSheetViewOptions(sheet, 1))
- assert.Error(t, f.GetSheetViewOptions(sheet, -2))
- assert.NoError(t, f.SetSheetViewOptions(sheet, 0))
- assert.NoError(t, f.SetSheetViewOptions(sheet, -1))
- assert.Error(t, f.SetSheetViewOptions(sheet, 1))
- assert.Error(t, f.SetSheetViewOptions(sheet, -2))
-
+ assert.NoError(t, f.SetSheetView("Sheet1", -1, nil))
ws, ok := f.Sheet.Load("xl/worksheets/sheet1.xml")
assert.True(t, ok)
ws.(*xlsxWorksheet).SheetViews = nil
- assert.NoError(t, f.GetSheetViewOptions(sheet, 0))
+ expected := ViewOptions{
+ DefaultGridColor: boolPtr(false),
+ RightToLeft: boolPtr(false),
+ ShowFormulas: boolPtr(false),
+ ShowGridLines: boolPtr(false),
+ ShowRowColHeaders: boolPtr(false),
+ ShowRuler: boolPtr(false),
+ ShowZeros: boolPtr(false),
+ TopLeftCell: stringPtr("A1"),
+ View: stringPtr("normal"),
+ ZoomScale: float64Ptr(120),
+ }
+ assert.NoError(t, f.SetSheetView("Sheet1", 0, &expected))
+ opts, err := f.GetSheetView("Sheet1", 0)
+ assert.NoError(t, err)
+ assert.Equal(t, expected, opts)
+ // Test set sheet view options with invalid view index.
+ assert.EqualError(t, f.SetSheetView("Sheet1", 1, nil), "view index 1 out of range")
+ assert.EqualError(t, f.SetSheetView("Sheet1", -2, nil), "view index -2 out of range")
+ // Test set sheet view options on not exists worksheet.
+ assert.EqualError(t, f.SetSheetView("SheetN", 0, nil), "sheet SheetN does not exist")
+}
+
+func TestGetView(t *testing.T) {
+ f := NewFile()
+ _, err := f.getSheetView("SheetN", 0)
+ assert.EqualError(t, err, "sheet SheetN does not exist")
+ // Test get sheet view options with invalid view index.
+ _, err = f.GetSheetView("Sheet1", 1)
+ assert.EqualError(t, err, "view index 1 out of range")
+ _, err = f.GetSheetView("Sheet1", -2)
+ assert.EqualError(t, err, "view index -2 out of range")
+ // Test get sheet view options on not exists worksheet.
+ _, err = f.GetSheetView("SheetN", 0)
+ assert.EqualError(t, err, "sheet SheetN does not exist")
}