File: test_soapelement.rb

package info (click to toggle)
ruby-soap4r 2.0.5-9
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,032 kB
  • sloc: ruby: 52,729; xml: 266; sh: 42; javascript: 20; makefile: 13; perl: 10
file content (138 lines) | stat: -rw-r--r-- 3,449 bytes parent folder | download | duplicates (5)
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
require 'test/unit'
require 'soap/baseData'
require 'soap/mapping'


module SOAP


class TestSOAPElement < Test::Unit::TestCase
  include SOAP

  def setup
    # Nothing to do.
  end

  def teardown
    # Nothing to do.
  end

  def d(elename = nil, text = nil)
    elename ||= n(nil, nil)
    if text
      SOAPElement.new(elename, text)
    else
      SOAPElement.new(elename)	# do not merge.
    end
  end

  def n(namespace, name)
    XSD::QName.new(namespace, name)
  end

  def test_initialize
    elename = n(nil, nil)
    obj = d(elename)
    assert_equal(elename, obj.elename)
    assert_equal(LiteralNamespace, obj.encodingstyle)
    assert_equal({}, obj.extraattr)
    assert_equal([], obj.precedents)
    assert_equal(nil, obj.qualified)
    assert_equal(nil, obj.text)
    assert(obj.members.empty?)

    obj = d("foo", "text")
    assert_equal(n(nil, "foo"), obj.elename)
    assert_equal("text", obj.text)
  end

  def test_add
    obj = d()
    child = d("abc")
    obj.add(child)
    assert(obj.key?("abc"))
    assert_same(child, obj["abc"])
    assert_same(child, obj["abc"])
    child = d("foo")
    obj.add(child)
    assert_equal(child, obj["foo"])
    child = d("_?a?b_")
    obj.add(child)
    assert_equal(child, obj["_?a?b_"])
  end

  def test_member
    obj = d()
    c1 = d("c1")
    obj.add(c1)
    c2 = d("c2")
    obj.add(c2)
    assert(obj.key?("c1"))
    assert(obj.key?("c2"))
    assert_equal(c1, obj["c1"])
    assert_equal(c2, obj["c2"])
    c22 = d("c22")
    obj["c2"] = c22
    assert(obj.key?("c2"))
    assert_equal(c22, obj["c2"])
    assert_equal(["c1", "c2"], obj.members.sort)
    #
    k_expect = ["c1", "c2"]
    v_expect = [c1, c22]
    obj.each do |k, v|
      assert(k_expect.include?(k))
      assert(v_expect.include?(v))
      k_expect.delete(k)
      v_expect.delete(v)
    end
    assert(k_expect.empty?)
    assert(v_expect.empty?)
  end

  def test_to_obj
    obj = d("root")
    ct1 = d("ct1", "t1")
    obj.add(ct1)
    c2 = d("c2")
    ct2 = d("ct2", "t2")
    c2.add(ct2)
    obj.add(c2)
    assert_equal({ "ct1" => "t1", "c2" => { "ct2" => "t2" }}, obj.to_obj) 
    #
    assert_equal(nil, d().to_obj)
    assert_equal("abc", d(nil, "abc").to_obj)
    assert_equal(nil, d("abc", nil).to_obj)
  end

  def test_from_obj
    source = { "ct1" => "t1", "c2" => { "ct2" => "t2" }}
    assert_equal(source, SOAPElement.from_obj(source).to_obj)
    source = { "1" => nil }
    assert_equal(source, SOAPElement.from_obj(source).to_obj)
    source = {}
    assert_equal(nil, SOAPElement.from_obj(source).to_obj)	# not {}
    source = nil
    assert_equal(nil, SOAPElement.from_obj(source).to_obj)
  end

  def test_from_obj_xmlattr
    source = { "xmlattr_c1" => "t1",
      "ymlattr_c2" => {
        XSD::QName.new("urn:foo", "xmlattr_c2") => "t2",
        XSD::QName.new("urn:foo", "ymlattr_c3") => "t3" }}
    obj = SOAPElement.from_obj(source)
    assert_equal("t1", obj.extraattr[XSD::QName.new(nil, "c1")])
    assert_equal("t2", obj["ymlattr_c2"].extraattr[XSD::QName.new("urn:foo", "c2")])
    assert_equal("t3", obj["ymlattr_c2"]["ymlattr_c3"].text)
    #
    source = { "xmlattr_xmlattr_c1" => "t1",
      "xmlele_xmlattr_c2" => {
        XSD::QName.new("urn:foo", "xmlele_xmlele_c3") => "t3" }}
    obj = SOAPElement.from_obj(source)
    assert_equal("t1", obj.extraattr[XSD::QName.new(nil, "xmlattr_c1")])
    assert_equal("t3", obj["xmlattr_c2"]["xmlele_c3"].text)
  end
end


end