Sha256: 6b9392d58fad59865f46d1a4cc593bb1e2d0035b1ae847f7d6837d10d8ffdea1

Contents?: true

Size: 1.37 KB

Versions: 3

Compression:

Stored size: 1.37 KB

Contents

require 'spec_helper'

describe 'AndRewriter' do
  include TrackIfs, TrackAnds, DoRewrite

  before :each do
    @and_user = AndUser.new false
    @methods = sexpify_instance_methods AndUser
    @if_rewriter = VirtualKeywords::IfRewriter.new
    @and_rewriter = VirtualKeywords::AndRewriter.new

    @my_and_calls = 0
    @my_if_calls = 0

    VirtualKeywords::REWRITTEN_KEYWORDS.register_lambda_for_object(
        @and_user, :and, my_and)
    VirtualKeywords::REWRITTEN_KEYWORDS.register_lambda_for_object(
        @and_user, :if, my_if)
  end

  def rewriters
    [@if_rewriter, @and_rewriter]
  end

  it 'rewrites "and" statements' do
    do_rewrite(:method_with_and, @and_user)
    @my_and_calls.should eql 1
  end

  it 'handles ifs with "and"s in the predicate' do
    do_rewrite(:if_with_and, @and_user)
    @my_and_calls.should eql 1
    @my_if_calls.should eql 1
  end
end

describe 'AndRewriter on &&' do
  include TrackAnds, DoRewrite

  before :each do
    @operator_user = OperatorUser.new false
    @methods = sexpify_instance_methods OperatorUser
    @and_rewriter = VirtualKeywords::AndRewriter.new

    @my_and_calls = 0

    VirtualKeywords::REWRITTEN_KEYWORDS.register_lambda_for_object(
        @operator_user, :and, my_and)
  end

  def rewriters
    [@and_rewriter]
  end

  it 'rewrites &&' do
    do_rewrite(:symbolic_and, @operator_user)
    @my_and_calls.should eql 1
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
virtual_keywords-0.3.1 lib/spec/and_rewriter_spec.rb
virtual_keywords-0.3.0 lib/spec/and_rewriter_spec.rb
virtual_keywords-0.1.0 lib/spec/and_rewriter_spec.rb