// (C) Daniel Stodden\r
// \r
\r
-// these are the standard namespaces you will need. You may need to add more\r
-// depending on your tests.\r
using NUnit.Framework;\r
using System;\r
\r
-// all test namespaces start with "MonoTests." Append the Namespace that\r
-// contains the class you are testing, e.g. MonoTests.System.Collections\r
namespace MonoTests.System\r
{\r
\r
-// the class name should end with "Test" and start with the name of the class\r
-// you are testing, e.g. CollectionBaseTest\r
-public class MulticastDelegateTest : TestCase {\r
+[TestFixture]\r
+public class MulticastDelegateTest {\r
\r
public MulticastDelegateTest() {}\r
\r
- // this method is run before each Test* method is called. You can put\r
- // variable initialization, etc. here that is common to each test.\r
- // Just leave the method empty if you don't need to use it.\r
- protected override void SetUp() {}\r
-\r
- // this method is run after each Test* method is called. You can put\r
- // clean-up code, etc. here. Whatever needs to be done after each test.\r
- // Just leave the method empty if you don't need to use it.\r
- protected override void TearDown() {}\r
-\r
private delegate char MyDelegate( ref string s );\r
\r
private char MethodA( ref string s ) \r
return 'd';\r
}\r
\r
+ [Test]\r
public void TestEquals()\r
{\r
MyDelegate dela = new MyDelegate( MethodA );\r
MyDelegate delb = new MyDelegate( MethodB );\r
MyDelegate delc = new MyDelegate( MethodC );\r
\r
- AssertEquals( "#A01", false, dela == delb );\r
+ Assert.AreEqual(false, dela == delb , "#A01");\r
\r
MyDelegate del1, del2;\r
\r
del1 = dela + delb;\r
del2 = delb + delc;\r
- AssertEquals( "#A02", false, del1 == del2 );\r
+ Assert.AreEqual(false, del1 == del2 , "#A02");\r
\r
del1 += delc;\r
del2 = dela + del2;\r
- AssertEquals( "#A03", true, del1 == del2 );\r
+ Assert.AreEqual(true, del1 == del2 , "#A03");\r
+ \r
+ object o = new object ();\r
+ \r
+ Assert.AreEqual (false, dela.Equals (o), "#A04");\r
+ \r
}\r
\r
+ [Test]\r
public void TestCombineRemove()\r
{\r
MyDelegate dela = new MyDelegate( MethodA );\r
del1 = dela + delb + delb + delc + delb + delb + deld;\r
val = "";\r
res = del1( ref val );\r
- AssertEquals( "#A01", "abbcbbd", val );\r
- AssertEquals( "#A02", 'd', res );\r
+ Assert.AreEqual("abbcbbd", val , "#A01");\r
+ Assert.AreEqual('d', res , "#A02");\r
\r
// test remove\r
del2 = del1 - ( delb + delb );\r
val = "";\r
res = del2( ref val );\r
- AssertEquals( "#A03", "abbcd", val );\r
- AssertEquals( "#A04", 'd', res );\r
+ Assert.AreEqual("abbcd", val , "#A03");\r
+ Assert.AreEqual('d', res , "#A04");\r
\r
// we did not affect del1, did we?\r
val = "";\r
res = del1( ref val );\r
- AssertEquals( "#A05", "abbcbbd", val );\r
+ Assert.AreEqual("abbcbbd", val , "#A05");\r
+ }\r
+\r
+ [Test] //Bug #12536\r
+ public void TestCombineBothDirections ()\r
+ {\r
+ MyDelegate dela = new MyDelegate( MethodA );\r
+ MyDelegate delb = new MyDelegate( MethodB );\r
+ MyDelegate delc = new MyDelegate( MethodC );\r
+ MyDelegate deld = new MyDelegate( MethodD );\r
+\r
+ string val;\r
+ char res;\r
+\r
+ MyDelegate a = dela + delb;\r
+ val = "";\r
+ res = a (ref val);\r
+ Assert.AreEqual ("ab", val, "#1");\r
+ Assert.AreEqual ('b', res, "#2");\r
+\r
+ MyDelegate b = delc + deld;\r
+ val = "";\r
+ res = b (ref val);\r
+ Assert.AreEqual ("cd", val, "#3");\r
+ Assert.AreEqual ('d', res, "#4");\r
+\r
+ MyDelegate c = a + b;\r
+ val = "";\r
+ res = c (ref val);\r
+ Assert.AreEqual ("abcd", val, "#5");\r
+ Assert.AreEqual ('d', res, "#6");\r
}\r
}\r
}\r