public
Description: Ruby WDDX gem.
Homepage: http://code.juretta.com/ruby/wddx/
Clone URL: git://github.com/juretta/wddx.git
wddx / test / tc_wddx_deserializer_test.rb
100755 105 lines (86 sloc) 2.945 kb
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
require File.dirname(__FILE__) + '/test_helper.rb'
 
class TcWddxDeserializerTest < Test::Unit::TestCase
 
  def setup
    @wddx = WDDX.load(File.open(FIXTURES + "/test.1.xml"))
  end
                      
  def test_header
    assert @wddx.kind_of?(WDDX::WddxPacket)
    assert_equal 1.0, @wddx.version
    assert_equal "Das ist ein Kommentar", @wddx.comment
  end
  
  def test_data
    #assert_equal Hash, @wddx.data.class
    assert @wddx.data.kind_of?(Hash)
    assert_equal 9, @wddx.data.size
  end
 
  def test_data_elements
    assert_not_nil @wddx.data
    keys = %w(aNull aString aNumber aDateTime aBoolean anArray aBinary anObject aRecordset)
    @wddx.data.each do |k,v|
      keys.delete(k)
    end
    assert_equal 0, keys.size
  end
                              
  def test_a_null
    assert_nil @wddx.data['aNull']
  end
  
  def test_a_string
    assert_equal "a string", @wddx.data['aString']
  end
  
  def test_a_number
    assert_equal(-12.456, @wddx.data['aNumber'])
  end
  
  def test_a_datetime
    assert_equal "1998-06-11T16:32:12Z", @wddx.data['aDateTime'].gmtime.iso8601
  end
  
  def test_a_boolean
    assert @wddx.data['aBoolean']
  end
  
  def test_an_object
    hash = {"n" => -12.456, "s" => "a string"}
    assert_equal hash, @wddx.data['anObject']
  end
  
  def test_an_array
    ary = @wddx.data['anArray']
    assert ary.kind_of?(Array)
    assert_equal 2, ary.size
    assert_equal 10, ary[0]
    assert_equal "second element", ary[1]
  end
  
  # WDDX DataType -> RecordSet
  def test_a_recordset
    recordset = @wddx.data["aRecordset"]
    assert recordset.kind_of?(WDDX::RecordSet)
 
    assert_equal ["John Doe", "Jane Doe"], recordset.fetch_fields("NAME")
    assert_equal [34, 31], recordset.fetch("AGE")
  end
  
  # WDDX DataType -> Binary
  def test_a_binary
     binary = @wddx.data["aBinary"]
     assert binary.kind_of?(WDDX::Binary)
     assert_equal "MIIBJASHETAS", binary.encode
  end
 
  # File handling is different in Ruby 1.9 - use "rb:ascii-8bit" for 1.9
  def test_binary
    mode = is19? ? "rb:ascii-8bit" : "rb"
    bin_file_content = File.open("#{FIXTURES}/favicon.ico", mode).read
    c = WDDX.load(WDDX::Binary.new(bin_file_content).to_wddx)
    assert_equal bin_file_content, c.data.bin_data
  end
 
  def no_test_ascii_characters
    # <wddxPacket version='1.0'><header/><data><string>A</string></data></wddxPacket>
    # int(65)
    # int(65)
    # bool(true)
    expect = []
    File.open(FIXTURES + "/ascii_characters.txt") do |f|
      wddx = nil
      f.each do |line|
        wddx = WDDX::Wddx.create(line) if line =~ /^<wddxPacket/
        if line =~ /int\(([0-9]+)\)/
          #assert_equal $1.to_i, (wddx.data.to_s)[0], "Character #{wddx.data.to_s}"
        end
      end
    end
  end
 
end