sheet_test.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package excelize_test
  2. import (
  3. "fmt"
  4. "testing"
  5. "github.com/360EntSecGroup-Skylar/excelize/v2"
  6. "github.com/mohae/deepcopy"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func ExampleFile_SetPageLayout() {
  10. xl := excelize.NewFile()
  11. if err := xl.SetPageLayout(
  12. "Sheet1",
  13. excelize.PageLayoutOrientation(excelize.OrientationLandscape),
  14. ); err != nil {
  15. panic(err)
  16. }
  17. if err := xl.SetPageLayout(
  18. "Sheet1",
  19. excelize.PageLayoutPaperSize(10),
  20. ); err != nil {
  21. panic(err)
  22. }
  23. // Output:
  24. }
  25. func ExampleFile_GetPageLayout() {
  26. xl := excelize.NewFile()
  27. var (
  28. orientation excelize.PageLayoutOrientation
  29. paperSize excelize.PageLayoutPaperSize
  30. )
  31. if err := xl.GetPageLayout("Sheet1", &orientation); err != nil {
  32. panic(err)
  33. }
  34. if err := xl.GetPageLayout("Sheet1", &paperSize); err != nil {
  35. panic(err)
  36. }
  37. fmt.Println("Defaults:")
  38. fmt.Printf("- orientation: %q\n", orientation)
  39. fmt.Printf("- paper size: %d\n", paperSize)
  40. // Output:
  41. // Defaults:
  42. // - orientation: "portrait"
  43. // - paper size: 1
  44. }
  45. func TestPageLayoutOption(t *testing.T) {
  46. const sheet = "Sheet1"
  47. testData := []struct {
  48. container excelize.PageLayoutOptionPtr
  49. nonDefault excelize.PageLayoutOption
  50. }{
  51. {new(excelize.PageLayoutOrientation), excelize.PageLayoutOrientation(excelize.OrientationLandscape)},
  52. {new(excelize.PageLayoutPaperSize), excelize.PageLayoutPaperSize(10)},
  53. }
  54. for i, test := range testData {
  55. t.Run(fmt.Sprintf("TestData%d", i), func(t *testing.T) {
  56. opt := test.nonDefault
  57. t.Logf("option %T", opt)
  58. def := deepcopy.Copy(test.container).(excelize.PageLayoutOptionPtr)
  59. val1 := deepcopy.Copy(def).(excelize.PageLayoutOptionPtr)
  60. val2 := deepcopy.Copy(def).(excelize.PageLayoutOptionPtr)
  61. xl := excelize.NewFile()
  62. // Get the default value
  63. assert.NoError(t, xl.GetPageLayout(sheet, def), opt)
  64. // Get again and check
  65. assert.NoError(t, xl.GetPageLayout(sheet, val1), opt)
  66. if !assert.Equal(t, val1, def, opt) {
  67. t.FailNow()
  68. }
  69. // Set the same value
  70. assert.NoError(t, xl.SetPageLayout(sheet, val1), opt)
  71. // Get again and check
  72. assert.NoError(t, xl.GetPageLayout(sheet, val1), opt)
  73. if !assert.Equal(t, val1, def, "%T: value should not have changed", opt) {
  74. t.FailNow()
  75. }
  76. // Set a different value
  77. assert.NoError(t, xl.SetPageLayout(sheet, test.nonDefault), opt)
  78. assert.NoError(t, xl.GetPageLayout(sheet, val1), opt)
  79. // Get again and compare
  80. assert.NoError(t, xl.GetPageLayout(sheet, val2), opt)
  81. if !assert.Equal(t, val1, val2, "%T: value should not have changed", opt) {
  82. t.FailNow()
  83. }
  84. // Value should not be the same as the default
  85. if !assert.NotEqual(t, def, val1, "%T: value should have changed from default", opt) {
  86. t.FailNow()
  87. }
  88. // Restore the default value
  89. assert.NoError(t, xl.SetPageLayout(sheet, def), opt)
  90. assert.NoError(t, xl.GetPageLayout(sheet, val1), opt)
  91. if !assert.Equal(t, def, val1) {
  92. t.FailNow()
  93. }
  94. })
  95. }
  96. }
  97. func TestSetPageLayout(t *testing.T) {
  98. f := excelize.NewFile()
  99. // Test set page layout on not exists worksheet.
  100. assert.EqualError(t, f.SetPageLayout("SheetN"), "sheet SheetN is not exist")
  101. }
  102. func TestGetPageLayout(t *testing.T) {
  103. f := excelize.NewFile()
  104. // Test get page layout on not exists worksheet.
  105. assert.EqualError(t, f.GetPageLayout("SheetN"), "sheet SheetN is not exist")
  106. }