File: test_prim.rb

package info (click to toggle)
ruby-rsec 0.4.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 272 kB
  • sloc: ruby: 2,130; lisp: 13; makefile: 3
file content (60 lines) | stat: -rw-r--r-- 1,651 bytes parent folder | download | duplicates (3)
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
require "#{File.dirname(__FILE__)}/helpers.rb"

class TestPrim < TC
  def test_floating
    [:double].each do |ty|
      p = prim ty
      ase INVALID, p.parse('d')
      ase 3.2e5.round, p.parse('+3.2e5').round
      ase INVALID, p.parse(' 4.8')

      p = prim ty, allowed_sign: ''
      ase 1.5e-3.round(4), p.parse('1.5E-3').round(4)
      ase INVALID, p.parse('+3.0')

      p = prim ty, allowed_sign: '-'
      ase (-5.0).round, p.parse('-5').round
      ase INVALID, p.parse('-')
      ase INVALID, p.parse('+5')
      ase 5.0.round, p.parse('5').round
      
      # with map block
      p = prim(ty){|x| x * 2 }
      ase 100.0.round, p.parse('50').round
    end
  end

  def test_hex_floating
    return # NOTE Ruby 1.9.3 removed Float() from hex values
    [:hex_double].each do |ty|
      p = prim ty
      ase Float('0x3.2').round(4), p.parse('0x3.2').round(4)

      # with map block
      p = prim(ty){|x| x - 0.1 }
      ase (Float('0x3.2') - 0.1).round(4), p.parse('0x3.2').round(4)
    end
  end

  def test_integer
    [:int32, :unsigned_int32, :int64, :unsigned_int64].each do |ty|
      p = prim ty
      ase 432, p.parse('432')
      p = prim ty, base: 4
      ase '120'.to_i(4), p.parse('120')
      p = prim ty, base: 35
      ase '1ax'.to_i(35), p.parse('1ax')
    end

    p = prim :int32, allowed_signs: '-'
    ase INVALID, p.parse('+12')
    ase INVALID, p.parse('123333333333333333333333333333333333')
    ase INVALID, p.parse('-')
    ase -49, p.parse('-49')

    assert_raise RuntimeError do
      prim :unsigned_int32, allowed_signs: '+-'
    end
  end
end