File: test_number.rb

package info (click to toggle)
ruby-roo 3.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 8,216 kB
  • sloc: ruby: 6,529; xml: 88; makefile: 6
file content (90 lines) | stat: -rw-r--r-- 2,838 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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_very_simple_scientific_notation
    cell = Roo::Excelx::Cell::Number.new '1e6', 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_rounded_percent_formatted_value
    cell = Roo::Excelx::Cell::Number.new '0.569999999995', nil, ['0%'], nil, nil, nil
    assert_equal('57%', cell.formatted_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'],
      ['GENERAL', '1042'],
      ['0', '1042'],
      ['000000', '001042'],
      ['0.00', '1042.00'],
      ['0.0000', '1042.0000'],
      ['0.000000000', '1042.000000000'],
      ['#,##0', '1,042'],
      ['#,##0.00', '1,042.00'],
      ['#,##0.000', '1,042.000'],
      ['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'],
      ["_-* #,##0.00\\ _€_-;\\-* #,##0.00\\ _€_-;_-* \"-\"??\\ _€_-;_-@_-", '1,042.00'],
      ['@', '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