sheetpr_test.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package excelize_test
  2. import (
  3. "fmt"
  4. "reflect"
  5. "testing"
  6. "github.com/360EntSecGroup-Skylar/excelize"
  7. "github.com/mohae/deepcopy"
  8. )
  9. var _ = []excelize.SheetPrOption{
  10. excelize.CodeName("hello"),
  11. excelize.EnableFormatConditionsCalculation(false),
  12. excelize.Published(false),
  13. excelize.FitToPage(true),
  14. excelize.AutoPageBreaks(true),
  15. excelize.OutlineSummaryBelow(true),
  16. }
  17. var _ = []excelize.SheetPrOptionPtr{
  18. (*excelize.CodeName)(nil),
  19. (*excelize.EnableFormatConditionsCalculation)(nil),
  20. (*excelize.Published)(nil),
  21. (*excelize.FitToPage)(nil),
  22. (*excelize.AutoPageBreaks)(nil),
  23. (*excelize.OutlineSummaryBelow)(nil),
  24. }
  25. func ExampleFile_SetSheetPrOptions() {
  26. xl := excelize.NewFile()
  27. const sheet = "Sheet1"
  28. if err := xl.SetSheetPrOptions(sheet,
  29. excelize.CodeName("code"),
  30. excelize.EnableFormatConditionsCalculation(false),
  31. excelize.Published(false),
  32. excelize.FitToPage(true),
  33. excelize.AutoPageBreaks(true),
  34. excelize.OutlineSummaryBelow(false),
  35. ); err != nil {
  36. panic(err)
  37. }
  38. // Output:
  39. }
  40. func ExampleFile_GetSheetPrOptions() {
  41. xl := excelize.NewFile()
  42. const sheet = "Sheet1"
  43. var (
  44. codeName excelize.CodeName
  45. enableFormatConditionsCalculation excelize.EnableFormatConditionsCalculation
  46. published excelize.Published
  47. fitToPage excelize.FitToPage
  48. autoPageBreaks excelize.AutoPageBreaks
  49. outlineSummaryBelow excelize.OutlineSummaryBelow
  50. )
  51. if err := xl.GetSheetPrOptions(sheet,
  52. &codeName,
  53. &enableFormatConditionsCalculation,
  54. &published,
  55. &fitToPage,
  56. &autoPageBreaks,
  57. &outlineSummaryBelow,
  58. ); err != nil {
  59. panic(err)
  60. }
  61. fmt.Println("Defaults:")
  62. fmt.Printf("- codeName: %q\n", codeName)
  63. fmt.Println("- enableFormatConditionsCalculation:", enableFormatConditionsCalculation)
  64. fmt.Println("- published:", published)
  65. fmt.Println("- fitToPage:", fitToPage)
  66. fmt.Println("- autoPageBreaks:", autoPageBreaks)
  67. fmt.Println("- outlineSummaryBelow:", outlineSummaryBelow)
  68. // Output:
  69. // Defaults:
  70. // - codeName: ""
  71. // - enableFormatConditionsCalculation: true
  72. // - published: true
  73. // - fitToPage: false
  74. // - autoPageBreaks: false
  75. // - outlineSummaryBelow: true
  76. }
  77. func TestSheetPrOptions(t *testing.T) {
  78. const sheet = "Sheet1"
  79. for _, test := range []struct {
  80. container excelize.SheetPrOptionPtr
  81. nonDefault excelize.SheetPrOption
  82. }{
  83. {new(excelize.CodeName), excelize.CodeName("xx")},
  84. {new(excelize.EnableFormatConditionsCalculation), excelize.EnableFormatConditionsCalculation(false)},
  85. {new(excelize.Published), excelize.Published(false)},
  86. {new(excelize.FitToPage), excelize.FitToPage(true)},
  87. {new(excelize.AutoPageBreaks), excelize.AutoPageBreaks(true)},
  88. {new(excelize.OutlineSummaryBelow), excelize.OutlineSummaryBelow(false)},
  89. } {
  90. opt := test.nonDefault
  91. t.Logf("option %T", opt)
  92. def := deepcopy.Copy(test.container).(excelize.SheetPrOptionPtr)
  93. val1 := deepcopy.Copy(def).(excelize.SheetPrOptionPtr)
  94. val2 := deepcopy.Copy(def).(excelize.SheetPrOptionPtr)
  95. xl := excelize.NewFile()
  96. // Get the default value
  97. if err := xl.GetSheetPrOptions(sheet, def); err != nil {
  98. t.Fatalf("%T: %s", opt, err)
  99. }
  100. // Get again and check
  101. if err := xl.GetSheetPrOptions(sheet, val1); err != nil {
  102. t.Fatalf("%T: %s", opt, err)
  103. }
  104. if !reflect.DeepEqual(val1, def) {
  105. t.Fatalf("%T: value should not have changed", opt)
  106. }
  107. // Set the same value
  108. if err := xl.SetSheetPrOptions(sheet, val1); err != nil {
  109. t.Fatalf("%T: %s", opt, err)
  110. }
  111. // Get again and check
  112. if err := xl.GetSheetPrOptions(sheet, val1); err != nil {
  113. t.Fatalf("%T: %s", opt, err)
  114. }
  115. if !reflect.DeepEqual(val1, def) {
  116. t.Fatalf("%T: value should not have changed", opt)
  117. }
  118. // Set a different value
  119. if err := xl.SetSheetPrOptions(sheet, test.nonDefault); err != nil {
  120. t.Fatalf("%T: %s", opt, err)
  121. }
  122. if err := xl.GetSheetPrOptions(sheet, val1); err != nil {
  123. t.Fatalf("%T: %s", opt, err)
  124. }
  125. // Get again and compare
  126. if err := xl.GetSheetPrOptions(sheet, val2); err != nil {
  127. t.Fatalf("%T: %s", opt, err)
  128. }
  129. if !reflect.DeepEqual(val2, val1) {
  130. t.Fatalf("%T: value should not have changed", opt)
  131. }
  132. // Value should not be the same as the default
  133. if reflect.DeepEqual(val1, def) {
  134. t.Fatalf("%T: value should have changed from default", opt)
  135. }
  136. // Restore the default value
  137. if err := xl.SetSheetPrOptions(sheet, def); err != nil {
  138. t.Fatalf("%T: %s", opt, err)
  139. }
  140. if err := xl.GetSheetPrOptions(sheet, val1); err != nil {
  141. t.Fatalf("%T: %s", opt, err)
  142. }
  143. if !reflect.DeepEqual(val1, def) {
  144. t.Fatalf("%T: value should now be the same as default", opt)
  145. }
  146. }
  147. }