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
--- /dev/null
+++ b/test-macruby/cases/function_definition_test.rb
@@ -0,0 +1,64 @@
+#!/usr/bin/env macruby
+
+require File.expand_path('../../test_helper', __FILE__)
+
+class MacRuby::TestFunctionDefinitions < Test::Unit::TestCase
+  it "should not overwrite functions when modules are included" do
+    module M
+      def initialize *a
+	@initialize_counter ||= 0
+	@initialize_counter += 1
+      end
+
+      def foo
+	@foo_counter ||= 0
+	@foo_counter += 1
+      end
+    end
+
+    class A		# includes M before defining own functions
+      include M
+
+      def initialize *a
+	@initialize_counter ||= 0
+	@initialize_counter += 1
+	super
+      end
+      def foo
+	@foo_counter ||= 0
+	@foo_counter += 1
+	super
+      end
+
+      attr_accessor :initialize_counter
+      attr_accessor :foo_counter
+    end
+
+    class B		# includes M after defining own functions
+      def initialize *a
+	@initialize_counter ||= 0
+	@initialize_counter += 1
+	super
+      end
+      def foo
+	@foo_counter ||= 0
+	@foo_counter += 1
+	super
+      end
+
+      include M
+
+      attr_accessor :initialize_counter
+      attr_accessor :foo_counter
+    end
+
+    a, b = A.new, B.new
+    a.foo; b.foo
+
+    assert_equal 2, a.initialize_counter
+    assert_equal 2, b.initialize_counter
+    assert_equal 2, a.foo_counter
+    assert_equal 2, b.foo_counter
+  end
+end
+

