Sha256: 2a1106dcdf58f9ebaca7f51c1a84af257b116c9bae570865385d229a610f99a0

Contents?: true

Size: 1.3 KB

Versions: 2

Compression:

Stored size: 1.3 KB

Contents

require 'test/unit'
require 'langscan/brainfuck'

class TestScan < Test::Unit::TestCase
  def assert_yield(recv, meth, *args)
    yielded = false
    recv.__send__(meth, *args) {|*block_args|
      yielded = true
      yield(*block_args)
    }
    assert(yielded, "block not yielded")
  end
  
  def assert_not_yield(recv, meth, *args)
    yielded = false
    recv.__send__(meth, *args) {|*block_args|
      assert(false, "block yielded")
    }
  end
  
  def assert_yield_any(recv, meth, *args)
    success = false
    recv.__send__(meth, *args) {|*block_args|
      if yield(*block_args)
        assert(true)
        success = true
        break
      end
    }
    assert(false, "no expected yields") unless success
  end
  
  def assert_yield_all(recv, meth, *args)
    recv.__send__(meth, *args) {|*block_args|
      if !yield(*block_args)
        assert(false, "unexpected yields")
        return
      end
    }
    assert(true)
  end
  
  def test_scan
  	assert_yield_all(LangScan::Brainfuck, :scan, "+-.,<>[]") {|f|
		f.type == :ident && f.text.length==1
	}
  	assert_yield_all(LangScan::Brainfuck, :scan, "+++") {|f|
		f.type == :ident && f.text.length==1
	}
  	assert_yield_all(LangScan::Brainfuck, :scan, "I love you") {|f|
		f.type == :comment
	}
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
langscan-1.2-x86-mswin32-60 test/langscan/brainfuck/test/test_scan.rb
langscan-1.2 test/langscan/brainfuck/test/test_scan.rb