test/test_double.rb in double-0.0.1 vs test/test_double.rb in double-0.1.0

- old
+ new

@@ -1,6 +1,40 @@ -require 'helper' +require 'test/unit' require 'double' -describe Double do - it 'pends' +module Foo + class << self + attr_accessor :double + end +end + +class TestDouble < Test::Unit::TestCase + def test_lazy_evaluate + assert_raise NameError do + Foo.class_eval 'self.double = Bar' + end + + Foo.extend Double + Foo.class_eval 'self.double = Bar' + assert_raise NameError do + Foo.double.baz + end + + Kernel.const_set :Bar, Module.new + assert_raise NoMethodError do + Bar.baz + end + assert_raise NoMethodError do + Foo.double.baz + end + + Bar.class_eval { def self.baz; 1; end } + assert_equal 1, Bar.baz + assert_equal 1, Foo.double.baz + end + + def test_memoize + Double::Klass.class_eval { def method_missing(*args); 2; end } + assert_equal 1, Foo.double.baz + assert_equal 2, Foo.double.qux + end end