diff options
Diffstat (limited to 'test/workbook')
| -rw-r--r-- | test/workbook/tc_shared_strings_table.rb | 11 | ||||
| -rw-r--r-- | test/workbook/tc_workbook.rb | 3 | ||||
| -rw-r--r-- | test/workbook/worksheet/table/tc_table.rb | 71 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_cell.rb | 19 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_date_time_converter.rb | 3 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_page_margins.rb | 11 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_row.rb | 19 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_worksheet.rb | 88 |
8 files changed, 195 insertions, 30 deletions
diff --git a/test/workbook/tc_shared_strings_table.rb b/test/workbook/tc_shared_strings_table.rb index b0e9de05..e3c9bf7b 100644 --- a/test/workbook/tc_shared_strings_table.rb +++ b/test/workbook/tc_shared_strings_table.rb @@ -1,14 +1,13 @@ -require 'test/unit' -require 'axlsx.rb' +require 'tc_helper.rb' class TestSharedStringsTable < Test::Unit::TestCase - def setup + def setup @p = Axlsx::Package.new :use_shared_strings=>true ws = @p.workbook.add_worksheet ws.add_row ['a', 1, 'b'] ws.add_row ['b', 1, 'c'] - ws.add_row ['c', 1, 'd'] + ws.add_row ['c', 1, 'd'] end def test_workbook_has_shared_strings @@ -25,9 +24,9 @@ class TestSharedStringsTable < Test::Unit::TestCase assert_equal(sst.unique_count, 4) end - def test_valid_document + def test_valid_document schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD)) - doc = Nokogiri::XML(@p.workbook.shared_strings.to_xml) + doc = Nokogiri::XML(@p.workbook.shared_strings.to_xml_string) errors = [] schema.validate(doc).each do |error| puts error.message diff --git a/test/workbook/tc_workbook.rb b/test/workbook/tc_workbook.rb index 1382a12d..af2a7889 100644 --- a/test/workbook/tc_workbook.rb +++ b/test/workbook/tc_workbook.rb @@ -1,5 +1,4 @@ -require 'test/unit' -require 'axlsx.rb' +require 'tc_helper.rb' class TestWorkbook < Test::Unit::TestCase def setup diff --git a/test/workbook/worksheet/table/tc_table.rb b/test/workbook/worksheet/table/tc_table.rb new file mode 100644 index 00000000..fc29bf66 --- /dev/null +++ b/test/workbook/worksheet/table/tc_table.rb @@ -0,0 +1,71 @@ +require 'tc_helper.rb' + +class TestTable < Test::Unit::TestCase + def setup + p = Axlsx::Package.new + @ws = p.workbook.add_worksheet + 40.times do + @ws << ["aa","aa","aa","aa","aa","aa"] + end + end + + def test_initialization + assert(@ws.workbook.tables.empty?) + assert(@ws.tables.empty?) + + end + + def test_add_table + name = "test" + table = @ws.add_table("A1:D5", :name => name) + assert(table.is_a?(Axlsx::Table), "must create a table") + assert_equal(@ws.workbook.tables.last, table, "must be added to workbook table collection") + assert_equal(@ws.tables.last, table, "must be added to worksheet table collection") + assert_equal(table.name, name, "options for name are applied") + + end + + def test_charts + assert(@ws.drawing.charts.empty?) + chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1]) + assert_equal(@ws.drawing.charts.last, chart, "add chart is returned") + chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"nancy", :start_at=>[1,5], :end_at=>[5,10]) + assert_equal(@ws.drawing.charts.last, chart, "add chart is returned") + end + + def test_pn + table = @ws.add_table("A1:D5") + assert_equal(@ws.tables.first.pn, "tables/table1.xml") + end + + def test_rId + table = @ws.add_table("A1:D5") + assert_equal(@ws.tables.first.rId, "rId1") + end + + def test_index + table = @ws.add_table("A1:D5") + assert_equal(@ws.tables.first.index, @ws.workbook.tables.index(@ws.tables.first)) + end + + def test_relationships + assert(@ws.relationships.empty?) + table = @ws.add_table("A1:D5") + assert_equal(@ws.relationships.size, 1, "adding a table adds a relationship") + table = @ws.add_table("F1:J5") + assert_equal(@ws.relationships.size, 2, "adding a table adds a relationship") + end + + def test_to_xml + table = @ws.add_table("A1:D5") + schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD)) + doc = Nokogiri::XML(table.to_xml) + errors = [] + schema.validate(doc).each do |error| + errors.push error + puts error.message + end + assert(errors.empty?, "error free validation") + end + +end diff --git a/test/workbook/worksheet/tc_cell.rb b/test/workbook/worksheet/tc_cell.rb index e111f7cd..991181e7 100644 --- a/test/workbook/worksheet/tc_cell.rb +++ b/test/workbook/worksheet/tc_cell.rb @@ -1,5 +1,4 @@ -require 'test/unit' -require 'axlsx.rb' +require 'tc_helper.rb' class TestCell < Test::Unit::TestCase @@ -207,13 +206,14 @@ class TestCell < Test::Unit::TestCase end def test_equality - c2 = @row.add_cell 1, :type=>:float, :style=>1 - assert(c2.shareable(@c)) + c2 = @row.add_cell 1, :type=>:float, :style=>1 + + assert_equal(c2.shareable_hash,@c.shareable_hash) c3 = @row.add_cell 2, :type=>:float, :style=>1 c4 = @row.add_cell 1, :type=>:float, :style=>1, :color => "#FFFFFFFF" - assert_equal(c4.shareable(c2) ,false) + assert_equal(c4.shareable_hash == c2.shareable_hash,false) c5 = @row.add_cell 1, :type=>:float, :style=>1, :color => "#FFFFFFFF" - assert(c5.shareable(c4)) + assert_equal(c5.shareable_hash, c4.shareable_hash) end @@ -223,6 +223,13 @@ class TestCell < Test::Unit::TestCase assert_equal(@c.ssti, 1) end + def test_to_xml_string + builder = Nokogiri::XML::Builder.new(:encoding => Axlsx::ENCODING) do |xml| + @c.to_xml(xml) + end + c_xml = Nokogiri::XML(builder.to_xml(:save_with => 0)) + assert_equal(c_xml.xpath("/c[@s=1]").size, 1) + end def test_to_xml # TODO This could use some much more stringent testing related to the xml content generated! row = @ws.add_row [Time.now, Date.today, true, 1, 1.0, "text", "=sum(A1:A2)"] diff --git a/test/workbook/worksheet/tc_date_time_converter.rb b/test/workbook/worksheet/tc_date_time_converter.rb index c78e51eb..adeae92b 100644 --- a/test/workbook/worksheet/tc_date_time_converter.rb +++ b/test/workbook/worksheet/tc_date_time_converter.rb @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- -require 'test/unit' -require 'axlsx.rb' +require 'tc_helper.rb' class TestDateTimeConverter < Test::Unit::TestCase def setup diff --git a/test/workbook/worksheet/tc_page_margins.rb b/test/workbook/worksheet/tc_page_margins.rb index 3368129c..4c5e43fa 100644 --- a/test/workbook/worksheet/tc_page_margins.rb +++ b/test/workbook/worksheet/tc_page_margins.rb @@ -1,5 +1,4 @@ -require 'test/unit' -require 'axlsx.rb' +require 'tc_helper.rb' class TestPageMargins < Test::Unit::TestCase @@ -8,7 +7,7 @@ class TestPageMargins < Test::Unit::TestCase ws = p.workbook.add_worksheet :name=>"hmmm" @pm = ws.page_margins end - + def test_initialize assert_equal(Axlsx::PageMargins::DEFAULT_LEFT_RIGHT, @pm.left) assert_equal(Axlsx::PageMargins::DEFAULT_LEFT_RIGHT, @pm.right) @@ -25,7 +24,7 @@ class TestPageMargins < Test::Unit::TestCase assert_equal(2, optioned.top) assert_equal(1, optioned.bottom) assert_equal(0.1, optioned.header) - assert_equal(0.1, optioned.footer) + assert_equal(0.1, optioned.footer) end @@ -48,7 +47,7 @@ class TestPageMargins < Test::Unit::TestCase assert_equal(Axlsx::PageMargins::DEFAULT_HEADER_FOOTER, @pm.header) assert_equal(Axlsx::PageMargins::DEFAULT_HEADER_FOOTER, @pm.footer) end - + def test_to_xml @pm.left = 1.1 @pm.right = 1.2 @@ -61,7 +60,7 @@ class TestPageMargins < Test::Unit::TestCase doc = Nokogiri::XML.parse(xml.to_xml) assert_equal(1, doc.xpath(".//pageMargins[@left=1.1][@right=1.2][@top=1.3][@bottom=1.4][@header=0.8][@footer=0.9]").size) end - + def test_left assert_raise(ArgumentError) { @pm.left = -1.2 } assert_nothing_raised { @pm.left = 1.5 } diff --git a/test/workbook/worksheet/tc_row.rb b/test/workbook/worksheet/tc_row.rb index 38c910c5..b77715c5 100644 --- a/test/workbook/worksheet/tc_row.rb +++ b/test/workbook/worksheet/tc_row.rb @@ -1,5 +1,4 @@ -require 'test/unit' -require 'axlsx.rb' +require 'tc_helper.rb' class TestRow < Test::Unit::TestCase @@ -8,7 +7,7 @@ class TestRow < Test::Unit::TestCase @ws = p.workbook.add_worksheet :name=>"hmmm" @row = @ws.add_row end - + def test_initialize assert(@row.cells.empty?, "no cells by default") assert_equal(@row.worksheet, @ws, "has a reference to the worksheet") @@ -25,7 +24,7 @@ class TestRow < Test::Unit::TestCase def test_style r = @ws.add_row([1,2,3,4,5]) r.style=1 - r.cells.each { |c| assert_equal(c.style,1) } + r.cells.each { |c| assert_equal(c.style,1) } end def test_index @@ -61,6 +60,18 @@ class TestRow < Test::Unit::TestCase assert_equal(0, doc.xpath(".//row[@customHeight]").size) end + def test_to_xml_string + r_s_xml = Nokogiri::XML(@row.to_xml_string) + assert_equal(r_s_xml.xpath(".//row[@r=1]").size, 1) + end + + def test_to_xml_string_with_custom_height + @row.add_cell 1 + @row.height = 20 + r_s_xml = Nokogiri::XML(@row.to_xml_string) + assert_equal(r_s_xml.xpath(".//row[@r=1][@ht=20][@customHeight=1]").size, 1) + end + def test_to_xml_with_custom_height @row.height = 20 xml = Nokogiri::XML::Builder.new diff --git a/test/workbook/worksheet/tc_worksheet.rb b/test/workbook/worksheet/tc_worksheet.rb index c9aa7069..d9a89a69 100644 --- a/test/workbook/worksheet/tc_worksheet.rb +++ b/test/workbook/worksheet/tc_worksheet.rb @@ -1,5 +1,4 @@ -require 'test/unit' -require 'axlsx.rb' +require 'tc_helper.rb' class TestWorksheet < Test::Unit::TestCase def setup @@ -84,8 +83,8 @@ class TestWorksheet < Test::Unit::TestCase @ws.add_row [1, 2, 3] @ws.add_row [4, 5, 6] range = @ws["A1:C2"] - first_row = @ws[1] - last_row = @ws[2] + first_row = @ws[0] + last_row = @ws[1] assert_equal(@ws.rows[0],first_row) assert_equal(@ws.rows[1],last_row) assert_equal(range.size, 6) @@ -154,6 +153,87 @@ class TestWorksheet < Test::Unit::TestCase assert_equal(@ws.rows[2].cells[1].style, 0) end + def test_to_xml_string_fit_to_page + @ws.fit_to_page = true + doc = Nokogiri::XML(@ws.to_xml_string) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetPr/xmlns:pageSetUpPr[@fitToPage="true"]').size, 1) + end + + def test_to_xml_string_dimensions + @ws.add_row [1,2,3] + doc = Nokogiri::XML(@ws.to_xml_string) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:dimension[@ref="A1:C1"]').size, 1) + end + + def test_to_xml_string_selected + @ws.selected = true + doc = Nokogiri::XML(@ws.to_xml_string) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView[@tabSelected="true"]').size, 1) + end + + def test_to_xml_string_show_gridlines + @ws.show_gridlines = false + doc = Nokogiri::XML(@ws.to_xml_string) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView[@showGridLines="false"]').size, 1) + end + + + def test_to_xml_string_show_selection + doc = Nokogiri::XML(@ws.to_xml_string) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView/xmlns:selection[@activeCell="A1"]').size, 1) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView/xmlns:selection[@sqref="A1"]').size, 1) + end + + def test_to_xml_string_auto_fit_data + @ws.add_row [1, "two"] + doc = Nokogiri::XML(@ws.to_xml_string) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:cols/xmlns:col').size, 2) + end + + def test_to_xml_string_sheet_data + @ws.add_row [1, "two"] + doc = Nokogiri::XML(@ws.to_xml_string) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:sheetData/xmlns:row').size, 1) + end + + def test_to_xml_string_auto_filter + @ws.add_row [1, "two"] + @ws.auto_filter = "A1:B1" + doc = Nokogiri::XML(@ws.to_xml_string) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:autoFilter[@ref="A1:B1"]').size, 1) + end + + def test_to_xml_string_merge_cells + @ws.add_row [1, "two"] + @ws.merge_cells "A1:D1" + doc = Nokogiri::XML(@ws.to_xml_string) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:mergeCells/xmlns:mergeCell[@ref="A1:D1"]').size, 1) + end + + def test_to_xml_string_page_margins + @ws.page_margins do |pm| + pm.left = 9 + pm.right = 7 + end + doc = Nokogiri::XML(@ws.to_xml_string) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:pageMargins[@left="9"][@right="7"]').size, 1) + end + + def test_to_xml_string_drawing + c = @ws.add_chart Axlsx::Pie3DChart + doc = Nokogiri::XML(@ws.to_xml_string) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:drawing[@r:id="rId1"]').size, 1) + end + + def test_to_xml_string_tables + @ws.add_row ["one", "two"] + @ws.add_row [1, 2] + @ws.add_table "A1:B2" + doc = Nokogiri::XML(@ws.to_xml_string) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:tableParts[@count="1"]').size, 1) + assert_equal(doc.xpath('//xmlns:worksheet/xmlns:tableParts/xmlns:tablePart[@r:id="rId1"]').size, 1) + end + def test_to_xml schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD)) doc = Nokogiri::XML(@ws.to_xml) |
