Sha256: a74549d780f264d56b4cd8da376e7cc9d387b1fe9ab60015252b5972e7657b57

Contents?: true

Size: 1.15 KB

Versions: 5

Compression:

Stored size: 1.15 KB

Contents

covers 'facets/kernel/as'

test_case Kernel do

  setup "class heirarchy" do
    a = Class.new do
      def x; "a.x"; end
      def y; "a.y"; end
    end
    b = Class.new(a) do
      def x; "b.x" end
      def y; "b.y" end
    end
    c = Class.new(b) do
      def x; "c.x"; end
      define_method(:y){ as(a).x }
    end
    @a, @b, @c = a, b, c
  end

  method :as do 

    test do
      o = @c.new
      o.x.assert == "c.x"
      o.y.assert == "a.x"
    end

  end

  method :send_as do

    test do
      s = "a"
      def s.class; nil; end
      s.class.refute == String
      s.send_as(Object, :class).assert == String
    end

  end

  #setup "class heirarchy" do
  #  x = Class.new{ def x ; 1 ; end }
  #  y = Class.new(x){ def x ; 2 ; end }
  #  z = Class.new(y){ define_method(:x){ super_as(x) } }
  #  z
  #end

  #method :super_as do |z|
  #  o = z.new
  #  o.x.assert == 1
  #end

end

test_case As do

  class_method :new do

    setup do
      @c = Class.new(String) do
             def to_s; "denied"; end
           end
    end

    test do
      o = @c.new("hi")
      o.to_s.assert == "denied"
      As.new(o, String).to_s.assert == "hi"
    end

  end

end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
facets-glimmer-3.2.0 test/core/kernel/test_as.rb
facets-3.1.0 test/core/kernel/test_as.rb
facets-3.0.0 test/core/kernel/test_as.rb
facets-2.9.3 test/core/kernel/test_as.rb
facets-2.9.2 test/core/kernel/test_as.rb