jordi-xml_struct 0.2.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/README.rdoc +152 -0
  2. data/WHATSNEW +10 -0
  3. data/lib/xml_struct/adapters/hpricot.rb +47 -0
  4. data/lib/xml_struct/adapters/rexml.rb +34 -0
  5. data/lib/xml_struct/array_notation.rb +44 -0
  6. data/lib/xml_struct/blankish_slate.rb +1 -1
  7. data/lib/xml_struct/collection_proxy.rb +7 -3
  8. data/lib/xml_struct/default_adapter.rb +15 -0
  9. data/lib/xml_struct/method_missing_dispatchers.rb +43 -0
  10. data/lib/xml_struct/string.rb +6 -2
  11. data/lib/xml_struct.rb +31 -52
  12. data/xml_struct.gemspec +38 -0
  13. metadata +17 -49
  14. data/README.markdown +0 -151
  15. data/Rakefile +0 -36
  16. data/lib/xml_struct/common_behaviours.rb +0 -53
  17. data/test/samples/lorem.xml +0 -63
  18. data/test/samples/recipe.xml +0 -16
  19. data/test/samples/weird_characters.xml +0 -2
  20. data/test/test_helper.rb +0 -39
  21. data/test/vendor/test-spec/README +0 -378
  22. data/test/vendor/test-spec/ROADMAP +0 -1
  23. data/test/vendor/test-spec/Rakefile +0 -146
  24. data/test/vendor/test-spec/SPECS +0 -161
  25. data/test/vendor/test-spec/TODO +0 -2
  26. data/test/vendor/test-spec/bin/specrb +0 -107
  27. data/test/vendor/test-spec/examples/stack.rb +0 -38
  28. data/test/vendor/test-spec/examples/stack_spec.rb +0 -119
  29. data/test/vendor/test-spec/lib/test/spec/dox.rb +0 -148
  30. data/test/vendor/test-spec/lib/test/spec/rdox.rb +0 -25
  31. data/test/vendor/test-spec/lib/test/spec/should-output.rb +0 -49
  32. data/test/vendor/test-spec/lib/test/spec/version.rb +0 -8
  33. data/test/vendor/test-spec/lib/test/spec.rb +0 -660
  34. data/test/vendor/test-spec/test/spec_dox.rb +0 -39
  35. data/test/vendor/test-spec/test/spec_flexmock.rb +0 -209
  36. data/test/vendor/test-spec/test/spec_mocha.rb +0 -104
  37. data/test/vendor/test-spec/test/spec_nestedcontexts.rb +0 -26
  38. data/test/vendor/test-spec/test/spec_new_style.rb +0 -80
  39. data/test/vendor/test-spec/test/spec_should-output.rb +0 -26
  40. data/test/vendor/test-spec/test/spec_testspec.rb +0 -699
  41. data/test/vendor/test-spec/test/spec_testspec_order.rb +0 -26
  42. data/test/vendor/test-spec/test/test_testunit.rb +0 -22
  43. data/test/xml_struct_test.rb +0 -185
@@ -1,39 +0,0 @@
1
- require 'test/spec'
2
-
3
- require 'test/spec/dox'
4
-
5
- context "SpecDox" do
6
- setup do
7
- r = Test::Unit::UI::SpecDox::TestRunner.new(nil)
8
- @unmangler = r.method(:unmangle)
9
- end
10
-
11
- specify "can unmangle Test::Unit names correctly" do
12
- @unmangler["test_foo_bar(TestFoo)"].should.equal ["Foo", "foo bar"]
13
- @unmangler["test_foo_bar(FooTest)"].should.equal ["Foo", "foo bar"]
14
- @unmangler["test_he_he(Foo)"].should.equal ["Foo", "he he"]
15
- @unmangler["test_heh(Foo)"].should.equal ["Foo", "heh"]
16
-
17
- @unmangler["test_heh(Test::Unit::TC_Assertions)"].
18
- should.equal ["Test::Unit::TC_Assertions", "heh"]
19
-
20
- @unmangler["test_heh(Foo::Bar::Test)"].
21
- should.equal ["Foo::Bar::Test", "heh"]
22
- end
23
-
24
- specify "can unmangle Test::Spec names correctly" do
25
- @unmangler["test_spec {context} 007 [whee]()"].
26
- should.equal ["context", "whee"]
27
- @unmangler["test_spec {a bit longish context} 069 [and more text]()"].
28
- should.equal ["a bit longish context", "and more text"]
29
- @unmangler["test_spec {special chars !\"/&%$} 2 [special chars !\"/&%$]()"].
30
- should.equal ["special chars !\"/&%$", "special chars !\"/&%$"]
31
- @unmangler["test_spec {[]} 666666 [{}]()"].
32
- should.equal ["[]", "{}"]
33
- end
34
-
35
- specify "has sensible fallbacks" do
36
- @unmangler["weird"].should.equal [nil, nil]
37
- end
38
- end
39
-
@@ -1,209 +0,0 @@
1
- # Adapted from flexmock (http://onestepback.org/software/flexmock).
2
- #
3
- # Copyright 2006 by Jim Weirich (jweirich@one.net).
4
- # All rights reserved.
5
-
6
- # Permission is granted for use, copying, modification, distribution,
7
- # and distribution of modified versions of this work as long as the
8
- # above copyright notice is included.
9
-
10
-
11
- require 'test/spec'
12
-
13
- begin
14
- require 'flexmock'
15
- rescue LoadError
16
- context "flexmock" do
17
- specify "can not be found. BAIL OUT!" do
18
- end
19
- end
20
- else
21
-
22
- context "flexmock" do
23
- include FlexMock::TestCase
24
-
25
- setup do
26
- @mock = FlexMock.new
27
- end
28
-
29
- specify "should receive and return" do
30
- args = nil
31
- @mock.should_receive(:hi).and_return { |a, b| args = [a,b] }
32
- @mock.hi(1,2)
33
- args.should.equal [1,2]
34
- end
35
-
36
- specify "should receive without a block" do
37
- lambda {
38
- @mock.should_receive(:blip)
39
- @mock.blip
40
- }.should.not.raise
41
- end
42
-
43
- specify "should receive and return with a block" do
44
- called = false
45
- @mock.should_receive(:blip).and_return { |block| block.call }
46
- @mock.blip { called = true }
47
- called.should.be true
48
- end
49
-
50
- specify "should have a return value" do
51
- @mock.should_receive(:blip).and_return { 10 }
52
- @mock.blip.should.equal 10
53
- end
54
-
55
- specify "should handle missing methods" do
56
- ex = lambda {
57
- @mock.not_defined
58
- }.should.raise(NoMethodError)
59
- ex.message.should.match(/not_defined/)
60
- end
61
-
62
- specify "should ignore missing methods" do
63
- lambda {
64
- @mock.should_ignore_missing
65
- @mock.blip
66
- }.should.not.raise
67
- end
68
-
69
- specify "should count correctly" do
70
- @mock.should_receive(:blip).times(3)
71
- @mock.blip
72
- @mock.blip
73
- @mock.blip
74
- lambda { @mock.flexmock_verify }.should.not.raise Test::Unit::AssertionFailedError
75
- end
76
-
77
- specify "should raise on bad counts" do
78
- @mock.should_receive(:blip).times(3)
79
- @mock.blip
80
- @mock.blip
81
- lambda { @mock.flexmock_verify }.should.raise Test::Unit::AssertionFailedError
82
- end
83
-
84
- specify "should handle undetermined counts" do
85
- lambda {
86
- FlexMock.use('fs') { |m|
87
- m.should_receive(:blip)
88
- m.blip
89
- m.blip
90
- m.blip
91
- }
92
- }.should.not.raise Test::Unit::AssertionFailedError
93
- end
94
-
95
- specify "should handle zero counts" do
96
- lambda {
97
- FlexMock.use { |m|
98
- m.should_receive(:blip).never
99
- m.blip
100
- }
101
- }.should.raise Test::Unit::AssertionFailedError
102
- end
103
-
104
- specify "should have file IO with use" do
105
- file = FlexMock.use do |m|
106
- filedata = ["line 1", "line 2"]
107
- m.should_receive(:gets).times(3).and_return { filedata.shift }
108
- count_lines(m).should.equal 2
109
- end
110
- end
111
-
112
- def count_lines(stream)
113
- result = 0
114
- while line = stream.gets
115
- result += 1
116
- end
117
- result
118
- end
119
-
120
- specify "should have use" do
121
- lambda {
122
- FlexMock.use do |m|
123
- m.should_receive(:blip).times(2)
124
- m.blip
125
- end
126
- }.should.raise Test::Unit::AssertionFailedError
127
- end
128
-
129
- specify "should handle failures during use" do
130
- ex = lambda {
131
- FlexMock.use do |m|
132
- m.should_receive(:blip).times(2)
133
- xyz
134
- end
135
- }.should.raise NameError
136
- ex.message.should.match(/undefined local variable or method/)
137
- end
138
-
139
- specify "should deal with sequential values" do
140
- values = [1,4,9,16]
141
- @mock.should_receive(:get).and_return { values.shift }
142
- @mock.get.should.equal 1
143
- @mock.get.should.equal 4
144
- @mock.get.should.equal 9
145
- @mock.get.should.equal 16
146
- end
147
-
148
- specify "respond_to? should return false for non handled methods" do
149
- @mock.should.not.respond_to :blah
150
- end
151
-
152
- specify "respond_to? should return true for explicit methods" do
153
- @mock.should_receive(:xyz)
154
- @mock.should.respond_to :xyz
155
- end
156
-
157
- specify "respond_to? should return true for missing_methods when should_ignore_missing" do
158
- @mock.should_ignore_missing
159
- @mock.should.respond_to :yada
160
- end
161
-
162
- specify "should raise error on unknown method proc" do
163
- lambda {
164
- @mock.method(:xyzzy)
165
- }.should.raise NameError
166
- end
167
-
168
- specify "should return callable proc on method" do
169
- got_it = false
170
- @mock.should_receive(:xyzzy).and_return { got_it = true }
171
- method_proc = @mock.method(:xyzzy)
172
- method_proc.should.not.be.nil
173
- method_proc.call
174
- got_it.should.be true
175
- end
176
-
177
- specify "should return do nothing proc for missing methods" do
178
- @mock.should_ignore_missing
179
- method_proc = @mock.method(:plugh)
180
- method_proc.should.not.be.nil
181
- lambda { method_proc.call }.should.not.raise
182
- end
183
- end
184
-
185
-
186
- class TemperatureSampler
187
- def initialize(sensor)
188
- @sensor = sensor
189
- end
190
-
191
- def average_temp
192
- total = (0...3).collect { @sensor.read_temperature }.inject { |i, s| i + s }
193
- total / 3.0
194
- end
195
- end
196
-
197
- context "flexmock" do
198
- include FlexMock::TestCase
199
-
200
- specify "works with test/spec" do
201
- sensor = flexmock("temp")
202
- sensor.should_receive(:read_temperature).times(3).and_return(10, 12, 14)
203
-
204
- sampler = TemperatureSampler.new(sensor)
205
- sampler.average_temp.should.equal 12
206
- end
207
- end
208
-
209
- end # if not rescue LoadError
@@ -1,104 +0,0 @@
1
- # Adapted from mocha (http://mocha.rubyforge.org/).
2
- #
3
- # Copyright (C) 2006 Revieworld Ltd.
4
- #
5
- # You may use, copy and redistribute this library under the same terms
6
- # as Ruby itself (see www.ruby-lang.org/en/LICENSE.txt) or under the
7
- # MIT license (see MIT-LICENSE file).
8
-
9
- require 'test/spec'
10
-
11
- begin
12
- require 'mocha'
13
- rescue LoadError
14
- context "mocha" do
15
- specify "can not be found. BAIL OUT!" do
16
- end
17
- end
18
- else
19
-
20
- context "mocha" do
21
- specify "works with test/spec" do
22
- object = mock()
23
- object.expects(:expected_method).with(:p1, :p2).returns(:result)
24
- object.expected_method(:p1, :p2).should.equal :result
25
- end
26
- end
27
-
28
- class Enterprise
29
- def initialize(dilithium)
30
- @dilithium = dilithium
31
- end
32
-
33
- def go(warp_factor)
34
- warp_factor.times { @dilithium.nuke(:anti_matter) }
35
- end
36
- end
37
-
38
- context "mocha" do
39
- specify "works with test/spec and Enterprise example" do
40
- dilithium = mock()
41
- dilithium.expects(:nuke).with(:anti_matter).at_least_once # auto-verified at end of test
42
- enterprise = Enterprise.new(dilithium)
43
- enterprise.go(2)
44
- end
45
- end
46
-
47
- class Order
48
- attr_accessor :shipped_on
49
-
50
- def total_cost
51
- line_items.inject(0) { |total, line_item| total + line_item.price } + shipping_cost
52
- end
53
-
54
- def total_weight
55
- line_items.inject(0) { |total, line_item| total + line_item.weight }
56
- end
57
-
58
- def shipping_cost
59
- total_weight * 5 + 10
60
- end
61
-
62
- class << self
63
-
64
- def find_all
65
- # Database.connection.execute('select * from orders...
66
- end
67
-
68
- def number_shipped_since(date)
69
- find_all.select { |order| order.shipped_on > date }.size
70
- end
71
-
72
- def unshipped_value
73
- find_all.inject(0) { |total, order| order.shipped_on ? total : total + order.total_cost }
74
- end
75
-
76
- end
77
-
78
- end
79
-
80
- context "stubba" do
81
- specify "works with test/spec and instance method stubbing" do
82
- order = Order.new
83
- order.stubs(:total_weight).returns(10)
84
- order.shipping_cost.should.equal 60
85
- end
86
-
87
- specify "works with test/spec and class method stubbing" do
88
- now = Time.now; week_in_secs = 7 * 24 * 60 * 60
89
- order_1 = Order.new; order_1.shipped_on = now - 1 * week_in_secs
90
- order_2 = Order.new; order_2.shipped_on = now - 3 * week_in_secs
91
- Order.stubs(:find_all).returns([order_1, order_2])
92
- Order.number_shipped_since(now - 2 * week_in_secs).should.equal 1
93
- end
94
-
95
- specify "works with test/spec and global instance method stubbing" do
96
- Order.stubs(:find_all).returns([Order.new, Order.new, Order.new])
97
- Order.any_instance.stubs(:shipped_on).returns(nil)
98
- Order.any_instance.stubs(:total_cost).returns(10)
99
- Order.unshipped_value.should.equal 30
100
- end
101
- end
102
-
103
- end # if not rescue LoadError
104
-
@@ -1,26 +0,0 @@
1
- require 'test/spec'
2
-
3
- context "Empty context" do
4
- # should.not.raise
5
- end
6
-
7
- context "Outer context" do
8
- context "Inner context" do
9
- specify "is nested" do
10
- end
11
- specify "has multiple empty specifications" do
12
- end
13
- end
14
- context "Second Inner context" do
15
- context "Inmost context" do
16
- specify "works too!" do
17
- end
18
- specify "whoo!" do
19
- end
20
- end
21
- specify "is indented properly" do
22
- end
23
- specify "still runs in order of definition" do
24
- end
25
- end
26
- end
@@ -1,80 +0,0 @@
1
- describe_shared "A new-style shared description" do
2
- it "should work as well with shared descriptions" do
3
- true.should.be true
4
- end
5
- end
6
-
7
- describe "A new-style description" do
8
- before do
9
- @before = true
10
- @a = 2
11
- end
12
-
13
- before(:each) do
14
- @before_each = true
15
- end
16
-
17
- before(:all) do
18
- $before_all = true
19
- end
20
-
21
- it "should run before-clauses" do
22
- $before_all.should.be true
23
- @before.should.be true
24
- @before_each.should.be true
25
- end
26
-
27
- it "should behave like context/specify" do
28
- (1+1).should.equal 2
29
- end
30
-
31
- xit "this is disabled" do
32
- bla
33
- end
34
-
35
- after do
36
- @a.should.equal 2
37
- @a = 3
38
- end
39
-
40
- after(:each) do
41
- @a.should.equal 3
42
- end
43
-
44
- after(:all) do
45
- @b = 1
46
- end
47
-
48
- after(:all) do
49
- @b.should.equal 1
50
- end
51
-
52
- $describescope = self
53
- it "should raise on unimplement{ed,able} before/after" do
54
- lambda {
55
- $describescope.before(:foo) {}
56
- }.should.raise(ArgumentError)
57
- lambda {
58
- $describescope.after(:foo) {}
59
- }.should.raise(ArgumentError)
60
-
61
- lambda {
62
- context "foo" do
63
- end
64
- }.should.raise(Test::Spec::DefinitionError)
65
- end
66
-
67
- describe "when nested" do
68
- it "should work" do
69
- end
70
- end
71
-
72
- behaves_like "A new-style shared description"
73
- end
74
-
75
- describe "An empty description" do
76
- end
77
-
78
- xdescribe "An disabled description" do
79
- it "should not be run"
80
- end