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
require 'rexml/document'
require 'rexml/formatters/transitive'
require File.dirname(__FILE__) + '/../../../spec_helper'

# Maybe this can be cleaned
describe "REXML::Document#write" do
  before :each do
    @d      = REXML::Document.new
    city    = REXML::Element.new "Springfield"
    street  = REXML::Element.new "EvergreenTerrace"
    address = REXML::Element.new "House742"
    @d << city << street << address
    @str = ""
  end

  it "returns document source as string" do
    @d.write(@str)
    @str.should == "<Springfield><EvergreenTerrace><House742/></EvergreenTerrace></Springfield>"
  end

  it "returns document indented" do
    @d.write(@str, 2)
    @str.should =~ /\s*<Springfield>\s*<EvergreenTerrace>\s*<House742\/>\s*<\/EvergreenTerrace>\s*<\/Springfield>/
  end

  # REXML in p114 is screwed up:
  # Document#write uses wrong arity for Formatters::Transitive#initialize
  #
  # In branch_1_8 in rev 15833 REXML is organized completely differently.
  # So we are waiting for further changes to REXML in 1.8.x branch.
  ruby_bug do
    it "returns document with transitive support" do
      @d.write(@str, 2, true)
      @str.should =~  "\s*<Springfield\s*><EvergreenTerrace\s*><House742\s*\/><\/EvergreenTerrace\s*><\/Springfield\s*>"
    end
  end

  it "returns document with support for IE" do
    @d.write(@str, -1, false, true)
    @str.should ==  "<Springfield><EvergreenTerrace><House742 /></EvergreenTerrace></Springfield>"
  end
end



1)
REXML::Document#write returns document with transitive support ERROR
wrong number of arguments (got 2, required 1)
    REXML::Formatters::Transitive#initialize at /Users/antares/dev/opensource/rbx/stdlib/rexml/formatters/transitive.rb:16
                                   Class#new at kernel/bootstrap/class.rb:16
                       REXML::Document#write at /Users/antares/dev/opensource/rbx/stdlib/rexml/document.rb:188
                        Object#__script__ {} at ./spec/ruby/1.8/library/rexml/document/write_spec.rb:33
                                   Proc#call at kernel/core/proc.rb:84
                               MSpec.protect at ./mspec/runner/mspec.rb:116
                         RunState#protect {} at ./mspec/runner/state.rb:46
                                  Array#each at kernel/core/array.rb:573
                            RunState#protect at ./mspec/runner/state.rb:46
                         RunState#process {} at ./mspec/runner/state.rb:64
                                  Array#each at kernel/core/array.rb:573
                            RunState#process at ./mspec/runner/state.rb:68
                              MSpec.describe at ./mspec/runner/mspec.rb:21
                             Object#describe at ./mspec/runner/object.rb:11
                           Object#__script__ at ./spec/ruby/1.8/library/rexml/document/write_spec.rb:6
                    CompiledMethod#as_script at kernel/core/compiled_method.rb:210
                         Compile.single_load at kernel/core/compile.rb:235
                     Compile.unified_load {} at kernel/core/compile.rb:150
                                  Array#each at kernel/core/array.rb:573
                        Compile.unified_load at kernel/core/compile.rb:120
                                 Kernel.load at kernel/core/compile.rb:389
                              MSpec.files {} at ./mspec/runner/mspec.rb:37
                                   Proc#call at kernel/core/proc.rb:84
                               MSpec.protect at ./mspec/runner/mspec.rb:112
                              MSpec.files {} at ./mspec/runner/mspec.rb:38
                                  Array#each at kernel/core/array.rb:573
                                 MSpec.files at ./mspec/runner/mspec.rb:34
                               MSpec.process at ./mspec/runner/mspec.rb:27
                           Object#__script__ at mspec/bin/mspec-ci:59
                    CompiledMethod#as_script at kernel/core/compiled_method.rb:210
                         Compile.single_load at kernel/core/compile.rb:235
                 Compile.load_from_extension at kernel/core/compile.rb:312
                           Object#__script__ at kernel/loader.rb:190