require 'rexml/document'
require 'amrita2'
require 'amrita2/testsupport'
include Amrita2
include Amrita2::Filters
context "Trace" do
class BadFilter < Amrita2::Filters::Base
def value_filter_code(de, cg, value_name)
cg.code("aaa(")
end
end
specify "code tracer" do
text = '
'
t = Amrita2::Template.new(text) do |e, name, filters|
filters.unshift BadFilter.new
end
code = ""
t.set_trace(:code) do |msg|
code << msg << "\n"
end
proc { t.render_with(:aaa=>'Amrita2') }.should raise_error
code.should_not == nil
code.should match(/aaa/)
#puts t.set_tracer.ruby_code
end
specify "element trace all" do
text = '
'
t = Amrita2::Template.new(text)
log = ""
t.set_trace(:all_element) do |msg|
log << msg << "\n"
end
t.render_with(:aaa=>'Amrita2')
#puts log
log.size.should > 0
log.should match(/Amrita2/)
end
specify "element tracer" do
text = '
'
t = Amrita2::Template.new(text)
log = ""
t.set_trace(:element) do |msg|
log << msg << "\n"
end
t.render_with(:aaa=>'Amrita2')
#puts log
log.size.should > 0
log.should match(/Amrita2/)
end
specify "element tracer with loop" do
text = ''
t = Amrita2::Template.new(text)
log = ""
t.set_trace(:all_element) do |msg|
log << msg << "\n"
end
t.render_with(:aaa=>(1..5).collect {|n| "Amrita#{n}" })
log.size.should > 0
(1..5).each { |n| log.should match(/Amrita#{n}/) }
end
specify "trace with String" do
text = '
'
t = Amrita2::Template.new(text)
log = ""
t.set_trace(log)
t.render_with(:aaa=>'Amrita2')
log.size.should > 0
log.should match(/aaa/)
log.should match(/Amrita2/)
end
specify "trace with StringIO" do
require "stringio"
text = '
'
t = Amrita2::Template.new(text)
log = StringIO.new("", "w")
t.set_trace(log)
t.render_with(:aaa=>'Amrita2')
log.string.size.should > 0
log.string.should match(/aaa/)
log.string.should match(/Amrita2/)
end
end