sheetpr_test.go 4.2 KB

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