Projects

Ticket #218: module_inclusion_order_breaks_218.diff

File module_inclusion_order_breaks_218.diff, 1.5 KB (added by celtic@…, 3 years ago)

tests initialize and an arbitrary method, just to be sure

  • (a) /dev/null vs. (b) b/test-macruby/cases/function_definition_test.rb

    diff --git a/test-macruby/cases/function_definition_test.rb b/test-macruby/cases/function_definition_test.rb
    new file mode 100644
    index 0000000..1ec565e
    a b  
     1#!/usr/bin/env macruby 
     2 
     3require File.expand_path('../../test_helper', __FILE__) 
     4 
     5class MacRuby::TestFunctionDefinitions < Test::Unit::TestCase 
     6  it "should not overwrite functions when modules are included" do 
     7    module M 
     8      def initialize *a 
     9        @initialize_counter ||= 0 
     10        @initialize_counter += 1 
     11      end 
     12 
     13      def foo 
     14        @foo_counter ||= 0 
     15        @foo_counter += 1 
     16      end 
     17    end 
     18 
     19    class A             # includes M before defining own functions 
     20      include M 
     21 
     22      def initialize *a 
     23        @initialize_counter ||= 0 
     24        @initialize_counter += 1 
     25        super 
     26      end 
     27      def foo 
     28        @foo_counter ||= 0 
     29        @foo_counter += 1 
     30        super 
     31      end 
     32 
     33      attr_accessor :initialize_counter 
     34      attr_accessor :foo_counter 
     35    end 
     36 
     37    class B             # includes M after defining own functions 
     38      def initialize *a 
     39        @initialize_counter ||= 0 
     40        @initialize_counter += 1 
     41        super 
     42      end 
     43      def foo 
     44        @foo_counter ||= 0 
     45        @foo_counter += 1 
     46        super 
     47      end 
     48 
     49      include M 
     50 
     51      attr_accessor :initialize_counter 
     52      attr_accessor :foo_counter 
     53    end 
     54 
     55    a, b = A.new, B.new 
     56    a.foo; b.foo 
     57 
     58    assert_equal 2, a.initialize_counter 
     59    assert_equal 2, b.initialize_counter 
     60    assert_equal 2, a.foo_counter 
     61    assert_equal 2, b.foo_counter 
     62  end 
     63end 
     64