diff options
| author | Jurriaan Pruis <[email protected]> | 2014-03-01 21:17:25 +0100 |
|---|---|---|
| committer | Jurriaan Pruis <[email protected]> | 2014-03-01 21:17:25 +0100 |
| commit | 043dc9ad9a807c9011821840cd3f43ca71456c2e (patch) | |
| tree | 6396b045e3fc3302a53d82dbcbcff408efd1662e /test | |
| parent | 852586d08d757204f7b2ad424e273518ff17892c (diff) | |
| download | caxlsx-043dc9ad9a807c9011821840cd3f43ca71456c2e.tar.gz caxlsx-043dc9ad9a807c9011821840cd3f43ca71456c2e.zip | |
Implemented RichText (multiple text runs)
and added multiline autowidth for both RichText and normal strings
Diffstat (limited to 'test')
| -rw-r--r-- | test/workbook/worksheet/tc_cell.rb | 7 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_rich_text.rb | 44 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_rich_text_run.rb | 172 |
3 files changed, 220 insertions, 3 deletions
diff --git a/test/workbook/worksheet/tc_cell.rb b/test/workbook/worksheet/tc_cell.rb index e42cf09f..ec39bba0 100644 --- a/test/workbook/worksheet/tc_cell.rb +++ b/test/workbook/worksheet/tc_cell.rb @@ -95,6 +95,7 @@ class TestCell < Test::Unit::TestCase assert_equal(@c.send(:cell_type_from_value, true), :boolean) assert_equal(@c.send(:cell_type_from_value, false), :boolean) assert_equal(@c.send(:cell_type_from_value, 1.0/10**6), :float) + assert_equal(@c.send(:cell_type_from_value, Axlsx::RichText.new), :richtext) assert_equal(:iso_8601, @c.send(:cell_type_from_value, '2008-08-30T01:45:36.123+09:00')) end @@ -107,6 +108,8 @@ class TestCell < Test::Unit::TestCase assert_equal(@c.send(:cast_value, "1.0"), 1.0) @c.type = :string assert_equal(@c.send(:cast_value, nil), nil) + @c.type = :richtext + assert_equal(@c.send(:cast_value, nil), nil) @c.type = :float assert_equal(@c.send(:cast_value, nil), nil) @c.type = :boolean @@ -301,11 +304,11 @@ class TestCell < Test::Unit::TestCase assert_equal(sz, 52) end - def test_cell_with_sz @c.sz = 25 assert_equal(25, @c.send(:font_size)) end + def test_to_xml # TODO This could use some much more stringent testing related to the xml content generated! @ws.add_row [Time.now, Date.today, true, 1, 1.0, "text", "=sum(A1:A2)", "2013-01-13T13:31:25.123"] @@ -319,7 +322,5 @@ class TestCell < Test::Unit::TestCase puts error.message end assert(errors.empty?, "error free validation") - end - end diff --git a/test/workbook/worksheet/tc_rich_text.rb b/test/workbook/worksheet/tc_rich_text.rb new file mode 100644 index 00000000..d79d3021 --- /dev/null +++ b/test/workbook/worksheet/tc_rich_text.rb @@ -0,0 +1,44 @@ +require 'tc_helper.rb' + +class RichText < Test::Unit::TestCase + def setup + p = Axlsx::Package.new + @ws = p.workbook.add_worksheet :name => "hmmmz" + p.workbook.styles.add_style :sz => 20 + @rt = Axlsx::RichText.new + b = true + (0..26).each do |r| + @rt.add_run "run #{r}, ", :b => (b=!b), :i => !b + end + @row = @ws.add_row [@rt] + @c = @row.first + end + + def test_initialize + assert_equal(@c.value, @rt) + rt_direct = Axlsx::RichText.new('hi', :i => true) + rt_indirect = Axlsx::RichText.new() + rt_indirect.add_run('hi', :i => true) + assert_equal(rt_direct.runs.length, 1) + assert_equal(rt_indirect.runs.length, 1) + row = @ws.add_row [rt_direct, rt_indirect] + assert_equal(row[0].to_xml_string(0,0), row[1].to_xml_string(0,0)) + end + + def test_textruns + runs = @rt.runs + assert_equal(runs.length, 27) + assert_equal(runs.first.b, false) + assert_equal(runs.first.i, true) + assert_equal(runs[1].b, true) + assert_equal(runs[1].i, false) + end + + def test_implicit_richtext + rt = Axlsx::RichText.new('a', :b => true) + row_rt = @ws.add_row [rt] + row_imp = @ws.add_row ['a'] + row_imp[0].b = true + assert_equal(row_rt[0].to_xml_string(0,0), row_imp[0].to_xml_string(0,0)) + end +end diff --git a/test/workbook/worksheet/tc_rich_text_run.rb b/test/workbook/worksheet/tc_rich_text_run.rb new file mode 100644 index 00000000..f8b11f6c --- /dev/null +++ b/test/workbook/worksheet/tc_rich_text_run.rb @@ -0,0 +1,172 @@ +require 'tc_helper.rb' + +class RichTextRun < Test::Unit::TestCase + def setup + @p = Axlsx::Package.new + @ws = @p.workbook.add_worksheet :name => "hmmmz" + @p.workbook.styles.add_style :sz => 20 + @rtr = Axlsx::RichTextRun.new('hihihi', b: true, i: false) + @rtr2 = Axlsx::RichTextRun.new('hihi2hi2', b: false, i: true) + @rt = Axlsx::RichText.new + @rt.runs << @rtr + @rt.runs << @rtr2 + @row = @ws.add_row [@rt] + @c = @row.first + end + + def test_initialize + assert_equal(@rtr.value, 'hihihi') + assert_equal(@rtr.b, true) + assert_equal(@rtr.i, false) + end + + def test_font_size_with_custom_style_and_no_sz + @c.style = @c.row.worksheet.workbook.styles.add_style :bg_color => 'FF00FF' + sz = @rtr.send(:font_size) + assert_equal(sz, @c.row.worksheet.workbook.styles.fonts.first.sz * 1.5) + sz = @rtr2.send(:font_size) + assert_equal(sz, @c.row.worksheet.workbook.styles.fonts.first.sz) + end + + def test_font_size_with_bolding + @c.style = @c.row.worksheet.workbook.styles.add_style :b => true + assert_equal(@c.row.worksheet.workbook.styles.fonts.first.sz * 1.5, @rtr.send(:font_size)) + assert_equal(@c.row.worksheet.workbook.styles.fonts.first.sz * 1.5, @rtr2.send(:font_size)) # is this the correct behaviour? + end + + def test_font_size_with_custom_sz + @c.style = @c.row.worksheet.workbook.styles.add_style :sz => 52 + sz = @rtr.send(:font_size) + assert_equal(sz, 52 * 1.5) + sz2 = @rtr2.send(:font_size) + assert_equal(sz2, 52) + end + + def test_rtr_with_sz + @rtr.sz = 25 + assert_equal(25, @rtr.send(:font_size)) + end + + def test_color + assert_raise(ArgumentError) { @rtr.color = -1.1 } + assert_nothing_raised { @rtr.color = "FF00FF00" } + assert_equal(@rtr.color.rgb, "FF00FF00") + end + + def test_scheme + assert_raise(ArgumentError) { @rtr.scheme = -1.1 } + assert_nothing_raised { @rtr.scheme = :major } + assert_equal(@rtr.scheme, :major) + end + + def test_vertAlign + assert_raise(ArgumentError) { @rtr.vertAlign = -1.1 } + assert_nothing_raised { @rtr.vertAlign = :baseline } + assert_equal(@rtr.vertAlign, :baseline) + end + + def test_sz + assert_raise(ArgumentError) { @rtr.sz = -1.1 } + assert_nothing_raised { @rtr.sz = 12 } + assert_equal(@rtr.sz, 12) + end + + def test_extend + assert_raise(ArgumentError) { @rtr.extend = -1.1 } + assert_nothing_raised { @rtr.extend = false } + assert_equal(@rtr.extend, false) + end + + def test_condense + assert_raise(ArgumentError) { @rtr.condense = -1.1 } + assert_nothing_raised { @rtr.condense = false } + assert_equal(@rtr.condense, false) + end + + def test_shadow + assert_raise(ArgumentError) { @rtr.shadow = -1.1 } + assert_nothing_raised { @rtr.shadow = false } + assert_equal(@rtr.shadow, false) + end + + def test_outline + assert_raise(ArgumentError) { @rtr.outline = -1.1 } + assert_nothing_raised { @rtr.outline = false } + assert_equal(@rtr.outline, false) + end + + def test_strike + assert_raise(ArgumentError) { @rtr.strike = -1.1 } + assert_nothing_raised { @rtr.strike = false } + assert_equal(@rtr.strike, false) + end + + def test_u + @c.type = :string + assert_raise(ArgumentError) { @c.u = -1.1 } + assert_nothing_raised { @c.u = :single } + assert_equal(@c.u, :single) + doc = Nokogiri::XML(@c.to_xml_string(1,1)) + assert(doc.xpath('//u[@val="single"]')) + end + + def test_i + assert_raise(ArgumentError) { @c.i = -1.1 } + assert_nothing_raised { @c.i = false } + assert_equal(@c.i, false) + end + + def test_rFont + assert_raise(ArgumentError) { @c.font_name = -1.1 } + assert_nothing_raised { @c.font_name = "Arial" } + assert_equal(@c.font_name, "Arial") + end + + def test_charset + assert_raise(ArgumentError) { @c.charset = -1.1 } + assert_nothing_raised { @c.charset = 1 } + assert_equal(@c.charset, 1) + end + + def test_family + assert_raise(ArgumentError) { @c.family = -1.1 } + assert_nothing_raised { @c.family = 5 } + assert_equal(@c.family, 5) + end + + def test_b + assert_raise(ArgumentError) { @c.b = -1.1 } + assert_nothing_raised { @c.b = false } + assert_equal(@c.b, false) + end + + def test_multiline_autowidth + wrap = @p.workbook.styles.add_style({:alignment => {:wrap_text => true}}) + awtr = Axlsx::RichTextRun.new('I\'m bold' + "\n", :b => true) + rt = Axlsx::RichText.new + rt.runs << awtr + @ws.add_row [rt], :style => wrap + ar = [0] + awtr.autowidth(ar) + assert_equal(ar.length, 2) + assert_equal(ar.last, 0) + end + + def test_to_xml + schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD)) + doc = Nokogiri::XML(@ws.to_xml_string) + errors = [] + schema.validate(doc).each do |error| + puts error.message + errors.push error + end + assert(errors.empty?, "error free validation") + + assert(doc.xpath('//rPr/b[@val=1]')) + assert(doc.xpath('//rPr/i[@val=0]')) + assert(doc.xpath('//rPr/b[@val=0]')) + assert(doc.xpath('//rPr/i[@val=1]')) + assert(doc.xpath('//is//t[contains(text(), "hihihi")]')) + assert(doc.xpath('//is//t[contains(text(), "hihi2hi2")]')) + end +end |
