summaryrefslogtreecommitdiffhomepage
path: root/test/workbook/worksheet
diff options
context:
space:
mode:
Diffstat (limited to 'test/workbook/worksheet')
-rw-r--r--test/workbook/worksheet/table/tc_table.rb71
-rw-r--r--test/workbook/worksheet/tc_cell.rb19
-rw-r--r--test/workbook/worksheet/tc_date_time_converter.rb3
-rw-r--r--test/workbook/worksheet/tc_page_margins.rb11
-rw-r--r--test/workbook/worksheet/tc_row.rb19
-rw-r--r--test/workbook/worksheet/tc_worksheet.rb88
6 files changed, 189 insertions, 22 deletions
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)