Parent

Class/Module Index [+]

Quicksearch

Html5TokenizerTestCase

Public Instance Methods

assert_tokens_match(expectedTokens, receivedTokens, ignoreErrorOrder, message) click to toggle source
# File lib/feed_tools/vendor/html5/tests/test_tokenizer.rb, line 9
def assert_tokens_match(expectedTokens, receivedTokens, ignoreErrorOrder, message)
  if !ignoreErrorOrder
    return expectedTokens == receivedTokens
  else
    #Sort the tokens into two groups; non-parse errors and parse errors
    expected = [[],[]]
    received = [[],[]]
    
    for token in expectedTokens
      if token != "ParseError"
        expected[0] << token
      else
        expected[1] << token
      end
    end

    for token in receivedTokens
      if token != "ParseError"
        received[0] << token
      else
        received[1] << token
      end
    end
    assert_equal expected, received, message
  end
end
concatenate_consecutive_characters(tokens) click to toggle source
# File lib/feed_tools/vendor/html5/tests/test_tokenizer.rb, line 47
def concatenate_consecutive_characters(tokens)
  tokens.inject([]) do |tokens, token|
    if type_of?('Character', token) and tokens.any? and type_of?('Character', tokens.last)
      tokens.last[1] = tokens.last[1] + token[1]
      next tokens
    end
    tokens << token
  end
end
convert_attribute_arrays_to_hashes(tokens) click to toggle source
# File lib/feed_tools/vendor/html5/tests/test_tokenizer.rb, line 40
def convert_attribute_arrays_to_hashes(tokens)
  tokens.inject([]) do |tokens, token|
    token[2] = Hash[*token[2].reverse.flatten] if type_of?('StartTag', token)
    tokens << token
  end
end
tokenizer_test(data) click to toggle source
# File lib/feed_tools/vendor/html5/tests/test_tokenizer.rb, line 57
def tokenizer_test(data)
  (data['contentModelFlags'] || [:PCDATA]).each do |content_model_flag|
    message = [
      '', 'Description:', data['description'],
      '', 'Input:', data['input'],
      '', 'Content Model Flag:', content_model_flag,
      '' ] * "\n"

    assert_nothing_raised message do
      tokenizer = HTML5::HTMLTokenizer.new(data['input'])

      tokenizer.content_model_flag = content_model_flag.to_sym

      tokenizer.current_token = {:type => :startTag, :name => data['lastStartTag']} if data.has_key?('lastStartTag')

      tokens = TokenizerTestParser.new(tokenizer).parse

      actual = concatenate_consecutive_characters(convert_attribute_arrays_to_hashes(tokens))

      expected = concatenate_consecutive_characters(data['output'])

      assert_tokens_match expected, actual, data["ignoreErrorOrder"], message
    end
  end 
end
type_of?(token_name, token) click to toggle source
# File lib/feed_tools/vendor/html5/tests/test_tokenizer.rb, line 36
def type_of?(token_name, token)
  token != 'ParseError' and token_name == token.first
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.