aboutsummaryrefslogtreecommitdiffstats
path: root/test/excelx/cell/test_number.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/excelx/cell/test_number.rb')
-rw-r--r--test/excelx/cell/test_number.rb74
1 files changed, 74 insertions, 0 deletions
diff --git a/test/excelx/cell/test_number.rb b/test/excelx/cell/test_number.rb
new file mode 100644
index 0000000..45db819
--- /dev/null
+++ b/test/excelx/cell/test_number.rb
@@ -0,0 +1,74 @@
+require 'test_helper'
+
+class TestRooExcelxCellNumber < Minitest::Test
+ def number
+ Roo::Excelx::Cell::Number
+ end
+
+ def test_float
+ cell = Roo::Excelx::Cell::Number.new '42.1', nil, ['General'], nil, nil, nil
+ assert_kind_of(Float, cell.value)
+ end
+
+ def test_integer
+ cell = Roo::Excelx::Cell::Number.new '42', nil, ['0'], nil, nil, nil
+ assert_kind_of(Integer, cell.value)
+ end
+
+ def test_scientific_notation
+ cell = Roo::Excelx::Cell::Number.new '1.2E-3', nil, ['0'], nil, nil, nil
+ assert_kind_of(Float, cell.value)
+ end
+
+ def test_simple_scientific_notation
+ cell = Roo::Excelx::Cell::Number.new '1E-3', nil, ['0'], nil, nil, nil
+ assert_kind_of(Float, cell.value)
+ end
+
+ def test_percent
+ cell = Roo::Excelx::Cell::Number.new '42.1', nil, ['0.00%'], nil, nil, nil
+ assert_kind_of(Float, cell.value)
+ end
+
+ def test_formats_with_negative_numbers
+ [
+ ['#,##0 ;(#,##0)', '(1,042)'],
+ ['#,##0 ;[Red](#,##0)', '[Red](1,042)'],
+ ['#,##0.00;(#,##0.00)', '(1,042.00)'],
+ ['#,##0.00;[Red](#,##0.00)', '[Red](1,042.00)']
+ ].each do |style_format, result|
+ cell = Roo::Excelx::Cell::Number.new '-1042', nil, [style_format], nil, nil, nil
+ assert_equal result, cell.formatted_value, "Style=#{style_format}"
+ end
+ end
+
+ def test_numbers_with_cell_errors
+ Roo::Excelx::ERROR_VALUES.each do |error|
+ cell = Roo::Excelx::Cell::Number.new error, nil, ['General'], nil, nil, nil
+ assert_equal error, cell.value
+ assert_equal error, cell.formatted_value
+ end
+ end
+
+ def test_formats
+ [
+ ['General', '1042'],
+ ['0', '1042'],
+ ['0.00', '1042.00'],
+ ['#,##0', '1,042'],
+ ['#,##0.00', '1,042.00'],
+ ['0%', '104200%'],
+ ['0.00%', '104200.00%'],
+ ['0.00E+00', '1.04E+03'],
+ ['#,##0 ;(#,##0)', '1,042'],
+ ['#,##0 ;[Red](#,##0)', '1,042'],
+ ['#,##0.00;(#,##0.00)', '1,042.00'],
+ ['#,##0.00;[Red](#,##0.00)', '1,042.00'],
+ ['##0.0E+0', '1.0E+03'],
+ ['@', '1042']
+ ].each do |style_format, result|
+ cell = Roo::Excelx::Cell::Number.new '1042', nil, [style_format], nil, nil, nil
+ assert_equal result, cell.formatted_value, "Style=#{style_format}"
+ end
+ end
+end