diff options
Diffstat (limited to 'test/excelx/cell/test_number.rb')
| -rw-r--r-- | test/excelx/cell/test_number.rb | 74 |
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 |
