2009-07-11 Michael Barker <mike@middlesoft.co.uk>
[mono.git] /
1 //\r
2 // MessageEnumeratorTest.cs -\r
3 //      NUnit Test Cases for MessageEnumerator\r
4 //\r
5 // Author:\r
6 //      Michael Barker  <mike@middlesoft.co.uk>\r
7 //\r
8 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)\r
9 //\r
10 // Permission is hereby granted, free of charge, to any person obtaining\r
11 // a copy of this software and associated documentation files (the\r
12 // "Software"), to deal in the Software without restriction, including\r
13 // without limitation the rights to use, copy, modify, merge, publish,\r
14 // distribute, sublicense, and/or sell copies of the Software, and to\r
15 // permit persons to whom the Software is furnished to do so, subject to\r
16 // the following conditions:\r
17 // \r
18 // The above copyright notice and this permission notice shall be\r
19 // included in all copies or substantial portions of the Software.\r
20 // \r
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
28 //\r
29 using System;\r
30 using System.Security;\r
31 using System.Security.Permissions;
32 using System.Reflection;
33
34 using Mono.Messaging;
35
36 using NUnit.Framework;
37 using NUnit.Mocks;\r
38 \r
39 \r
40 namespace MonoTests.Mono.Messaging {\r
41         
42         [TestFixture]\r
43         public class MessageEnumeratorExceptionTest
44         {
45                 private DynamicMock mockME;
46                 
47                 [SetUp]
48                 public void Init ()
49                 {
50                         mockME = new DynamicMock (typeof (IMessageEnumerator));
51                 }
52
53                 [Test]
54                 [ExpectedException("System.Messaging.MessageQueueException")]
55                 public void RemoveCurrentThrowsConnectionException ()
56                 {
57                         mockME.ExpectAndThrow ("RemoveCurrent", new ConnectionException (QueueReference.DEFAULT), null);
58                         System.Messaging.MessageEnumerator me = CreateEnumerator ((IMessageEnumerator) mockME.MockInstance);
59                         me.RemoveCurrent ();
60                 }
61                 
62                 [Test]
63                 [ExpectedException("System.InvalidOperationException")]
64                 public void RemoveCurrentThrowsMessageUnavailableException ()
65                 {
66                         mockME.ExpectAndThrow ("RemoveCurrent", new MessageUnavailableException (), null);
67                         System.Messaging.MessageEnumerator me = CreateEnumerator ((IMessageEnumerator) mockME.MockInstance);
68                         me.RemoveCurrent ();
69                 }               
70                 
71                 [Test]
72                 [ExpectedException("System.Messaging.MessageQueueException")]
73                 public void RemoveCurrentThrowsMonoMessagingException ()
74                 {
75                         mockME.ExpectAndThrow ("RemoveCurrent", new MonoMessagingException (), null);
76                         System.Messaging.MessageEnumerator me = CreateEnumerator ((IMessageEnumerator) mockME.MockInstance);
77                         me.RemoveCurrent ();
78                 }               
79                 
80                 [Test]
81                 [ExpectedException("System.NotImplementedException")]
82                 public void RemoveCurrentThrowsMessageNotImplemented ()
83                 {
84                         mockME.ExpectAndThrow ("RemoveCurrent", new NotImplementedException (), null);
85                         System.Messaging.MessageEnumerator me = CreateEnumerator ((IMessageEnumerator) mockME.MockInstance);
86                         me.RemoveCurrent ();
87                 }               
88         
89                 public System.Messaging.MessageEnumerator CreateEnumerator (IMessageEnumerator ime)
90                 {
91             Type[] types = { 
92                 typeof (IMessageEnumerator), typeof (System.Messaging.IMessageFormatter)
93             };
94                 
95             ConstructorInfo ci = typeof (System.Messaging.MessageEnumerator).GetConstructor (
96                 BindingFlags.NonPublic | BindingFlags.Instance, 
97                 Type.DefaultBinder, types, new ParameterModifier[0]);
98                 
99             if (ci == null)
100                 throw new Exception ("ConstructorInfo is null");
101             
102             return (System.Messaging.MessageEnumerator) ci.Invoke (new object[] { ime, null });
103                 }
104         }
105 }