2009-07-11 Michael Barker <mike@middlesoft.co.uk>
[mono.git] / mcs / class / Mono.Messaging.RabbitMQ / Test / Mono.Messaging.RabbitMQ / MessageEnumeratorExceptionTest.cs
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 SystemMessageEnumerator = System.Messaging.MessageEnumerator;
37 using SystemMessageQueueException = System.Messaging.MessageQueueException;
38 using SystemIMessageFormatter = System.Messaging.IMessageFormatter;
39
40 using NUnit.Framework;
41 using NUnit.Mocks;\r
42 \r
43 \r
44 namespace MonoTests.Mono.Messaging {\r
45         
46         [TestFixture]\r
47         public class MessageEnumeratorExceptionTest
48         {
49                 private DynamicMock mockME;
50                 
51                 [SetUp]
52                 public void Init ()
53                 {
54                         mockME = new DynamicMock (typeof (IMessageEnumerator));
55                 }
56
57                 [Test]
58                 [ExpectedException(typeof(SystemMessageQueueException))]
59                 public void RemoveCurrentThrowsConnectionException ()
60                 {
61                         mockME.ExpectAndThrow ("RemoveCurrent", new ConnectionException (QueueReference.DEFAULT), null);
62                         SystemMessageEnumerator me = CreateEnumerator ((IMessageEnumerator) mockME.MockInstance);
63                         me.RemoveCurrent ();
64                 }
65                 
66                 [Test]
67                 [ExpectedException(typeof(InvalidOperationException))]
68                 public void RemoveCurrentThrowsMessageUnavailableException ()
69                 {
70                         mockME.ExpectAndThrow ("RemoveCurrent", new MessageUnavailableException (), null);
71                         SystemMessageEnumerator me = CreateEnumerator ((IMessageEnumerator) mockME.MockInstance);
72                         me.RemoveCurrent ();
73                 }               
74                 
75                 [Test]
76                 [ExpectedException(typeof(SystemMessageQueueException))]
77                 public void RemoveCurrentThrowsMonoMessagingException ()
78                 {
79                         mockME.ExpectAndThrow ("RemoveCurrent", new MonoMessagingException (), null);
80                         SystemMessageEnumerator me = CreateEnumerator ((IMessageEnumerator) mockME.MockInstance);
81                         me.RemoveCurrent ();
82                 }               
83                 
84                 [Test]
85                 [ExpectedException(typeof(NotImplementedException))]
86                 public void RemoveCurrentThrowsMessageNotImplemented ()
87                 {
88                         mockME.ExpectAndThrow ("RemoveCurrent", new NotImplementedException (), null);
89                         SystemMessageEnumerator me = CreateEnumerator ((IMessageEnumerator) mockME.MockInstance);
90                         me.RemoveCurrent ();
91                 }               
92         
93                 public SystemMessageEnumerator CreateEnumerator (IMessageEnumerator ime)
94                 {
95             Type[] types = { 
96                 typeof (IMessageEnumerator), typeof (SystemIMessageFormatter)
97             };
98                 
99             ConstructorInfo ci = typeof (SystemMessageEnumerator).GetConstructor (
100                 BindingFlags.NonPublic | BindingFlags.Instance, 
101                 Type.DefaultBinder, types, new ParameterModifier[0]);
102                 
103             if (ci == null)
104                 throw new Exception ("ConstructorInfo is null");
105             
106             return (SystemMessageEnumerator) ci.Invoke (new object[] { ime, null });
107                 }
108         }
109 }