Sha256: 6c33d9201f34caa3473a593c5eb159b8d9b997ab586e32a9c4c98d1381bf68f0

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 KB

Contents

class TokenizeTo

  def initialize(expected_tokens)
    @expected_tokens = expected_tokens.map do |t|
      case t
        when SQLTree::Token; t
        when String;         SQLTree::Token::String.new(t)
        when Numeric;        SQLTree::Token::Number.new(t)
        when Symbol;         SQLTree::Token.const_get(t.to_s.upcase)
        else "Cannot check for this token: #{t.inspect}!"
      end
    end
  end

  def matches?(found_tokens)
    @found_tokens = found_tokens
    return @found_tokens.length == @expected_tokens.length &&
        @found_tokens.zip(@expected_tokens).all? { |(f, e)| e === f }
  end

  def description
    "expected to tokenized to #{@expected_tokens.inspect}"
  end

  def failure_message
    " #{@expected_tokens.inspect} expected, but found #{@found_tokens.inspect}"
  end

  def negative_failure_message
    " expected not to be tokenized to #{@expected_tokens.inspect}"
  end

end

def tokenize_to(*expected_tokens)
  TokenizeTo.new(expected_tokens)
end

def sql_var(name)
  SQLTree::Token::Identifier.new(name.to_s)
end

def dot
  SQLTree::Token::DOT
end

def comma
  SQLTree::Token::COMMA
end

def lparen
  SQLTree::Token::LPAREN
end

def rparen
  SQLTree::Token::RPAREN
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sql_tree-0.2.0 spec/helpers/matchers.rb