~ubuntu-branches/ubuntu/lucid/jruby/lucid

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
require 'test/minirunit'
test_check "Test Classes"
class Hello
  def saveHelloWorld
    @hello = "Hello World."
  end
  def getHelloWorld
    @hello
  end
end

hello = Hello.new
test_equal("Hello World." , hello.saveHelloWorld)
test_equal("Hello World." , hello.getHelloWorld)

c = Class.new
test_equal(Object, c.superclass)
c = Class.new(String)
test_equal(String, c.superclass)
test_exception(TypeError) {
  Class.new(Kernel)
}

module TestClasses
  testClass = Class.new

  TestClass = testClass
  test_equal('TestClasses::TestClass', testClass.name)

  DifferentNameForTestClass = testClass
  test_equal('TestClasses::TestClass', testClass.name)

  testModule = Module.new

  TestModule = testModule
  test_equal('TestClasses::TestModule', testModule.name)

  DifferentNameForTestModule = testModule
  test_equal('TestClasses::TestModule', testModule.name)

  def TestClasses.virtual
    class << self
      self
    end
  end
end

begin
  class X < Foo::Bar
  end
  fail
rescue NameError => e
  test_equal("uninitialized constant Foo", e.to_s)
end

begin
  class X < TestClasses::Bar
  end
  fail
rescue NameError => e
  test_equal("uninitialized constant TestClasses::Bar", e.to_s)
end

begin
  class X < Class
  end
  fail
rescue TypeError => e
  test_equal("can't make subclass of Class", e.to_s)
end

begin 
  class X < TestClasses.virtual
  end
rescue TypeError => e
  test_equal("can't make subclass of virtual class", e.to_s)
end

class MockObject
  def self.mock methodName
    define_method "showBug" do 
      @results ||= {}
      @results["C"] = "Z"
      fail "Hash should have something" if @results == {}
      @results ||= {}
      fail "||= destroyed a perfectly good hash" if @results == {}
    end
  end
  mock :foo
end

mock = MockObject.new
mock.showBug