summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorLuka Lüdicke <[email protected]>2020-11-26 19:48:33 +0100
committerLuka Lüdicke <[email protected]>2020-12-10 13:13:54 +0100
commite859d267e9e4239a8f85253f1e303dc27ece0cb6 (patch)
tree7a63936d4ecddb1048228e778f14ff01fb3b693c /test
parentca03954f007ec4d7a7eabe900b609dc906e5c884 (diff)
downloadcaxlsx-e859d267e9e4239a8f85253f1e303dc27ece0cb6.tar.gz
caxlsx-e859d267e9e4239a8f85253f1e303dc27ece0cb6.zip
Fix calculation of worksheet name length
- The previous change caused unnecessary issues - We approximate that Excel calculates the character length with UTF-16 - Fixes https://github.com/caxlsx/caxlsx/issues/67
Diffstat (limited to 'test')
-rw-r--r--test/workbook/worksheet/tc_worksheet.rb45
1 files changed, 24 insertions, 21 deletions
diff --git a/test/workbook/worksheet/tc_worksheet.rb b/test/workbook/worksheet/tc_worksheet.rb
index 7ef3a3ba..734096b5 100644
--- a/test/workbook/worksheet/tc_worksheet.rb
+++ b/test/workbook/worksheet/tc_worksheet.rb
@@ -29,6 +29,30 @@ class TestWorksheet < Test::Unit::TestCase
assert_raises(ArgumentError) { @ws.name = 'foo?bar' }
end
+ def test_name_unique
+ assert_raise(ArgumentError, "worksheet name must be unique") { n = @ws.name; @ws.workbook.add_worksheet(:name=> n) }
+ end
+
+ def test_name_unique_only_checks_other_worksheet_names
+ assert_nothing_raised { @ws.name = @ws.name }
+ assert_nothing_raised { Axlsx::Package.new.workbook.add_worksheet :name => 'Sheet1' }
+ end
+
+ def test_exception_if_name_too_long
+ assert_nothing_raised { @ws.name = 'x' * 31 }
+ assert_raises(ArgumentError) { @ws.name = 'x' * 32 }
+ end
+
+ def test_exception_if_name_too_long_because_of_multibyte_characters
+ four_characters_for_excel = "\u{1F1EB 1F1F7}" # french flag emoji
+ assert_raises(ArgumentError, "name too long!") do
+ @ws.name = four_characters_for_excel + "x" * 28
+ end
+ assert_nothing_raised { @ws.name = "#{four_characters_for_excel}123456789012345678901234567" }
+ assert_nothing_raised { @ws.name = "123456789012345678901234567890…" }
+ assert_nothing_raised { @ws.name = "123456789012345678901234567890✔" }
+ end
+
def test_page_margins
assert(@ws.page_margins.is_a? Axlsx::PageMargins)
end
@@ -449,27 +473,6 @@ class TestWorksheet < Test::Unit::TestCase
assert_equal(@ws.relationships.size, 4, "adding a pivot table adds 1 relationship")
end
-
- def test_name_unique
- assert_raise(ArgumentError, "worksheet name must be unique") { n = @ws.name; @ws.workbook.add_worksheet(:name=> n) }
- end
-
- def test_name_unique_only_checks_other_worksheet_names
- assert_nothing_raised { @ws.name = @ws.name }
- assert_nothing_raised { Axlsx::Package.new.workbook.add_worksheet :name => 'Sheet1' }
- end
-
- def test_exception_if_name_too_long
- assert_nothing_raised { @ws.name = 'x' * 31 }
- assert_raises(ArgumentError) { @ws.name = 'x' * 32 }
- end
-
- def test_exception_if_name_too_long_because_of_multibyte_characters
- three_byte_character = "✔"
- assert_nothing_raised { @ws.name = 'x' * 28 + three_byte_character}
- assert_raises(ArgumentError) { @ws.name = 'x' * 29 + three_byte_character }
- end
-
def test_set_fixed_width_column
@ws.add_row ["mule", "donkey", "horse"], :widths => [20, :ignore, nil]
assert(@ws.column_info.size == 3, "a data item for each column")