<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/cli/profile_spec.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff></diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/A/a.generated.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/B/b.generated.dll</filename>
    </modified>
    <modified>
      <diff>@@ -127,7 +127,7 @@ describe &quot;Static dependency loading&quot; do
   end
   
   it &quot;does propagate load exceptions&quot; do
-    ruby_exe(&quot;dependencies1/test2.rb&quot;, :dir =&gt; File.dirname(__FILE__)).chomp.should == &quot;true&quot;
+    ruby_exe(&quot;dependencies1/test2.rb&quot;, :dir =&gt; File.dirname(__FILE__)).chomp.should == &quot;System::IO::FileLoadException&quot;
   end
 end
 </diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/assembly/access/custom_assembly_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -17,6 +17,6 @@ $raise = true
 
 begin
   p A.Main
-rescue
-  p $!.class.name == &quot;System::IO::FileLoadException&quot;
+rescue Exception =&gt; e
+  p e.class.name
 end</diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/assembly/access/dependencies1/test2.rb</filename>
    </modified>
    <modified>
      <diff>@@ -32,8 +32,8 @@ describe &quot;Creating a .NET array&quot; do
     end
 
     it &quot;can be referenced&quot; do
-      @array[1][1].should == 11
-      @array.get_value(1,1).should == 11
+      @array[1, 1].should == 110
+      @array.get_value(1,1).should == 110
     end
   end
 end</diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/bcl/array/instantiation_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -12,6 +12,9 @@ describe &quot;System::String#method_missing&quot; do
 
   it &quot;throws NoMethodError for methods that don't exist&quot; do
     lambda { @sstr.foo }.should raise_error NoMethodError
+  end
+  
+  it &quot;throws NoMethodError for methods that don't exist that look like mutating methods&quot; do
     lambda { @sstr.foo! }.should raise_error NoMethodError
     lambda { @sstr.foo=&quot;b&quot; }.should raise_error NoMethodError 
   end</diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/bcl/string/method_missing_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -14,4 +14,4 @@ describe &quot;Removing methods from a Class&quot; do
   it_behaves_like :removing_a_method, Klass
   it_behaves_like :removing_class_methods, Klass
   it_behaves_like :removing_metaclass_methods, Klass
-end
\ No newline at end of file
+end</diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/class/modification/removal_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -48,36 +48,18 @@ describe &quot;Invoking events&quot; do
     @helper[:method].should == 1
   end
 
-  it &quot;works with methods via +=&quot; do
-    @klass.full_event += @method
-    @klass.invoke_full_event(1)
-    @helper[:method].should == 1
-  end
-
   it &quot;works with lambdas via add&quot; do
     @klass.full_event.add @lambda
     @klass.invoke_full_event(1)
     @helper[:lambda].should == 1
   end
 
-  it &quot;works with methods via +=&quot; do
-    @klass.full_event += @lambda
-    @klass.invoke_full_event(1)
-    @helper[:lambda].should == 1
-  end
-
   it &quot;works with procs via add&quot; do
     @klass.full_event.add @proc
     @klass.invoke_full_event(1)
     @helper[:proc].should == 1
   end
 
-  it &quot;works with methods via +=&quot; do
-    @klass.full_event += @proc
-    @klass.invoke_full_event(1)
-    @helper[:proc].should == 1
-  end
-
   it &quot;works with to_proc syntax&quot; do
     @klass.full_event &amp;@lambda
     @klass.invoke_full_event(1)
@@ -100,16 +82,6 @@ describe &quot;Invoking events&quot; do
     @helper[:lambda].should == 1
   end
   
-  it &quot;works with multiple objects via +=&quot; do
-    @klass.full_event += @method
-    @klass.full_event += @proc
-    @klass.full_event += @lambda
-    @klass.invoke_full_event(1)
-    @helper[:proc].should == 1
-    @helper[:method].should == 1
-    @helper[:lambda].should == 1
-  end
-
   it &quot;works with multiple of one callback via add&quot; do
     @klass.full_event.add @method
     @klass.full_event.add @method
@@ -117,13 +89,6 @@ describe &quot;Invoking events&quot; do
     @helper[:method].should == 2
   end
 
-  it &quot;works with multiple of one callback via +=&quot; do
-    @klass.full_event += @method
-    @klass.full_event += @method
-    @klass.invoke_full_event(1)
-    @helper[:method].should == 2
-  end
-
   it &quot;registers adds and removes&quot; do
     @klass.full_event.add @method
     @klass.full_event.add @method
@@ -132,13 +97,4 @@ describe &quot;Invoking events&quot; do
     @klass.invoke_full_event(1)
     @helper[:method].should == 3
   end
-
-  it &quot;registers adds and removes&quot; do
-    @klass.full_event += @method
-    @klass.full_event += @method
-    @klass.invoke_full_event(1)
-    @klass.full_event -= @method
-    @klass.invoke_full_event(1)
-    @helper[:method].should == 3
-  end
 end</diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/events/invocation_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -11,6 +11,7 @@ describe &quot;.NET events&quot; do
   after :all do
     verb, $VERBOSE = $VERBOSE, nil
     IronRuby = Foo
+    Object.send :remove_const, :Foo
     $VERBOSE = verb
   end
   csc &lt;&lt;-EOL</diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/events/mapping_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -265,7 +265,7 @@ public class ClassWithEvents {
         if (StaticFullEvent != null) StaticFullEvent(new object(), count);
       }
     }
-#line 16 &quot;./events/mapping_spec.rb&quot;
+#line 17 &quot;./events/mapping_spec.rb&quot;
 #pragma warning disable 67
   public delegate void EventHandler(object source, int count);
   public partial class BasicEventClass {
@@ -347,6 +347,22 @@ public interface IExposing {
     event EventHandler&lt;EventArgs&gt; IsExposedChanged;
     bool IsExposed {get; set;}
   }
+
+  public partial class Klass {
+    public object AddEvent(IExposing arg) {
+      arg.IsExposedChanged += EH;
+      return arg;
+    }
+
+    public object RemoveEvent(IExposing arg) {
+      arg.IsExposedChanged -= EH;
+      return arg;
+    }
+
+    public void EH(object sender, EventArgs e) {
+      _foo += 1;
+    }
+  }
 #line 4 &quot;./interface/mapping_spec.rb&quot;
 public interface IEmptyInterface {}
     public interface IInterface { void m();}
@@ -368,7 +384,7 @@ public interface IEmptyInterfaceGroup { }
 
     public interface IInterfaceGroup1&lt;T&gt; {void m1();}
     public interface IInterfaceGroup1&lt;T,V&gt; {void m1();}
-#line 226 &quot;./method/invocation/generic_spec.rb&quot;
+#line 222 &quot;./method/invocation/generic_spec.rb&quot;
 public partial class ClassWithMethods {
         #region private methods
   private string Private1Generic0Arg&lt;T&gt;() {
@@ -497,7 +513,7 @@ public partial class ClassWithMethods {
     }
 
     public partial class SubKlass : Klass {}
-#line 264 &quot;./method/invocation/generic_spec.rb&quot;
+#line 260 &quot;./method/invocation/generic_spec.rb&quot;
 #pragma warning disable 693
     public partial class GenericClassWithMethods&lt;K&gt; {
       #region private methods
@@ -622,7 +638,7 @@ public partial class ClassWithMethods {
 
     }
     #pragma warning restore 693
-#line 291 &quot;./method/invocation/generic_spec.rb&quot;
+#line 287 &quot;./method/invocation/generic_spec.rb&quot;
 #pragma warning disable 693
     public partial class GenericClass2Params&lt;K, J&gt; {
       #region private methods</diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/fixtures.generated.cs</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/fixtures.generated.dll</filename>
    </modified>
    <modified>
      <diff>@@ -160,15 +160,26 @@ describe &quot;Implementing interfaces that define events&quot; do
     event EventHandler&lt;EventArgs&gt; IsExposedChanged;
     bool IsExposed {get; set;}
   }
+
+  public partial class Klass {
+    public object AddEvent(IExposing arg) {
+      arg.IsExposedChanged += EH;
+      return arg;
+    }
+
+    public object RemoveEvent(IExposing arg) {
+      arg.IsExposedChanged -= EH;
+      return arg;
+    }
+
+    public void EH(object sender, EventArgs e) {
+      _foo += 1;
+    }
+  }
   EOL
 
   before(:all) do
-    class RubyExposerDefault
-      include IExposing
-    end
-
-    class RubyExposerMM
-      include IExposing
+    module Events
       attr_reader :handlers
       
       def initialize
@@ -178,7 +189,18 @@ describe &quot;Implementing interfaces that define events&quot; do
       def reset
         @handlers = []
       end
-      
+
+      def trigger
+        @handlers.each {|e| e.invoke(self, nil)}
+      end
+    end
+    class RubyExposerDefault
+      include IExposing
+    end
+
+    class RubyExposerMM
+      include IExposing
+      include Events 
       def method_missing(meth, *args, &amp;blk)
         case meth.to_s
         when /^add_/
@@ -194,15 +216,7 @@ describe &quot;Implementing interfaces that define events&quot; do
     
     class RubyExposer
       include IExposing
-      attr_reader :handlers
-      def initialize
-        reset 
-      end
-
-      def reset
-        @handlers = []
-      end
-      
+      include Events 
       def add_IsExposedChanged(h)
         @handlers &lt;&lt; h
         &quot;Ruby add handler&quot;
@@ -215,25 +229,31 @@ describe &quot;Implementing interfaces that define events&quot; do
     end
   end
 
+  before(:each) do
+    @klass = Klass.new
+  end
+
   it &quot;allows empty implementation without TypeLoadException&quot; do
     lambda {RubyExposerDefault.new}.should_not raise_error
   end
 
   it &quot;allows method_missing to be the event managment methods&quot; do 
     exposer = RubyExposerMM.new
-    l = lamdba {|s,e| [s,e]}
-    (exposer.is_exposed_changed.add(l)).should == &quot;Method Missing add&quot;
-    exposer.handlers.should include l
-    (exposer.is_exposed_changed.remove(l)).should == &quot;Method Missing remove&quot;
+    @klass.add_event(exposer)
+    exposer.handlers.size.should == 1
+    exposer.trigger
+    @klass.foo.should == 11
+    @klass.remove_event(exposer)
     exposer.handlers.should be_empty
   end
 
   it &quot;allows add and remove event definitions&quot; do
     exposer = RubyExposer.new
-    l = lamdba {|s,e| [s,e]}
-    (exposer.is_exposed_changed.add(l)).should == &quot;Ruby add handler&quot;
-    exposer.handlers.should include l
-    (exposer.is_exposed_changed.remove(l)).should == &quot;Ruby remove handler&quot;
+    @klass.add_event(exposer)
+    exposer.handlers.size.should == 1
+    exposer.trigger
+    @klass.foo.should == 11
+    @klass.remove_event(exposer)
     exposer.handlers.should be_empty
   end
 end</diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/interface/implementation_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -185,7 +185,7 @@ describe :generic_methods, :shared =&gt; true do
   it &quot;has proper errors for constrained generics&quot; do
     lambda { @klass.method(:struct_constraint_method).of(String).call(&quot;a&quot;)}.should raise_error(ArgumentError)
     lambda { @klass.method(:class_constraint_method).of(Fixnum).call(1)}.should raise_error(ArgumentError)
-    lambda { @klass.method(:constructor_constraint_method).of(ClrString).call}.should raise_error(ArgumentError)
+    lambda { @klass.method(:constructor_constraint_method).of(System::String).call}.should raise_error(ArgumentError)
     lambda { @klass.method(:type_constraint_method).of(String, Klass).call(&quot;a&quot;)}.should raise_error(ArgumentError)
   end
 
@@ -203,10 +203,6 @@ describe :generic_methods, :shared =&gt; true do
     @klass.method(:type_constraint_method).of(SubFoo, Foo).call(SubFoo.new).foo.should == 10
   end
 
-  it &quot;has proper error messages for skipping generic&quot; do
-    lambda {@klass.method(:public_1_generic_1_arg).call(&quot;a&quot;)}.should raise_error(ArgumentError, /generic/i)
-  end
-
   it &quot;has proper error messages for incorrect number of arguments&quot; do
     lambda {@klass.method(:public_1_generic_2_arg).of(Fixnum).call(1)}.should raise_error(ArgumentError, /1 for 2/)
   end</diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/method/invocation/generic_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -53,7 +53,7 @@ public #{type} #{prefix}SignatureOverload#{suffix}() { #{blk.call &quot;SO void&quot; }; }
             [lambda {|meth| meth.call(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;)}, &quot;SO string params(string[])&quot;],
             [lambda {|meth| meth.call(&quot;a&quot;,1,1)}, &quot;SO string int int&quot;],
             [lambda {|meth| meth.call(1,2,3)}, &quot;SO params(int[])&quot;]]
-    @out_or_ref_cals = [[lambda {|meth| meth.overload(System::String.GetType.MakeByRefType.to_class).call()}, &quot;SO ref string&quot;]] #this array will hold more once this works.
+    @out_or_ref_calls = [[lambda {|meth| meth.overload(System::String.GetType.MakeByRefType.to_class).call()}, &quot;SO ref string&quot;]] #this array will hold more once this works.
   end
 
   it &quot;is performed&quot; do</diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/method/invocation/overload_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -154,8 +154,8 @@ describe &quot;Static .NET methods&quot; do
 
   it &quot;don't incorrectly get cached when called on an instance&quot; do
     #might be related to Rubyforge 24104
-    Klass.new.method(:test_method) rescue nil
-    Klass.method(:test_method).should be_kind_of(Method)
+    Klass.new.method(:static_void_method) rescue nil
+    Klass.method(:static_void_method).should be_kind_of(Method)
   end
 end
 </diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/method/reflection_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -51,8 +51,9 @@ describe &quot;Added method clr_new&quot; do
   end
 
   it &quot;raises a TypeError if called on a pure Ruby type&quot; do
-    class Foo;end
-    lambda { Foo.clr_new }.should raise_error TypeError
+    class Bar;end
+    lambda { Bar.clr_new }.should raise_error TypeError
+    lambda { Class.new.clr_new }.should raise_error TypeError
     lambda { Numeric.clr_new }.should raise_error TypeError
   end
 end</diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/ruby/additions/clr_new_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,17 +1,6 @@
 require File.dirname(__FILE__) + &quot;/spec_helper&quot;
 
-describe &quot;Regression dev tests&quot; do
-
-end
-
-describe &quot;Command line options&quot; do
-  describe &quot;-profile&quot; do
-    s = ruby_exe(&quot;puts IronRuby::Clr.profile{ require 'rubygems' }.size&quot;, :options =&gt; &quot;-profile&quot;).chomp.to_i
-    s.should &gt; 80
-    # We check for an upper bound only so that we can increase the lower bound, which is currently lower than we would like it to be
-  end
-end
-
+#not sure where to put these yet. I might add a ironruby folder to our RubySpec.
 describe &quot;Enumerable blocks (Codeplex 1301)&quot; do
   before :each do
     @b = [2, 5, 3, 6, 1, 4]  </diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/net/uncategorized_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1 @@
-fails:System::String#method_missing throws NoMethodError for methods that don't exist
+fails:System::String#method_missing throws NoMethodError for methods that don't exist that look like mutating methods</diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/tags/net/bcl/string/method_missing_tags.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1 @@
-fails:Generic methods on generic classes with 2 parameters has proper errors for constrained generics
 fails:Generic methods on generic classes with 2 parameters can use Ruby types for constrained generics
-fails:Generic methods on generic classes with 2 parameters has proper error messages for skipping generic</diff>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/tags/net/method/invocation/generic_tags.txt</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/cli/repl.rb</filename>
    </removed>
    <removed>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/tags/com/apps/excel_tags.txt</filename>
    </removed>
    <removed>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/tags/com/apps/word_tags.txt</filename>
    </removed>
    <removed>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/tags/net/bcl/array/instantiation_tags.txt</filename>
    </removed>
    <removed>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/tags/net/bcl/numerics/int32_tags.txt</filename>
    </removed>
    <removed>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/tags/net/delegate/instantiation/array_ref_tags.txt</filename>
    </removed>
    <removed>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/tags/net/delegate/instantiation/array_val_tags.txt</filename>
    </removed>
    <removed>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/tags/net/delegate/instantiation/generic_tags.txt</filename>
    </removed>
    <removed>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/tags/net/delegate/instantiation/ref_tags.txt</filename>
    </removed>
    <removed>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/tags/net/delegate/instantiation/val_tags.txt</filename>
    </removed>
    <removed>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/tags/net/delegate/instantiation/void_tags.txt</filename>
    </removed>
    <removed>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/tags/net/events/invocation_tags.txt</filename>
    </removed>
    <removed>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/tags/net/interface/implementation_tags.txt</filename>
    </removed>
    <removed>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/tags/net/method/reflection_tags.txt</filename>
    </removed>
    <removed>
      <filename>Merlin/Main/Languages/Ruby/Tests/Interop/tags/net/ruby/additions/clr_new_tags.txt</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>cbe1a493555ec5c996a4c94d62ae1e4604eb6529</id>
    </parent>
  </parents>
  <author>
    <name>Jim Deville</name>
    <email>jdeville@microsoft.com</email>
  </author>
  <url>http://github.com/shri/ironruby/commit/c6d6b40470a858c71d023cb82df6159201a9a107</url>
  <id>c6d6b40470a858c71d023cb82df6159201a9a107</id>
  <committed-date>2009-08-26T16:36:41-07:00</committed-date>
  <authored-date>2009-08-26T16:36:41-07:00</authored-date>
  <message>cleaning up failing interop specs. Many of them were test bugs</message>
  <tree>e2f7247446201f13cdb433fc028cd5b60588e651</tree>
  <committer>
    <name>Jim Deville</name>
    <email>jdeville@microsoft.com</email>
  </committer>
</commit>
