test/workbook/worksheet/tc_worksheet.rb in axlsx-1.0.17 vs test/workbook/worksheet/tc_worksheet.rb in axlsx-1.0.18
- old
+ new
@@ -11,10 +11,33 @@
assert_equal(@ws.pn, "worksheets/sheet1.xml")
ws = @ws.workbook.add_worksheet
assert_equal(ws.pn, "worksheets/sheet2.xml")
end
+ def test_page_margins
+ assert(@ws.page_margins.is_a? Axlsx::PageMargins)
+ end
+
+ def test_page_margins_yeild
+ @ws.page_margins do |pm|
+ assert(pm.is_a? Axlsx::PageMargins)
+ assert(@ws.page_margins == pm)
+ end
+ end
+
+ def test_initialization_options
+ page_margins = {:left => 2, :right => 2, :bottom => 2, :top => 2, :header => 2, :footer => 2}
+ optioned = @ws.workbook.add_worksheet(:name => 'bob', :page_margins => page_margins)
+ assert_equal(optioned.page_margins.left, page_margins[:left])
+ assert_equal(optioned.page_margins.right, page_margins[:right])
+ assert_equal(optioned.page_margins.top, page_margins[:top])
+ assert_equal(optioned.page_margins.bottom, page_margins[:bottom])
+ assert_equal(optioned.page_margins.header, page_margins[:header])
+ assert_equal(optioned.page_margins.footer, page_margins[:footer])
+ assert_equal(optioned.name, 'bob')
+ end
+
def test_rels_pn
assert_equal(@ws.rels_pn, "worksheets/_rels/sheet1.xml.rels")
ws = @ws.workbook.add_worksheet
assert_equal(ws.rels_pn, "worksheets/_rels/sheet2.xml.rels")
end
@@ -37,10 +60,14 @@
def test_referencing
@ws.add_row [1, 2, 3]
@ws.add_row [4, 5, 6]
range = @ws["A1:C2"]
+ first_row = @ws[1]
+ last_row = @ws[2]
+ assert_equal(@ws.rows[0],first_row)
+ assert_equal(@ws.rows[1],last_row)
assert_equal(range.size, 6)
assert_equal(range.first, @ws.rows.first.cells.first)
assert_equal(range.last, @ws.rows.last.cells.last)
end
@@ -114,10 +141,23 @@
puts error.message
end
assert(errors.empty?, "error free validation")
end
+ def test_valid_with_page_margins
+ @ws.page_margins.set :left => 9
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
+ doc = Nokogiri::XML(@ws.to_xml)
+ errors = []
+ schema.validate(doc).each do |error|
+ errors.push error
+ puts error.message
+ end
+ assert(errors.empty?, "error free validation")
+
+ end
+
def test_relationships
assert(@ws.relationships.empty?, "No Drawing relationship until you add a chart")
c = @ws.add_chart Axlsx::Pie3DChart
assert_equal(@ws.relationships.size, 1, "adding a chart creates the relationship")
c = @ws.add_chart Axlsx::Pie3DChart
@@ -127,10 +167,15 @@
def test_name_unique
assert_raise(ArgumentError, "worksheet name must be unique") { n = @ws.name; @ws.workbook.add_worksheet(:name=> @ws) }
end
+ def test_name_size
+ assert_raise(ArgumentError, "name too long!") { @ws.name = Array.new(32, "A").join('') }
+ assert_nothing_raised { @ws.name = Array.new(31, "A").join('') }
+ end
+
def test_update_auto_with_data
small = @ws.workbook.styles.add_style(:sz=>2)
big = @ws.workbook.styles.add_style(:sz=>10)
@ws.add_row ["chasing windmills", "penut"], :style=>small
@@ -141,26 +186,58 @@
@ws.add_row ["mule"], :style=>big
assert_equal(@ws.auto_fit_data[0], {:sz=>10,:longest=>"mule", :fixed=>nil}, "adding a row updates auto_fit_data if the product of the string length and font is greater for the column")
end
+ def test_set_fixed_width_column
+ @ws.add_row ["mule", "donkey", "horse"], :widths => [20, :ignore, nil]
+ assert(@ws.auto_fit_data.size == 3, "a data item for each column")
+ assert_equal({:sz=>11, :longest=>"mule", :fixed=>20 }, @ws.auto_fit_data[0], "adding a row with fixed width updates :fixed attribute")
+ assert_equal({:sz=>11, :longest=>"", :fixed=>nil}, @ws.auto_fit_data[1], ":ignore does not set any data")
+ assert_equal({:sz=>11, :longest=>"horse", :fixed=>nil}, @ws.auto_fit_data[2], "nil, well really anything else just works as normal")
+ @ws.add_row ["mule", "donkey", "horse"]
+ assert_equal({:sz=>11, :longest=>"donkey", :fixed=>nil}, @ws.auto_fit_data[1])
+
+ end
+
+ def test_fixed_widths_with_merged_cells
+ @ws.add_row ["hey, I'm like really long and stuff so I think you will merge me."]
+ @ws.merge_cells "A1:C1"
+ @ws.add_row ["but Im Short!"], :widths=> [14.8]
+ assert_equal(@ws.send(:auto_width, @ws.auto_fit_data[0]), 14.8)
+ end
+
+ def test_fixed_width_to_auto
+ @ws.add_row ["hey, I'm like really long and stuff so I think you will merge me."]
+ @ws.merge_cells "A1:C1"
+ @ws.add_row ["but Im Short!"], :widths=> [14.8]
+ assert_equal(@ws.send(:auto_width, @ws.auto_fit_data[0]), 14.8)
+ @ws.add_row ["no, I like auto!"], :widths=>[:auto]
+ assert_equal(@ws.auto_fit_data[0][:fixed], nil)
+ end
+
def test_auto_width
assert(@ws.send(:auto_width, {:sz=>11, :longest=>"fisheries"}) > @ws.send(:auto_width, {:sz=>11, :longest=>"fish"}), "longer strings get a longer auto_width at the same font size")
assert(@ws.send(:auto_width, {:sz=>11, :longest=>"fish"}) < @ws.send(:auto_width, {:sz=>12, :longest=>"fish"}), "larger fonts produce longer with with same string")
assert_equal(@ws.send(:auto_width, {:sz=>11, :longest => "This is a really long string", :fixed=>0.2}), 0.2, "fixed rules!")
end
+ def test_fixed_height
+ @ws.add_row [1, 2, 3], :height => 40
+ assert_equal(40, @ws.rows[-1].height)
+ end
+
+
def test_set_column_width
@ws.add_row ["chasing windmills", "penut"]
assert_equal(@ws.auto_fit_data[0][:fixed], nil, 'no fixed by default')
@ws.column_widths nil, 0.5
assert_equal(@ws.auto_fit_data[1][:fixed], 0.5, 'eat my width')
assert_raise(ArgumentError, 'reject invalid columns') { @ws.column_widths 2, 7, nil }
assert_raise(ArgumentError, 'only accept unsigned ints') { @ws.column_widths 2, 7, -1 }
assert_raise(ArgumentError, 'only accept Integer, Float or Fixnum') { @ws.column_widths 2, 7, "-1" }
end
-
def test_merge_cells
assert(@ws.merged_cells.is_a?(Array))
assert_equal(@ws.merged_cells.size, 0)
@ws.add_row [1,2,3]