col_test.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. package xlsx
  2. import (
  3. . "gopkg.in/check.v1"
  4. )
  5. type ColSuite struct{}
  6. var _ = Suite(&ColSuite{})
  7. func (cs *ColSuite) TestCopyToRange(c *C) {
  8. nf := &parsedNumberFormat{}
  9. s := &Style{}
  10. cdv1 := &xlsxCellDataValidation{}
  11. cdv2 := &xlsxCellDataValidation{}
  12. ct := CellTypeBool.Ptr()
  13. c1 := &Col{
  14. Min: 0,
  15. Max: 10,
  16. Hidden: true,
  17. Width: 300.4,
  18. Collapsed: true,
  19. OutlineLevel: 2,
  20. numFmt: "-0.00",
  21. parsedNumFmt: nf,
  22. style: s,
  23. DataValidation: []*xlsxCellDataValidation{cdv1, cdv2},
  24. defaultCellType: ct,
  25. }
  26. c2 := c1.copyToRange(4, 10)
  27. c.Assert(c2.Min, Equals, 4)
  28. c.Assert(c2.Max, Equals, 10)
  29. c.Assert(c2.Hidden, Equals, c1.Hidden)
  30. c.Assert(c2.Width, Equals, c1.Width)
  31. c.Assert(c2.Collapsed, Equals, c1.Collapsed)
  32. c.Assert(c2.OutlineLevel, Equals, c1.OutlineLevel)
  33. c.Assert(c2.numFmt, Equals, c1.numFmt)
  34. c.Assert(c2.parsedNumFmt, Equals, c1.parsedNumFmt)
  35. c.Assert(c2.style, Equals, c1.style)
  36. c.Assert(c2.DataValidation, HasLen, 2)
  37. c.Assert(c2.DataValidation[0], Equals, c1.DataValidation[0])
  38. c.Assert(c2.DataValidation[1], Equals, c1.DataValidation[1])
  39. c.Assert(c2.defaultCellType, Equals, c1.defaultCellType)
  40. }
  41. type ColStoreSuite struct{}
  42. var _ = Suite(&ColStoreSuite{})
  43. func (css *ColStoreSuite) TestAddRootNode(c *C) {
  44. col := &Col{Min: 0, Max: 1}
  45. cs := ColStore{}
  46. cs.Add(col)
  47. c.Assert(cs.Root.Col, Equals, col)
  48. }
  49. func (css *ColStoreSuite) TestMakeWay(c *C) {
  50. assertWayMade := func(cols []*Col, chainFunc func(root *colStoreNode)) {
  51. cs := ColStore{}
  52. for _, col := range cols {
  53. cs.Add(col)
  54. }
  55. chainFunc(cs.Root)
  56. }
  57. // Col1: |--|
  58. // Col2: |--|
  59. assertWayMade([]*Col{&Col{Min: 0, Max: 1}, &Col{Min: 2, Max: 3}},
  60. func(root *colStoreNode) {
  61. c.Assert(root.Col.Min, Equals, 0)
  62. c.Assert(root.Col.Max, Equals, 1)
  63. c.Assert(root.Prev, IsNil)
  64. c.Assert(root.Next, NotNil)
  65. node2 := root.Next
  66. c.Assert(node2.Prev, Equals, root)
  67. c.Assert(node2.Next, IsNil)
  68. c.Assert(node2.Col.Min, Equals, 2)
  69. c.Assert(node2.Col.Max, Equals, 3)
  70. })
  71. // Col1: |--|
  72. // Col2: |--|
  73. assertWayMade([]*Col{&Col{Min: 2, Max: 3}, &Col{Min: 0, Max: 1}},
  74. func(root *colStoreNode) {
  75. c.Assert(root.Col.Min, Equals, 2)
  76. c.Assert(root.Col.Max, Equals, 3)
  77. c.Assert(root.Prev, NotNil)
  78. c.Assert(root.Next, IsNil)
  79. node2 := root.Prev
  80. c.Assert(node2.Next, Equals, root)
  81. c.Assert(node2.Prev, IsNil)
  82. c.Assert(node2.Col.Min, Equals, 0)
  83. c.Assert(node2.Col.Max, Equals, 1)
  84. })
  85. // Col1: |--x|
  86. // Col2: |--|
  87. assertWayMade([]*Col{&Col{Min: 0, Max: 2}, &Col{Min: 2, Max: 3}},
  88. func(root *colStoreNode) {
  89. c.Assert(root.Col.Min, Equals, 0)
  90. c.Assert(root.Col.Max, Equals, 1)
  91. c.Assert(root.Prev, IsNil)
  92. c.Assert(root.Next, NotNil)
  93. node2 := root.Next
  94. c.Assert(node2.Prev, Equals, root)
  95. c.Assert(node2.Next, IsNil)
  96. c.Assert(node2.Col.Min, Equals, 2)
  97. c.Assert(node2.Col.Max, Equals, 3)
  98. })
  99. // Col1: |x-|
  100. // Col2: |--|
  101. assertWayMade([]*Col{&Col{Min: 1, Max: 2}, &Col{Min: 0, Max: 1}},
  102. func(root *colStoreNode) {
  103. c.Assert(root.Col.Min, Equals, 2)
  104. c.Assert(root.Col.Max, Equals, 2)
  105. c.Assert(root.Prev, NotNil)
  106. c.Assert(root.Next, IsNil)
  107. node2 := root.Prev
  108. c.Assert(node2.Next, Equals, root)
  109. c.Assert(node2.Prev, IsNil)
  110. c.Assert(node2.Col.Min, Equals, 0)
  111. c.Assert(node2.Col.Max, Equals, 1)
  112. })
  113. // Col1: |---xx---|
  114. // Col2: |--|
  115. assertWayMade([]*Col{&Col{Min: 0, Max: 7}, &Col{Min: 3, Max: 4}},
  116. func(root *colStoreNode) {
  117. c.Assert(root.Prev, IsNil)
  118. c.Assert(root.Next, NotNil)
  119. node2 := root.Next
  120. c.Assert(node2.Prev, Equals, root)
  121. c.Assert(node2.Col.Min, Equals, 3)
  122. c.Assert(node2.Col.Max, Equals, 4)
  123. c.Assert(node2.Next, NotNil)
  124. node3 := node2.Next
  125. c.Assert(node3.Prev, Equals, node2)
  126. c.Assert(node3.Next, IsNil)
  127. c.Assert(node3.Col.Min, Equals, 5)
  128. c.Assert(node3.Col.Max, Equals, 7)
  129. })
  130. // Col1: |xx|
  131. // Col2: |--|
  132. assertWayMade([]*Col{&Col{Min: 0, Max: 1, Width: 40.1}, &Col{Min: 0, Max: 1, Width: 10.0}},
  133. func(root *colStoreNode) {
  134. c.Assert(root.Prev, IsNil)
  135. c.Assert(root.Next, IsNil)
  136. c.Assert(root.Col.Min, Equals, 0)
  137. c.Assert(root.Col.Max, Equals, 1)
  138. // This is how we establish we have the new node, and not the old one
  139. c.Assert(root.Col.Width, Equals, 10.0)
  140. })
  141. // Col1: |--|
  142. // Col2: |--|
  143. // Col3: |
  144. // assertWayMade([]*Col{&Col{Min: 0, Max: 7}, &Col{Min: 3, Max: 4}},
  145. // func(root *colStoreNode) {
  146. // c.Assert(root.Prev, IsNil)
  147. // c.Assert(root.Next, NotNil)
  148. // node2 := root.Next
  149. // c.Assert(node2.Prev, Equals, root)
  150. // c.Assert(node2.Col.Min, Equals, 3)
  151. // c.Assert(node2.Col.Max, Equals, 4)
  152. // c.Assert(node2.Next, NotNil)
  153. // node3 := node2.Next
  154. // c.Assert(node3.Prev, Equals, node2)
  155. // c.Assert(node3.Next, IsNil)
  156. // c.Assert(node3.Col.Min, Equals, 5)
  157. // c.Assert(node3.Col.Max, Equals, 7)
  158. // })
  159. }