aboutsummaryrefslogtreecommitdiffstats
path: root/actionwebservice/test/ws/types_test.rb
blob: e66ae65945c5b774396474f4e0ae287c90858fd5 (plain) (blame)
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
require File.dirname(__FILE__) + '/abstract_unit'

class TypesTest < Test::Unit::TestCase
  include WS

  def setup
    @caster = BaseTypeCaster.new
  end

  def test_base_types
    assert_equal(:int, BaseTypes.canonical_type_name(:integer))
    assert_equal(:int, BaseTypes.canonical_type_name(:fixnum))
    assert_equal(Integer, BaseTypes.type_name_to_class(:bignum))
    assert_equal(Date, BaseTypes.type_name_to_class(:date))
    assert_equal(Time, BaseTypes.type_name_to_class(:timestamp))
    assert_equal(TrueClass, BaseTypes.type_name_to_class(:bool))
    assert_equal(:int, BaseTypes.class_to_type_name(Bignum))
    assert_equal(:bool, BaseTypes.class_to_type_name(FalseClass))
    assert_equal(Integer, BaseTypes.canonical_type_class(Fixnum))
    assert_raises(TypeError) do
      BaseTypes.canonical_type_name(:fake)
    end
  end

  def test_casting
    assert_equal(5, @caster.cast("5", Fixnum))
    assert_equal('50.0', @caster.cast(50.0, String))
    assert_equal(true, @caster.cast('true', FalseClass))
    assert_equal(false, @caster.cast('false', TrueClass))
    assert_equal(true, @caster.cast(1, FalseClass))
    assert_equal(false, @caster.cast(0, TrueClass))
    assert_raises(TypeError) do
      @caster.cast('yes', FalseClass)
    end
    assert_equal(3.14159, @caster.cast('3.14159', Float))
    now1 = Time.new
    now2 = @caster.cast("#{now1}", Time)
    assert_equal(now1.tv_sec, now2.tv_sec)
    date1 = Date.parse('2004-01-01')
    date2 = @caster.cast("#{date1}", Date)
    assert_equal(date1, date2)
  end
end