| Class | TestTreeWalkers |
| In: |
lib/feed_tools/vendor/html5/tests/test_treewalkers.rb
|
| Parent: | Test::Unit::TestCase |
# File lib/feed_tools/vendor/html5/tests/test_treewalkers.rb, line 24
24: def concatenateCharacterTokens(tokens)
25: charactersToken = nil
26: for token in tokens
27: type = token[:type]
28: if [:Characters, :SpaceCharacters].include?(type)
29: if charactersToken == nil
30: charactersToken = {:type => :Characters, :data => token[:data]}
31: else
32: charactersToken[:data] += token[:data]
33: end
34: else
35: if charactersToken != nil
36: yield charactersToken
37: charactersToken = nil
38: end
39: yield token
40: end
41: end
42: yield charactersToken if charactersToken != nil
43: end
# File lib/feed_tools/vendor/html5/tests/test_treewalkers.rb, line 45
45: def convertTokens(tokens)
46: output = []
47: indent = 0
48: concatenateCharacterTokens(tokens) do |token|
49: case token[:type]
50: when :StartTag, :EmptyTag
51: output << "#{' '*indent}<#{token[:name]}>"
52: indent += 2
53: for name, value in token[:data].to_a.sort
54: next if name=='xmlns'
55: output << "#{' '*indent}#{name}=\"#{value}\""
56: end
57: indent -= 2 if token[:type] == :EmptyTag
58: when :EndTag
59: indent -= 2
60: when :Comment
61: output << "#{' '*indent}<!-- #{token[:data]} -->"
62: when :Doctype
63: if token[:name] and token[:name].any?
64: output << "#{' '*indent}<!DOCTYPE #{token[:name]}>"
65: else
66: output << "#{' '*indent}<!DOCTYPE >"
67: end
68: when :Characters, :SpaceCharacters
69: output << "#{' '*indent}\"#{token[:data]}\""
70: end
71: end
72: output.join("\n")
73: end
# File lib/feed_tools/vendor/html5/tests/test_treewalkers.rb, line 115
115: def test_all_tokens
116: expected = [
117: {:data => [], :type => :StartTag, :name => 'html'},
118: {:data => [], :type => :StartTag, :name => 'head'},
119: {:data => [], :type => :EndTag, :name => 'head'},
120: {:data => [], :type => :StartTag, :name => 'body'},
121: {:data => [], :type => :EndTag, :name => 'body'},
122: {:data => [], :type => :EndTag, :name => 'html'}]
123: for treeName, tree_class in $tree_types_to_test
124: p = HTML5::HTMLParser.new(:tree => tree_class[:builder])
125: document = p.parse("<html></html>")
126: # document = tree_class.get(:adapter)(document)
127: output = tree_class[:walker].new(document)
128: expected.zip(output) do |expected_token, output_token|
129: assert_equal(expected_token, output_token)
130: end
131: end
132: end