| Name | Total Lines | Lines of Code | Total Coverage | Code Coverage | 
|---|---|---|---|---|
| spec/xml_spec.rb | 144 | 128 | 100.00% | 100.00% | 
Code reported as executed by Ruby looks like this...and this: this line is also marked as covered.Lines considered as run by rcov, but not reported by Ruby, look like this,and this: these lines were inferred by rcov (using simple heuristics).Finally, here's a line marked as not executed.
| 1 require File.expand_path('../spec_helper', __FILE__) | 
| 2 require 'asir/coder/xml' | 
| 3 | 
| 4 describe "ASIR::Coder::XML" do | 
| 5 before(:each) do | 
| 6 @enc = ASIR::Coder::XML.new | 
| 7 @dec = @enc.dup | 
| 8 end | 
| 9 | 
| 10 basic_objs = [ ] | 
| 11 | 
| 12 [ | 
| 13 nil, | 
| 14 true, | 
| 15 false, | 
| 16 ].each do | x | | 
| 17 basic_objs << x | 
| 18 it "should handle #{x.inspect}" do | 
| 19 xml = @enc.encode(x) | 
| 20 xml.should == "<#{x.class.name} />" | 
| 21 @dec.decode(xml).should == x | 
| 22 end | 
| 23 end | 
| 24 | 
| 25 [ | 
| 26 1234, | 
| 27 1.234, | 
| 28 ].each do | x | | 
| 29 basic_objs << x | 
| 30 it "should handle #{x.inspect}" do | 
| 31 xml = @enc.encode(x) | 
| 32 xml.should == "<#{x.class.name} v=\"#{x.to_s}\" />" | 
| 33 @dec.decode(xml).should == x | 
| 34 end | 
| 35 end | 
| 36 | 
| 37 [ | 
| 38 :symbol, | 
| 39 ].each do | x | | 
| 40 basic_objs << x | 
| 41 it "should handle #{x.inspect}" do | 
| 42 xml = @enc.encode(x) | 
| 43 xml.should == "<#{x.class.name} >#{x.to_s}</#{x.class.name}>" | 
| 44 @dec.decode(xml).should == x | 
| 45 end | 
| 46 end | 
| 47 | 
| 48 [ | 
| 49 'String', | 
| 50 ].each do | x | | 
| 51 basic_objs << x | 
| 52 it "should handle #{x.inspect}" do | 
| 53 xml = @enc.encode(x) | 
| 54 xml.should == "<#{x.class.name} id=\"1\" >#{x.to_s}</#{x.class.name}>" | 
| 55 @dec.decode(xml).should == x | 
| 56 end | 
| 57 end | 
| 58 | 
| 59 it "should handle empty Array" do | 
| 60 x = [ ] | 
| 61 xml = @enc.encode(x) | 
| 62 xml.should == "<#{x.class.name} id=\"1\" ></#{x.class.name}>" | 
| 63 @dec.decode(xml).should == x | 
| 64 end | 
| 65 | 
| 66 it "should handle Array" do | 
| 67 x = [ *basic_objs ] | 
| 68 xml = @enc.encode(x) | 
| 69 xml.should =~ %r{\A<#{x.class.name} id=\"1\" ><NilClass /><TrueClass /><FalseClass /><Fixnum v="1234" /><Float v="1.234" /><Symbol >symbol</Symbol><String id=\"[^"]+\" >String</String></#{x.class.name}>\Z} # " emacs | 
| 70 @dec.decode(xml).should == x | 
| 71 end | 
| 72 | 
| 73 it "should handle empty Hash" do | 
| 74 x = { } | 
| 75 xml = @enc.encode(x) | 
| 76 xml.should == "<#{x.class.name} id=\"1\" ></#{x.class.name}>" | 
| 77 @dec.decode(xml).should == x | 
| 78 end | 
| 79 | 
| 80 it "should handle Hash" do | 
| 81 x = Hash[ *basic_objs.map{|e| e.inspect}.zip(basic_objs).flatten ] | 
| 82 xml = @enc.encode(x) | 
| 83 xml.should =~ %r{\A<#{x.class.name} id=\"1\" >} | 
| 84 xml.should =~ %r{</#{x.class.name}>\Z} | 
| 85 basic_objs.each do | v | | 
| 86 vx = @enc.dup.encode(v) | 
| 87 vx = vx.gsub(/id="[^"]+"/, 'id="\d+"') | 
| 88 xml.should =~ Regexp.new(vx) | 
| 89 xml.should =~ %r{ >#{v.inspect}</String>} | 
| 90 end | 
| 91 @dec.decode(xml).should == x | 
| 92 end | 
| 93 | 
| 94 class ASIR::Coder::XML::Test | 
| 95 attr_accessor :a, :h, :o | 
| 96 end | 
| 97 | 
| 98 it "should handle deep objects" do | 
| 99 x = ASIR::Coder::XML::Test.new | 
| 100 x.a = [ *basic_objs ] | 
| 101 x.h = Hash[ *basic_objs.map{|e| e.inspect}.zip(basic_objs).flatten ] | 
| 102 x.o = ASIR::Coder::XML::Test.new | 
| 103 x.o.a = 123 | 
| 104 xml = @enc.encode(x) | 
| 105 xml.should =~ %r{<#{x.class.name.gsub('::', '.')} id=\"1\" >} | 
| 106 xml.should =~ %r{</#{x.class.name.gsub('::', '.')}>} | 
| 107 y = @dec.decode(xml) | 
| 108 y.a.should == x.a | 
| 109 y.h.should == x.h | 
| 110 y.o.class.should == ASIR::Coder::XML::Test | 
| 111 y.o.a.should == x.o.a | 
| 112 x.instance_variables.sort { |a, b| a.to_s <=> b.to_s}.should == | 
| 113 y.instance_variables.sort { | a, b | a.to_s <=> b.to_s } | 
| 114 end | 
| 115 | 
| 116 it "should handle multiple references to same objects." do | 
| 117 x = Hash[ *basic_objs.map{|e| e.inspect}.zip(basic_objs).flatten ] | 
| 118 y = [ 1, 2 ] | 
| 119 x = [ x, x, y, y ] | 
| 120 xml = @enc.encode(x) | 
| 121 y = @dec.decode(xml) | 
| 122 y[0].object_id.should == y[1].object_id | 
| 123 y[2].object_id.should == y[3].object_id | 
| 124 end | 
| 125 | 
| 126 it "should handle self-referencing Array." do | 
| 127 x = [ 1 ] | 
| 128 x << x | 
| 129 xml = @enc.encode(x) | 
| 130 y = @dec.decode(xml) | 
| 131 y[0].should == x[0] | 
| 132 y[1].object_id.should == y.object_id | 
| 133 end | 
| 134 | 
| 135 it "should handle self-referencing Hash." do | 
| 136 x = { :a => 1 } | 
| 137 x[:self] = x | 
| 138 xml = @enc.encode(x) | 
| 139 y = @dec.decode(xml) | 
| 140 y[:a].should == x[:a] | 
| 141 y[:self].object_id.should == y.object_id | 
| 142 end | 
| 143 | 
| 144 end | 
Generated on Fri Jan 27 17:37:46 -0600 2012 with rcov 0.9.8