| Class | Transformer |
| In: |
lib/yaml_extensions/transform.rb
|
| Parent: | Test::Unit::TestCase |
# File lib/yaml_extensions/transform.rb, line 303 def test_compiled # Initialization. engine = nil str = '' assert_nothing_raised { engine = YAML::Transformer.new } # Build. assert_nothing_raised do engine.add(YAML::YRegexPath.new('/name')) do |key, value| assert_instance_of(String, key) str += "#{value} is" end end assert_nothing_raised do engine.add(YAML::YRegexPath.new('/name=Akli/boss')) do |key, value| assert_instance_of(String, key) str += ' a boss' end end assert_nothing_raised do engine.add(YAML::YRegexPath.new('/jobs/professor=EPITA/class')) do |k,v| assert_instance_of(String, k) str += e end end assert_nothing_raised do engine.add(YAML::YRegexPath.new('toto#titi'), 'unused') do str += 'Why am I HERE???' end end # Display. TempPath.new do |dot_file| assert_nothing_raised { engine.dottify(dot_file) } `dot #{dot_file} 2> /dev/null` # assert_equal(0, $?, 'Cannot display the graph') end # Traverse. tree = { 'name' => 'Akli A.', 'tel' => '06932359', 'address' => '23 boulevard voltaire', 'jobs' => [ { 'professor' => 'EPITA', 'boss' => 'MindSuite', 'god' => 'world', } ] } assert_nothing_raised { engine.traverse(tree) } assert_equal(str, 'Akli A. is a boss a boss a boss') end
def test_higher_level_on_array
users = []
tree = {
'users' => [
{
'name' => 'Sea',
'tel' => '111'
},
{
'name' => 'Sex',
'tel' => '222'
},
{
'name' => 'Sun',
'tel' => '333'
}
]
}
YAML::Transformer.traverse(YAML::YRegexPath.new('users#name=Se'), tree) do
|key, value|
assert_instance_of(Array, value)
value.each do |e|
users << "#{e['name']} (#{e['tel']})"
end
end
p users
#assert_equal(['Sea (111)', 'Sex (222)'], users)
end
# File lib/yaml_extensions/transform.rb, line 430 def test_errors engine = nil assert_nothing_raised { engine = YAML::Transformer.new } # Not an YRegexPath gived. assert_raise(ArgumentError) do engine.add('/name') { |key, value| str += "error" } end # # Block with only one parameter. # assert_raise(ArgumentError) do # engine.add(YAML::YRegexPath.new('/name')) { |key| str += "error" } # end # No block ginven. assert_raise(ArgumentError) do engine.add(YAML::YRegexPath.new('/name')) end end
# File lib/yaml_extensions/transform.rb, line 382 def test_higher_level_on_hash email = '' tree = { 'Name' => 'Foo', 'FirstName' => 'Bar', 'Emails' => { 'home' => 'foo312@coldmail.com', 'work' => 'bfoo@staff.com', 'edu' => 'bar.foo@school.edu' } } path = YAML::YRegexPath.new('Emails#.*=.*\.edu') YAML::Transformer.traverse(path, tree) do |key, value| assert_instance_of(Hash, value) email += "#{value['home']}" end assert_equal('foo312@coldmail.com', email) end
# File lib/yaml_extensions/transform.rb, line 358 def test_unique names = [] tree = { 'users' => [ { 'name' => 'Sea', 'tel' => '111' }, { 'name' => 'Sex', 'tel' => '222' }, { 'name' => 'Sun', 'tel' => '333' } ] } YAML::Transformer.traverse(YAML::YRegexPath.new('name=Se'), tree) do |k,v| names << v end assert_equal(['Sea', 'Sex'], names) end