You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2017/03/07 19:39:22 UTC
[42/50] [abbrv] activemq-nms-msmq git commit: Apply patch for
AMQNET-556 from Stephane Ramet. Thanks Stephane!
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/EndianBinaryWriterTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/EndianBinaryWriterTest.cs b/src/test/csharp/EndianBinaryWriterTest.cs
new file mode 100644
index 0000000..5baf66f
--- /dev/null
+++ b/src/test/csharp/EndianBinaryWriterTest.cs
@@ -0,0 +1,202 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.IO;
+using Apache.NMS.Util;
+using NUnit.Framework;
+
+namespace Apache.NMS.Test
+{
+ [TestFixture]
+ public class EndianBinaryWriterTest
+ {
+ void writeString16TestHelper(char[] input, byte[] expect)
+ {
+ MemoryStream stream = new MemoryStream();
+ EndianBinaryWriter writer = new EndianBinaryWriter(stream);
+
+ String str = new String(input);
+
+ writer.WriteString16(str);
+
+ byte[] result = stream.GetBuffer();
+
+ Assert.AreEqual(result[0], 0x00);
+ Assert.AreEqual(result[1], expect.Length);
+
+ for(int i = 4; i < expect.Length; ++i)
+ {
+ Assert.AreEqual(result[i], expect[i - 2]);
+ }
+ }
+
+ [Test]
+ public void testWriteString16_1byteUTF8encoding()
+ {
+ // Test data with 1-byte UTF8 encoding.
+ char[] input = { '\u0000', '\u000B', '\u0048', '\u0065', '\u006C', '\u006C', '\u006F', '\u0020', '\u0057', '\u006F', '\u0072', '\u006C', '\u0064' };
+ byte[] expect = { 0xC0, 0x80, 0x0B, 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x57, 0x6F, 0x72, 0x6C, 0x64 };
+
+ writeString16TestHelper(input, expect);
+ }
+
+ [Test]
+ public void testWriteString16_2byteUTF8encoding()
+ {
+ // Test data with 2-byte UT8 encoding.
+ char[] input = { '\u0000', '\u00C2', '\u00A9', '\u00C3', '\u00A6' };
+ byte[] expect = { 0xC0, 0x80, 0xC3, 0x82, 0xC2, 0xA9, 0xC3, 0x83, 0xC2, 0xA6 };
+
+ writeString16TestHelper(input, expect);
+ }
+
+ [Test]
+ public void testWriteString16_1byteAnd2byteEmbeddedNULLs()
+ {
+ // Test data with 1-byte and 2-byte encoding with embedded NULL's.
+ char[] input = { '\u0000', '\u0004', '\u00C2', '\u00A9', '\u00C3', '\u0000', '\u00A6' };
+ byte[] expect = { 0xC0, 0x80, 0x04, 0xC3, 0x82, 0xC2, 0xA9, 0xC3, 0x83, 0xC0, 0x80, 0xC2, 0xA6 };
+
+ writeString16TestHelper(input, expect);
+ }
+
+ [Test]
+ public void testWriteString16_nullstring()
+ {
+ // test that a null string writes no output.
+ MemoryStream stream = new MemoryStream();
+ EndianBinaryWriter writer = new EndianBinaryWriter(stream);
+ writer.WriteString16(null);
+ Assert.AreEqual(0, stream.Length);
+ }
+
+ [Test]
+ public void testWriteString16_emptystring()
+ {
+ // test that a null string writes no output.
+ MemoryStream stream = new MemoryStream();
+ EndianBinaryWriter writer = new EndianBinaryWriter(stream);
+ writer.WriteString16("");
+
+ stream.Seek(0, SeekOrigin.Begin);
+ EndianBinaryReader reader = new EndianBinaryReader(stream);
+ Assert.AreEqual(0, reader.ReadInt16());
+ }
+
+ [Test]
+ [ExpectedException(typeof(IOException))]
+ public void testWriteString16_stringTooLong()
+ {
+ // String of length 65536 of Null Characters.
+ MemoryStream stream = new MemoryStream();
+ EndianBinaryWriter writer = new EndianBinaryWriter(stream);
+ String testStr = new String('a', 65536);
+ writer.Write(testStr);
+ }
+
+ [Test]
+ public void testWriteString16_maxStringLength()
+ {
+ // String of length 65535 of non Null Characters since Null encodes as UTF-8.
+ MemoryStream stream = new MemoryStream();
+ EndianBinaryWriter writer = new EndianBinaryWriter(stream);
+ String testStr = new String('a', 65535);
+ writer.Write(testStr);
+ }
+
+ [Test]
+ [ExpectedException(typeof(IOException))]
+ public void testWriteString16_invalidEncodingHeader()
+ {
+ // Set one of the 65535 bytes to a value that will result in a 2 byte UTF8 encoded sequence.
+ // This will cause the string of length 65535 to have a utf length of 65536.
+ MemoryStream stream = new MemoryStream();
+ EndianBinaryWriter writer = new EndianBinaryWriter(stream);
+ String testStr = new String('a', 65535);
+ char[] array = testStr.ToCharArray();
+ array[0] = '\u0000';
+ testStr = new String(array);
+ writer.Write(testStr);
+ }
+
+ void writeString32TestHelper(char[] input, byte[] expect)
+ {
+ MemoryStream stream = new MemoryStream();
+ EndianBinaryWriter writer = new EndianBinaryWriter(stream);
+
+ String str = new String(input);
+
+ writer.WriteString32(str);
+
+ byte[] result = stream.GetBuffer();
+
+ Assert.AreEqual(result[0], 0x00);
+ Assert.AreEqual(result[1], 0x00);
+ Assert.AreEqual(result[2], 0x00);
+ Assert.AreEqual(result[3], expect.Length);
+
+ for(int i = 4; i < expect.Length; ++i)
+ {
+ Assert.AreEqual(result[i], expect[i - 4]);
+ }
+ }
+
+ [Test]
+ public void testWriteString32_1byteUTF8encoding()
+ {
+ // Test data with 1-byte UTF8 encoding.
+ char[] input = { '\u0000', '\u000B', '\u0048', '\u0065', '\u006C', '\u006C', '\u006F', '\u0020', '\u0057', '\u006F', '\u0072', '\u006C', '\u0064' };
+ byte[] expect = { 0xC0, 0x80, 0x0B, 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x57, 0x6F, 0x72, 0x6C, 0x64 };
+
+ writeString32TestHelper(input, expect);
+ }
+
+ [Test]
+ public void testWriteString32_2byteUTF8encoding()
+ {
+ // Test data with 2-byte UT8 encoding.
+ char[] input = { '\u0000', '\u00C2', '\u00A9', '\u00C3', '\u00A6' };
+ byte[] expect = { 0xC0, 0x80, 0xC3, 0x82, 0xC2, 0xA9, 0xC3, 0x83, 0xC2, 0xA6 };
+
+ writeString32TestHelper(input, expect);
+ }
+
+ [Test]
+ public void testWriteString32_1byteAnd2byteEmbeddedNULLs()
+ {
+ // Test data with 1-byte and 2-byte encoding with embedded NULL's.
+ char[] input = { '\u0000', '\u0004', '\u00C2', '\u00A9', '\u00C3', '\u0000', '\u00A6' };
+ byte[] expect = { 0xC0, 0x80, 0x04, 0xC3, 0x82, 0xC2, 0xA9, 0xC3, 0x83, 0xC0, 0x80, 0xC2, 0xA6 };
+
+ writeString32TestHelper(input, expect);
+ }
+
+ [Test]
+ public void testWriteString32_nullstring()
+ {
+ // test that a null strings writes a -1
+ MemoryStream stream = new MemoryStream();
+ EndianBinaryWriter writer = new EndianBinaryWriter(stream);
+ writer.WriteString32(null);
+
+ stream.Seek(0, SeekOrigin.Begin);
+ EndianBinaryReader reader = new EndianBinaryReader(stream);
+ Assert.AreEqual(-1, reader.ReadInt32());
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/EndianTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/EndianTest.cs b/src/test/csharp/EndianTest.cs
new file mode 100644
index 0000000..ad9ce08
--- /dev/null
+++ b/src/test/csharp/EndianTest.cs
@@ -0,0 +1,131 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System.IO;
+using Apache.NMS.Util;
+using NUnit.Framework;
+
+namespace Apache.NMS.Test
+{
+ [TestFixture]
+ public class EndianTest
+ {
+ [Test]
+ public void TestLongEndian()
+ {
+ long value = 0x0102030405060708L;
+ long newValue = EndianSupport.SwitchEndian(value);
+ Assert.AreEqual(0x0807060504030201L, newValue);
+ long actual = EndianSupport.SwitchEndian(newValue);
+ Assert.AreEqual(value, actual);
+ }
+
+ [Test]
+ public void TestIntEndian()
+ {
+ int value = 0x12345678;
+ int newValue = EndianSupport.SwitchEndian(value);
+ Assert.AreEqual(0x78563412, newValue);
+ int actual = EndianSupport.SwitchEndian(newValue);
+ Assert.AreEqual(value, actual);
+ }
+
+ [Test]
+ public void TestCharEndian()
+ {
+ char value = 'J';
+ char newValue = EndianSupport.SwitchEndian(value);
+ char actual = EndianSupport.SwitchEndian(newValue);
+ Assert.AreEqual(value, actual);
+ }
+
+ [Test]
+ public void TestShortEndian()
+ {
+ short value = 0x1234;
+ short newValue = EndianSupport.SwitchEndian(value);
+ Assert.AreEqual(0x3412, newValue);
+ short actual = EndianSupport.SwitchEndian(newValue);
+ Assert.AreEqual(value, actual);
+ }
+
+ [Test]
+ public void TestNegativeLongEndian()
+ {
+ long value = -0x0102030405060708L;
+ long newValue = EndianSupport.SwitchEndian(value);
+ long actual = EndianSupport.SwitchEndian(newValue);
+ Assert.AreEqual(value, actual);
+ }
+
+ [Test]
+ public void TestNegativeIntEndian()
+ {
+ int value = -0x12345678;
+ int newValue = EndianSupport.SwitchEndian(value);
+ int actual = EndianSupport.SwitchEndian(newValue);
+ Assert.AreEqual(value, actual);
+ }
+
+ [Test]
+ public void TestNegativeShortEndian()
+ {
+ short value = -0x1234;
+ short newValue = EndianSupport.SwitchEndian(value);
+ short actual = EndianSupport.SwitchEndian(newValue);
+ Assert.AreEqual(value, actual);
+ }
+
+ [Test]
+ public void TestFloatDontNeedEndianSwitch()
+ {
+ float value = -1.223F;
+
+ // Convert to int so we can compare to Java version.
+ MemoryStream ms = new MemoryStream(4);
+ BinaryWriter bw = new BinaryWriter(ms);
+ bw.Write(value);
+ bw.Close();
+ ms = new MemoryStream(ms.ToArray());
+ BinaryReader br = new BinaryReader(ms);
+
+ // System.out.println(Integer.toString(Float.floatToIntBits(-1.223F), 16));
+ Assert.AreEqual(-0x406374bc, br.ReadInt32());
+ }
+
+ [Test]
+ public void TestDoublDontNeedEndianSwitch()
+ {
+ double value = -1.223D;
+
+ // Convert to int so we can compare to Java version.
+ MemoryStream ms = new MemoryStream(4);
+ BinaryWriter bw = new BinaryWriter(ms);
+ bw.Write(value);
+ bw.Close();
+ ms = new MemoryStream(ms.ToArray());
+ BinaryReader br = new BinaryReader(ms);
+ long longVersion = br.ReadInt64();
+
+ // System.out.println(Long.toString(Double.doubleToLongBits(-1.223D), 16));
+ Assert.AreEqual(-0x400c6e978d4fdf3b, longVersion);
+ }
+ }
+}
+
+
+
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/ForeignMessageTransformationTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/ForeignMessageTransformationTest.cs b/src/test/csharp/ForeignMessageTransformationTest.cs
new file mode 100644
index 0000000..225ae88
--- /dev/null
+++ b/src/test/csharp/ForeignMessageTransformationTest.cs
@@ -0,0 +1,315 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using Apache.NMS.Util;
+using Apache.NMS.Commands;
+using NUnit.Framework;
+
+namespace Apache.NMS.Test
+{
+ //[TestFixture]
+ public class ForeignMessageTransformationTest : NMSTest
+ {
+ private string propertyName = "Test-Property";
+ private string propertyValue = "Test-Property-Value";
+ private string mapElementName = "Test-Map-Property";
+ private string mapElementValue = "Test-Map-Property-Value";
+ private string textBody = "This is a TextMessage from a Foreign Provider";
+ private byte[] bytesContent = {1, 2, 3, 4, 5, 6, 7, 8};
+
+ private bool a = true;
+ private byte b = 123;
+ private char c = 'c';
+ private short d = 0x1234;
+ private int e = 0x12345678;
+ private long f = 0x1234567812345678;
+ private string g = "Hello World!";
+ private bool h = false;
+ private byte i = 0xFF;
+ private short j = -0x1234;
+ private int k = -0x12345678;
+ private long l = -0x1234567812345678;
+ private float m = 2.1F;
+ private double n = 2.3;
+
+ protected ForeignMessageTransformationTest(NMSTestSupport testSupport)
+ : base(testSupport)
+ {
+ }
+
+ //[Test]
+ public virtual void TestSendReceiveForeignMessage(
+ //[Values(DEFAULT_TEST_QUEUE, DEFAULT_TEST_TOPIC)]
+ string testDestRef,
+ //[Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ using(IConnection connection = CreateConnection())
+ {
+ connection.Start();
+ using(ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge))
+ {
+ IDestination destination = GetClearDestinationByNodeReference(session, testDestRef);
+ using(IMessageConsumer consumer = session.CreateConsumer(destination))
+ using(IMessageProducer producer = session.CreateProducer(destination))
+ {
+ try
+ {
+ producer.DeliveryMode = deliveryMode;
+ Message request = new Message();
+ request.Properties[propertyName] = propertyValue;
+
+ producer.Send(request);
+
+ IMessage message = consumer.Receive(receiveTimeout);
+ Assert.IsNotNull(message, "No message returned!");
+ Assert.AreEqual(request.Properties.Count, message.Properties.Count, "Invalid number of properties.");
+ Assert.AreEqual(deliveryMode, message.NMSDeliveryMode, "NMSDeliveryMode does not match");
+
+ // use generic API to access entries
+ Assert.AreEqual(propertyValue, message.Properties[propertyName], "generic map entry: " + propertyName);
+
+ // use type safe APIs
+ Assert.AreEqual(propertyValue, message.Properties.GetString(propertyName), "map entry: " + propertyName);
+ }
+ catch(NotSupportedException)
+ {
+ }
+ }
+ }
+ }
+ }
+
+ //[Test]
+ public virtual void TestSendReceiveForeignTextMessage(
+ //[Values(DEFAULT_TEST_QUEUE, DEFAULT_TEST_TOPIC)]
+ string testDestRef,
+ //[Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ using(IConnection connection = CreateConnection())
+ {
+ connection.Start();
+ using(ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge))
+ {
+ IDestination destination = GetClearDestinationByNodeReference(session, testDestRef);
+ using(IMessageConsumer consumer = session.CreateConsumer(destination))
+ using(IMessageProducer producer = session.CreateProducer(destination))
+ {
+ try
+ {
+ producer.DeliveryMode = deliveryMode;
+ TextMessage request = new TextMessage();
+ request.Properties[propertyName] = propertyValue;
+ request.Text = textBody;
+
+ producer.Send(request);
+
+ ITextMessage message = consumer.Receive(receiveTimeout) as ITextMessage;
+ Assert.IsNotNull(message, "No message returned!");
+ Assert.AreEqual(request.Properties.Count, message.Properties.Count, "Invalid number of properties.");
+ Assert.AreEqual(deliveryMode, message.NMSDeliveryMode, "NMSDeliveryMode does not match");
+
+ // Check the body
+ Assert.AreEqual(textBody, message.Text, "TextMessage body was wrong.");
+
+ // use generic API to access entries
+ Assert.AreEqual(propertyValue, message.Properties[propertyName], "generic map entry: " + propertyName);
+
+ // use type safe APIs
+ Assert.AreEqual(propertyValue, message.Properties.GetString(propertyName), "map entry: " + propertyName);
+ }
+ catch(NotSupportedException)
+ {
+ }
+ }
+ }
+ }
+ }
+
+ //[Test]
+ public virtual void TestSendReceiveForeignBytesMessage(
+ //[Values(DEFAULT_TEST_QUEUE, DEFAULT_TEST_TOPIC)]
+ string testDestRef,
+ //[Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ using(IConnection connection = CreateConnection())
+ {
+ connection.Start();
+ using(ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge))
+ {
+ IDestination destination = GetClearDestinationByNodeReference(session, testDestRef);
+ using(IMessageConsumer consumer = session.CreateConsumer(destination))
+ using(IMessageProducer producer = session.CreateProducer(destination))
+ {
+ try
+ {
+ producer.DeliveryMode = deliveryMode;
+ BytesMessage request = new BytesMessage();
+ request.Properties[propertyName] = propertyValue;
+ request.WriteBytes(bytesContent);
+
+ producer.Send(request);
+
+ IBytesMessage message = consumer.Receive(receiveTimeout) as IBytesMessage;
+ Assert.IsNotNull(message, "No message returned!");
+ Assert.AreEqual(request.Properties.Count, message.Properties.Count, "Invalid number of properties.");
+ Assert.AreEqual(deliveryMode, message.NMSDeliveryMode, "NMSDeliveryMode does not match");
+
+ // Check the body
+ byte[] content = new byte[bytesContent.Length];
+ Assert.AreEqual(bytesContent.Length, message.ReadBytes(content));
+ Assert.AreEqual(bytesContent, content, "BytesMessage body was wrong.");
+
+ // use generic API to access entries
+ Assert.AreEqual(propertyValue, message.Properties[propertyName], "generic map entry: " + propertyName);
+
+ // use type safe APIs
+ Assert.AreEqual(propertyValue, message.Properties.GetString(propertyName), "map entry: " + propertyName);
+ }
+ catch(NotSupportedException)
+ {
+ }
+ }
+ }
+ }
+ }
+
+ //[Test]
+ public virtual void TestSendReceiveForeignMapMessage(
+ //[Values(DEFAULT_TEST_QUEUE, DEFAULT_TEST_TOPIC)]
+ string testDestRef,
+ //[Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ using(IConnection connection = CreateConnection())
+ {
+ connection.Start();
+ using(ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge))
+ {
+ IDestination destination = GetClearDestinationByNodeReference(session, testDestRef);
+ using(IMessageConsumer consumer = session.CreateConsumer(destination))
+ using(IMessageProducer producer = session.CreateProducer(destination))
+ {
+ try
+ {
+ producer.DeliveryMode = deliveryMode;
+ MapMessage request = new MapMessage();
+ request.Properties[propertyName] = propertyValue;
+ request.Body[mapElementName] = mapElementValue;
+
+ producer.Send(request);
+
+ IMapMessage message = consumer.Receive(receiveTimeout) as IMapMessage;
+ Assert.IsNotNull(message, "No message returned!");
+ Assert.AreEqual(request.Properties.Count, message.Properties.Count, "Invalid number of properties.");
+ Assert.AreEqual(deliveryMode, message.NMSDeliveryMode, "NMSDeliveryMode does not match");
+
+ // Check the body
+ Assert.AreEqual(request.Body.Count, message.Body.Count);
+ Assert.AreEqual(mapElementValue, message.Body[mapElementName], "MapMessage body was wrong.");
+
+ // use generic API to access entries
+ Assert.AreEqual(propertyValue, message.Properties[propertyName], "generic map entry: " + propertyName);
+
+ // use type safe APIs
+ Assert.AreEqual(propertyValue, message.Properties.GetString(propertyName), "map entry: " + propertyName);
+ }
+ catch(NotSupportedException)
+ {
+ }
+ }
+ }
+ }
+ }
+
+ //[Test]
+ public virtual void TestSendReceiveForeignStreamMessage(
+ //[Values(DEFAULT_TEST_QUEUE, DEFAULT_TEST_TOPIC)]
+ string testDestRef,
+ //[Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ using(IConnection connection = CreateConnection())
+ {
+ connection.Start();
+ using(ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge))
+ {
+ IDestination destination = GetClearDestinationByNodeReference(session, testDestRef);
+ using(IMessageConsumer consumer = session.CreateConsumer(destination))
+ using(IMessageProducer producer = session.CreateProducer(destination))
+ {
+ try
+ {
+ producer.DeliveryMode = deliveryMode;
+ StreamMessage request = new StreamMessage();
+ request.Properties[propertyName] = propertyValue;
+
+ request.WriteBoolean(a);
+ request.WriteByte(b);
+ request.WriteChar(c);
+ request.WriteInt16(d);
+ request.WriteInt32(e);
+ request.WriteInt64(f);
+ request.WriteString(g);
+ request.WriteBoolean(h);
+ request.WriteByte(i);
+ request.WriteInt16(j);
+ request.WriteInt32(k);
+ request.WriteInt64(l);
+ request.WriteSingle(m);
+ request.WriteDouble(n);
+
+ producer.Send(request);
+
+ IStreamMessage message = consumer.Receive(receiveTimeout) as IStreamMessage;
+ Assert.IsNotNull(message, "No message returned!");
+ Assert.AreEqual(request.Properties.Count, message.Properties.Count, "Invalid number of properties.");
+ Assert.AreEqual(deliveryMode, message.NMSDeliveryMode, "NMSDeliveryMode does not match");
+
+ // Check the body
+ Assert.AreEqual(a, message.ReadBoolean(), "Stream Boolean Value: a");
+ Assert.AreEqual(b, message.ReadByte(), "Stream Byte Value: b");
+ Assert.AreEqual(c, message.ReadChar(), "Stream Char Value: c");
+ Assert.AreEqual(d, message.ReadInt16(), "Stream Int16 Value: d");
+ Assert.AreEqual(e, message.ReadInt32(), "Stream Int32 Value: e");
+ Assert.AreEqual(f, message.ReadInt64(), "Stream Int64 Value: f");
+ Assert.AreEqual(g, message.ReadString(), "Stream String Value: g");
+ Assert.AreEqual(h, message.ReadBoolean(), "Stream Boolean Value: h");
+ Assert.AreEqual(i, message.ReadByte(), "Stream Byte Value: i");
+ Assert.AreEqual(j, message.ReadInt16(), "Stream Int16 Value: j");
+ Assert.AreEqual(k, message.ReadInt32(), "Stream Int32 Value: k");
+ Assert.AreEqual(l, message.ReadInt64(), "Stream Int64 Value: l");
+ Assert.AreEqual(m, message.ReadSingle(), "Stream Single Value: m");
+ Assert.AreEqual(n, message.ReadDouble(), "Stream Double Value: n");
+
+ // use generic API to access entries
+ Assert.AreEqual(propertyValue, message.Properties[propertyName], "generic map entry: " + propertyName);
+
+ // use type safe APIs
+ Assert.AreEqual(propertyValue, message.Properties.GetString(propertyName), "map entry: " + propertyName);
+ }
+ catch(NotSupportedException)
+ {
+ }
+ }
+ }
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQAsyncConsumeTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQAsyncConsumeTest.cs b/src/test/csharp/MSMQAsyncConsumeTest.cs
new file mode 100644
index 0000000..4aabb1e
--- /dev/null
+++ b/src/test/csharp/MSMQAsyncConsumeTest.cs
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System.Threading;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ public class MSMQAsyncConsumeTest : AsyncConsumeTest
+ {
+ protected static string DEFAULT_TEST_QUEUE = "defaultTestQueue";
+
+ public MSMQAsyncConsumeTest() :
+ base(new MSMQTestSupport())
+ {
+ }
+
+ [SetUp]
+ public override void SetUp()
+ {
+ base.SetUp();
+ }
+
+ [TearDown]
+ public override void TearDown()
+ {
+ base.TearDown();
+ }
+
+ [Test]
+ public void TestAsynchronousConsume(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestAsynchronousConsume(deliveryMode, DEFAULT_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestCreateConsumerAfterSend(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestCreateConsumerAfterSend(deliveryMode, DEFAULT_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestCreateConsumerBeforeSendAddListenerAfterSend(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestCreateConsumerBeforeSendAddListenerAfterSend(deliveryMode, DEFAULT_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestAsynchronousTextMessageConsume(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestAsynchronousTextMessageConsume(deliveryMode, DEFAULT_TEST_QUEUE);
+ }
+
+ [Test]
+ [Ignore("Temporary queues are not supported")]
+ public void TestTemporaryQueueAsynchronousConsume(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ using(IConnection connection = CreateConnectionAndStart(GetTestClientId()))
+ using(ISession syncSession = connection.CreateSession(AcknowledgementMode.AutoAcknowledge))
+ using(ISession asyncSession = connection.CreateSession(AcknowledgementMode.AutoAcknowledge))
+ using(IDestination destination = GetClearDestinationByNodeReference(syncSession, DEFAULT_TEST_QUEUE))
+ using(ITemporaryQueue tempReplyDestination = syncSession.CreateTemporaryQueue())
+ using(IMessageConsumer consumer = asyncSession.CreateConsumer(destination))
+ using(IMessageConsumer tempConsumer = asyncSession.CreateConsumer(tempReplyDestination))
+ using(IMessageProducer producer = syncSession.CreateProducer(destination))
+ {
+ producer.DeliveryMode = deliveryMode;
+ tempConsumer.Listener += new MessageListener(OnMessage);
+ consumer.Listener += new MessageListener(OnQueueMessage);
+
+ IMessage request = syncSession.CreateMessage();
+ request.NMSCorrelationID = "TemqQueueAsyncConsume";
+ request.NMSType = "Test";
+ request.NMSReplyTo = tempReplyDestination;
+ producer.Send(request);
+
+ WaitForMessageToArrive();
+ Assert.AreEqual("TempQueueAsyncResponse", receivedMsg.NMSCorrelationID, "Invalid correlation ID.");
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQBadConsumeTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQBadConsumeTest.cs b/src/test/csharp/MSMQBadConsumeTest.cs
new file mode 100644
index 0000000..b8e9089
--- /dev/null
+++ b/src/test/csharp/MSMQBadConsumeTest.cs
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using NUnit.Framework;
+using Apache.NMS.Test;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ public class MSMQBadConsumeTest : BadConsumeTest
+ {
+ public MSMQBadConsumeTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+ [SetUp]
+ public override void SetUp()
+ {
+ base.SetUp();
+ }
+
+ [TearDown]
+ public override void TearDown()
+ {
+ base.TearDown();
+ }
+
+ [Test]
+ [ExpectedException(Handler="ExceptionValidationCheck")]
+ public override void TestBadConsumerException()
+ {
+ base.TestBadConsumerException();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQBytesMessageTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQBytesMessageTest.cs b/src/test/csharp/MSMQBytesMessageTest.cs
new file mode 100644
index 0000000..5c58bc9
--- /dev/null
+++ b/src/test/csharp/MSMQBytesMessageTest.cs
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using Apache.NMS.Util;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ public class MSMQBytesMessageTest : BytesMessageTest
+ {
+ protected static string DEFAULT_TEST_QUEUE = "defaultTestQueue";
+
+ public MSMQBytesMessageTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+ [Test]
+ public void SendReceiveBytesMessage(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.SendReceiveBytesMessage(deliveryMode, DEFAULT_TEST_QUEUE);
+ }
+
+ [Test]
+ public void SendReceiveBytesMessageContent(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.SendReceiveBytesMessageContent(deliveryMode, DEFAULT_TEST_QUEUE);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQConnectionTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQConnectionTest.cs b/src/test/csharp/MSMQConnectionTest.cs
new file mode 100644
index 0000000..cc3d2d4
--- /dev/null
+++ b/src/test/csharp/MSMQConnectionTest.cs
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ public class MSMQConnectionTest : ConnectionTest
+ {
+ protected const string DEFAULT_TEST_QUEUE = "defaultTestQueue";
+ protected const string DEFAULT_TEST_TOPIC = "defaultTestTopic";
+
+ public MSMQConnectionTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+ [SetUp]
+ public override void SetUp()
+ {
+ base.SetUp();
+ }
+
+ [TearDown]
+ public override void TearDown()
+ {
+ base.TearDown();
+ }
+
+ /// <summary>
+ /// Verify that it is possible to create multiple connections to the broker.
+ /// There was a bug in the connection factory which set the clientId member which made
+ /// it impossible to create an additional connection.
+ /// </summary>
+ [Test]
+ public override void TestTwoConnections()
+ {
+ base.TestTwoConnections();
+ }
+
+ [Test]
+ public void TestCreateAndDisposeWithConsumer(
+ [Values(true, false)]
+ bool disposeConsumer)
+ {
+ base.TestCreateAndDisposeWithConsumer(disposeConsumer, DEFAULT_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestCreateAndDisposeWithProducer(
+ [Values(true, false)]
+ bool disposeProducer)
+ {
+ base.TestCreateAndDisposeWithProducer(disposeProducer, DEFAULT_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestStartAfterSend(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC*/)]
+ string testDestRef,
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestStartAfterSend(deliveryMode, testDestRef);
+ }
+
+ /// <summary>
+ /// Tests if the consumer receives the messages that were sent before the
+ /// connection was started.
+ /// </summary>
+ [Test]
+ public override void TestStoppedConsumerHoldsMessagesTillStarted(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC*/)]
+ string testDestRef)
+ {
+ base.TestStoppedConsumerHoldsMessagesTillStarted(testDestRef);
+ }
+
+ /// <summary>
+ /// Tests if the consumer is able to receive messages even when the
+ /// connecction restarts multiple times.
+ /// </summary>
+ [Test]
+ public override void TestMultipleConnectionStops(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC*/)]
+ string testDestRef)
+ {
+ base.TestMultipleConnectionStops(testDestRef);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQConsumerTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQConsumerTest.cs b/src/test/csharp/MSMQConsumerTest.cs
new file mode 100644
index 0000000..b7f7478
--- /dev/null
+++ b/src/test/csharp/MSMQConsumerTest.cs
@@ -0,0 +1,154 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using System.Threading;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ public class MSMQConsumerTest : ConsumerTest
+ {
+ protected const string DEFAULT_TEST_QUEUE = "transactionTestQueue";
+ protected const string DEFAULT_TEST_TOPIC = "defaultTestTopic";
+
+ public MSMQConsumerTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+// The .NET CF does not have the ability to interrupt threads, so this test is impossible.
+#if !NETCF
+ [Test]
+ public override void TestNoTimeoutConsumer(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC*/)]
+ string testDestRef,
+ [Values(AcknowledgementMode.AutoAcknowledge, AcknowledgementMode.ClientAcknowledge,
+ AcknowledgementMode.DupsOkAcknowledge, AcknowledgementMode.Transactional)]
+ AcknowledgementMode ackMode)
+ {
+ base.TestNoTimeoutConsumer(testDestRef, ackMode);
+ }
+
+ [Test]
+ public override void TestSyncReceiveConsumerClose(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC*/)]
+ string testDestRef,
+ [Values(AcknowledgementMode.AutoAcknowledge, AcknowledgementMode.ClientAcknowledge,
+ AcknowledgementMode.DupsOkAcknowledge, AcknowledgementMode.Transactional)]
+ AcknowledgementMode ackMode)
+ {
+ base.TestSyncReceiveConsumerClose(testDestRef, ackMode);
+ }
+
+ [Test]
+ public override void TestDoChangeSentMessage(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC*/)]
+ string testDestRef,
+ [Values(AcknowledgementMode.AutoAcknowledge, AcknowledgementMode.ClientAcknowledge,
+ AcknowledgementMode.DupsOkAcknowledge, AcknowledgementMode.Transactional)]
+ AcknowledgementMode ackMode,
+ [Values(true, false)] bool doClear)
+ {
+ base.TestDoChangeSentMessage(testDestRef, ackMode, doClear);
+ }
+
+ [Test]
+ public override void TestConsumerReceiveBeforeMessageDispatched(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC*/)]
+ string testDestRef,
+ [Values(AcknowledgementMode.AutoAcknowledge, AcknowledgementMode.ClientAcknowledge,
+ AcknowledgementMode.DupsOkAcknowledge, AcknowledgementMode.Transactional)]
+ AcknowledgementMode ackMode)
+ {
+ base.TestConsumerReceiveBeforeMessageDispatched(testDestRef, ackMode);
+ }
+
+ [Test]
+ public override void TestDontStart(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC*/)]
+ string testDestRef,
+ [Values(MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestDontStart(testDestRef, deliveryMode);
+ }
+
+ [Test]
+ public override void TestSendReceiveTransacted(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC, DEFAULT_TEST_TEMP_QUEUE, DEFAULT_TEST_TEMP_TOPIC*/)]
+ string testDestRef,
+ [Values(MsgDeliveryMode.NonPersistent, MsgDeliveryMode.Persistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestSendReceiveTransacted(testDestRef, deliveryMode);
+ }
+
+ [Test]
+ public void TestAckedMessageAreConsumed()
+ {
+ base.TestAckedMessageAreConsumed(DEFAULT_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestLastMessageAcked()
+ {
+ base.TestLastMessageAcked(DEFAULT_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestUnAckedMessageAreNotConsumedOnSessionClose()
+ {
+ base.TestUnAckedMessageAreNotConsumedOnSessionClose(DEFAULT_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestAsyncAckedMessageAreConsumed()
+ {
+ base.TestAsyncAckedMessageAreConsumed(DEFAULT_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestAsyncUnAckedMessageAreNotConsumedOnSessionClose()
+ {
+ base.TestAsyncUnAckedMessageAreNotConsumedOnSessionClose(DEFAULT_TEST_QUEUE);
+ }
+
+ [Test]
+ public /*override*/ void TestAddRemoveAsnycMessageListener()
+ {
+ base.TestAddRemoveAsnycMessageListener(DestinationType.Queue, DEFAULT_TEST_QUEUE);
+ }
+
+ [Test]
+ public override void TestReceiveNoWait(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC*/)]
+ string testDestRef,
+ [Values(AcknowledgementMode.AutoAcknowledge, AcknowledgementMode.ClientAcknowledge,
+ AcknowledgementMode.DupsOkAcknowledge, AcknowledgementMode.Transactional)]
+ AcknowledgementMode ackMode,
+ [Values(MsgDeliveryMode.NonPersistent, MsgDeliveryMode.Persistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestReceiveNoWait(testDestRef, ackMode, deliveryMode);
+ }
+
+#endif
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQDurableTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQDurableTest.cs b/src/test/csharp/MSMQDurableTest.cs
new file mode 100644
index 0000000..fe1d5b5
--- /dev/null
+++ b/src/test/csharp/MSMQDurableTest.cs
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using Apache.NMS.Util;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ [Ignore("Topics are not supported")]
+ public class MSMQDurableTest : DurableTest
+ {
+ protected const string DEFAULT_TEST_QUEUE = "defaultTestQueue";
+ protected const string DEFAULT_TEST_TOPIC = "defaultTestTopic";
+ protected const string DURABLE_TEST_TOPIC = "durableConsumerTestTopic";
+
+ public MSMQDurableTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+ [SetUp]
+ public override void SetUp()
+ {
+ base.SetUp();
+ }
+
+ [Test]
+ public void TestSendWhileClosed(
+ [Values(AcknowledgementMode.AutoAcknowledge, AcknowledgementMode.ClientAcknowledge,
+ AcknowledgementMode.DupsOkAcknowledge, AcknowledgementMode.Transactional)]
+ AcknowledgementMode ackMode)
+ {
+ base.TestSendWhileClosed(ackMode, DEFAULT_TEST_TOPIC);
+ }
+
+ [Test]
+ public void TestDurableConsumerSelectorChange(
+ [Values(AcknowledgementMode.AutoAcknowledge, AcknowledgementMode.ClientAcknowledge,
+ AcknowledgementMode.DupsOkAcknowledge, AcknowledgementMode.Transactional)]
+ AcknowledgementMode ackMode)
+ {
+ base.TestDurableConsumerSelectorChange(ackMode, DEFAULT_TEST_TOPIC);
+ }
+
+ [Test]
+ public void TestDurableConsumer(
+ [Values(AcknowledgementMode.AutoAcknowledge, AcknowledgementMode.ClientAcknowledge,
+ AcknowledgementMode.DupsOkAcknowledge, AcknowledgementMode.Transactional)]
+ AcknowledgementMode ackMode)
+ {
+ string testDurableTopicURI = GetDestinationURI(DURABLE_TEST_TOPIC);
+
+ base.TestDurableConsumer(ackMode, testDurableTopicURI);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQForeignMessageTransformationTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQForeignMessageTransformationTest.cs b/src/test/csharp/MSMQForeignMessageTransformationTest.cs
new file mode 100644
index 0000000..17043f3
--- /dev/null
+++ b/src/test/csharp/MSMQForeignMessageTransformationTest.cs
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using Apache.NMS.Util;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ public class MSMQForeignMessageTransformationTest : ForeignMessageTransformationTest
+ {
+ protected const string DEFAULT_TEST_QUEUE = "defaultTestQueue";
+ protected const string DEFAULT_TEST_TOPIC = "defaultTestTopic";
+
+ public MSMQForeignMessageTransformationTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+ [Test]
+ public override void TestSendReceiveForeignMessage(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC*/)]
+ string testDestRef,
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestSendReceiveForeignMessage(testDestRef, deliveryMode);
+ }
+
+ [Test]
+ public override void TestSendReceiveForeignTextMessage(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC*/)]
+ string testDestRef,
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestSendReceiveForeignTextMessage(testDestRef, deliveryMode);
+ }
+
+ [Test]
+ public override void TestSendReceiveForeignBytesMessage(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC*/)]
+ string testDestRef,
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestSendReceiveForeignBytesMessage(testDestRef, deliveryMode);
+ }
+
+ [Test]
+ public override void TestSendReceiveForeignMapMessage(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC*/)]
+ string testDestRef,
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestSendReceiveForeignMapMessage(testDestRef, deliveryMode);
+ }
+
+ [Test]
+ public override void TestSendReceiveForeignStreamMessage(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC*/)]
+ string testDestRef,
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestSendReceiveForeignStreamMessage(testDestRef, deliveryMode);
+ }
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQMapMessageTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQMapMessageTest.cs b/src/test/csharp/MSMQMapMessageTest.cs
new file mode 100644
index 0000000..3afbcbe
--- /dev/null
+++ b/src/test/csharp/MSMQMapMessageTest.cs
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ public class MSMQMapMessageTest : MapMessageTest
+ {
+ protected static string DEFAULT_TEST_QUEUE = "defaultTestQueue";
+
+ public MSMQMapMessageTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+ [Test]
+ public void TestSendReceiveMapMessage(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestSendReceiveMapMessage(deliveryMode, DEFAULT_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestSendReceiveNestedMapMessage(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestSendReceiveNestedMapMessage(deliveryMode, DEFAULT_TEST_QUEUE);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQMessageSelectorTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQMessageSelectorTest.cs b/src/test/csharp/MSMQMessageSelectorTest.cs
new file mode 100644
index 0000000..5a108cd
--- /dev/null
+++ b/src/test/csharp/MSMQMessageSelectorTest.cs
@@ -0,0 +1,169 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using Apache.NMS.Util;
+using Apache.NMS.Test;
+using NUnit.Framework;
+using System.Globalization;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ [Category("LongRunning")]
+ public class MSMQMessageSelectorTest : MessageSelectorTest
+ {
+ protected const string SELECTOR_TEST_QUEUE = "messageSelectorTestQueue";
+ protected const string SELECTOR_TEST_TOPIC = "messageSelectorTestTopic";
+
+ public MSMQMessageSelectorTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+ [Test]
+ public override void TestFilterIgnoredMessages(
+ [Values(SELECTOR_TEST_QUEUE /*, SELECTOR_TEST_TOPIC*/)]
+ string testDestRef)
+ {
+ base.TestFilterIgnoredMessages(testDestRef);
+ }
+
+ [Test]
+ public override void TestFilterIgnoredMessagesSlowConsumer(
+ [Values(SELECTOR_TEST_QUEUE /*, SELECTOR_TEST_TOPIC*/)]
+ string testDestRef)
+ {
+ base.TestFilterIgnoredMessagesSlowConsumer(testDestRef);
+ }
+
+
+ [Test]
+ public override void TestInvalidSelector(
+ [Values(SELECTOR_TEST_QUEUE)]
+ string testDestRef)
+ {
+ base.TestInvalidSelector(testDestRef);
+ }
+
+ [Test]
+ public void TestSelectByMessageId(
+ [Values(SELECTOR_TEST_QUEUE)]
+ string testDestRef)
+ {
+ using(IConnection connection = CreateConnection())
+ {
+ connection.Start();
+ using(ISession session = connection.CreateSession())
+ {
+ IDestination destination = GetClearDestinationByNodeReference(session, testDestRef);
+
+ using(IMessageProducer producer = session.CreateProducer(destination))
+ {
+ ITextMessage message = null;
+
+ int COUNT = 5;
+ for(int i = 1; i <= COUNT; i++)
+ {
+ message = session.CreateTextMessage("MessageSelectorTest - TestSelectByMessageId: " + i.ToString());
+ producer.Send(message);
+ }
+
+ using(IQueueBrowser browser = session.CreateBrowser((IQueue)destination))
+ {
+ int i = 0;
+ foreach(IMessage message0 in browser)
+ {
+ if(++i == COUNT / 2)
+ {
+ message = message0 as ITextMessage;
+ break;
+ }
+ }
+ }
+
+ string selector = "NMSMessageId = '" + message.NMSMessageId + "'";
+
+ using(IMessageConsumer consumer = session.CreateConsumer(destination, selector))
+ {
+ ITextMessage msg = consumer.Receive(TimeSpan.FromMilliseconds(2000)) as ITextMessage;
+ Assert.IsNotNull(msg);
+ Assert.AreEqual(msg.Text, message.Text);
+ Assert.AreEqual(msg.NMSMessageId, message.NMSMessageId);
+
+ msg = consumer.Receive(TimeSpan.FromMilliseconds(2000)) as ITextMessage;
+ Assert.IsNull(msg);
+ }
+ }
+ }
+ }
+ }
+
+ [Test]
+ public void TestSelectByLookupId(
+ [Values(SELECTOR_TEST_QUEUE)]
+ string testDestRef)
+ {
+ using(IConnection connection = CreateConnection())
+ {
+ connection.Start();
+ using(ISession session = connection.CreateSession())
+ {
+ IDestination destination = GetClearDestinationByNodeReference(session, testDestRef);
+
+ using(IMessageProducer producer = session.CreateProducer(destination))
+ {
+ ITextMessage message = null;
+
+ int COUNT = 5;
+ for(int i = 1; i <= COUNT; i++)
+ {
+ message = session.CreateTextMessage("MessageSelectorTest - TestSelectByLookupId: " + i.ToString());
+ producer.Send(message);
+ }
+
+ using(IQueueBrowser browser = session.CreateBrowser((IQueue)destination))
+ {
+ int i = 0;
+ foreach(IMessage message0 in browser)
+ {
+ if(++i == COUNT / 2)
+ {
+ message = message0 as ITextMessage;
+ break;
+ }
+ }
+ }
+
+ long lookupId = (long)(message.Properties["LookupId"]);
+ string selector = "LookupId = " + lookupId.ToString(CultureInfo.InvariantCulture);
+
+ using(IMessageConsumer consumer = session.CreateConsumer(destination, selector))
+ {
+ ITextMessage msg = consumer.Receive(TimeSpan.FromMilliseconds(2000)) as ITextMessage;
+ Assert.IsNotNull(msg);
+ Assert.AreEqual(msg.Text, message.Text);
+ Assert.AreEqual(msg.Properties["LookupId"], lookupId);
+
+ msg = consumer.Receive(TimeSpan.FromMilliseconds(2000)) as ITextMessage;
+ Assert.IsNull(msg);
+ }
+ }
+ }
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQMessageTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQMessageTest.cs b/src/test/csharp/MSMQMessageTest.cs
new file mode 100644
index 0000000..1cfcd70
--- /dev/null
+++ b/src/test/csharp/MSMQMessageTest.cs
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ public class MSMQMessageTest : MessageTest
+ {
+ protected static string DEFAULT_TEST_QUEUE = "defaultTestQueue";
+
+ public MSMQMessageTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+ [Test]
+ public void TestSendReceiveMessageProperties(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestSendReceiveMessageProperties(deliveryMode, DEFAULT_TEST_QUEUE);
+ }
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQMessageTransformerTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQMessageTransformerTest.cs b/src/test/csharp/MSMQMessageTransformerTest.cs
new file mode 100644
index 0000000..2249db5
--- /dev/null
+++ b/src/test/csharp/MSMQMessageTransformerTest.cs
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ public class MSMQMessageTransformerTest : MessageTransformerTest
+ {
+ public MSMQMessageTransformerTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+ [Test]
+ public override void TestProducerTransformer(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestProducerTransformer(deliveryMode);
+ }
+
+ [Test]
+ public override void TestConsumerTransformer(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestConsumerTransformer(deliveryMode);
+ }
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQNMSPropertyTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQNMSPropertyTest.cs b/src/test/csharp/MSMQNMSPropertyTest.cs
new file mode 100644
index 0000000..3968aea
--- /dev/null
+++ b/src/test/csharp/MSMQNMSPropertyTest.cs
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ public class MSMQNMSPropertyTest : NMSPropertyTest
+ {
+ protected static string DEFAULT_TEST_QUEUE = "defaultTestQueue";
+
+ public MSMQNMSPropertyTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+ [Test]
+ public void TestSendReceiveNMSProperties(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestSendReceiveNMSProperties(deliveryMode, DEFAULT_TEST_QUEUE);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQProducerTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQProducerTest.cs b/src/test/csharp/MSMQProducerTest.cs
new file mode 100644
index 0000000..bbe86fd
--- /dev/null
+++ b/src/test/csharp/MSMQProducerTest.cs
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ public class MSMQProducerTest : ProducerTest
+ {
+ protected const string DEFAULT_TEST_QUEUE = "defaultTestQueue";
+ protected const string DEFAULT_TEST_TOPIC = "defaultTestTopic";
+ protected const string DEFAULT_TEST_TEMP_QUEUE = "defaultTestTempQueue";
+ protected const string DEFAULT_TEST_TEMP_TOPIC = "defaultTestTempTopic";
+
+ protected const string DEFAULT_TEST_QUEUE2 = "defaultTestQueue2";
+ protected const string DEFAULT_TEST_TOPIC2 = "defaultTestTopic2";
+ protected const string DEFAULT_TEST_TEMP_QUEUE2 = "defaultTestTempQueue2";
+ protected const string DEFAULT_TEST_TEMP_TOPIC2 = "defaultTestTempTopic2";
+
+ public MSMQProducerTest()
+ : base(new NMSTestSupport())
+ {
+ }
+
+ [Test]
+ public override void TestProducerSendToNullDestinationWithoutDefault()
+ {
+ base.TestProducerSendToNullDestinationWithoutDefault();
+ }
+
+ [Test]
+ public override void TestProducerSendToNullDestinationWithDefault(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC, DEFAULT_TEST_TEMP_QUEUE, DEFAULT_TEST_TEMP_TOPIC*/)]
+ string testDestRef)
+ {
+ base.TestProducerSendToNullDestinationWithDefault(testDestRef);
+ }
+
+ [Test]
+ public override void TestProducerSendToNonDefaultDestination(
+ [Values(DEFAULT_TEST_QUEUE /*, DEFAULT_TEST_TOPIC, DEFAULT_TEST_TEMP_QUEUE, DEFAULT_TEST_TEMP_TOPIC*/)]
+ string unusedTestDestRef,
+ [Values(DEFAULT_TEST_QUEUE2 /*, DEFAULT_TEST_TOPIC2, DEFAULT_TEST_TEMP_QUEUE2, DEFAULT_TEST_TEMP_TOPIC2*/)]
+ string usedTestDestRef)
+ {
+ base.TestProducerSendToNonDefaultDestination(unusedTestDestRef, usedTestDestRef);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQRequestResponseTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQRequestResponseTest.cs b/src/test/csharp/MSMQRequestResponseTest.cs
new file mode 100644
index 0000000..1261ab1
--- /dev/null
+++ b/src/test/csharp/MSMQRequestResponseTest.cs
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ public class MSMQRequestResponseTest : RequestResponseTest
+ {
+ protected const string DEFAULT_TEST_QUEUE = "defaultTestQueue";
+ protected const string DEFAULT_TEST_QUEUE2 = "defaultTestQueue2";
+
+ public MSMQRequestResponseTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+ [Test]
+ [Category("RequestResponse")]
+ public void TestRequestResponseMessaging()
+ {
+ base.TestRequestResponseMessaging(DEFAULT_TEST_QUEUE, DEFAULT_TEST_QUEUE2);
+ }
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQStreamMessageTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQStreamMessageTest.cs b/src/test/csharp/MSMQStreamMessageTest.cs
new file mode 100644
index 0000000..75d8c99
--- /dev/null
+++ b/src/test/csharp/MSMQStreamMessageTest.cs
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ public class MSMQStreamMessageTest : StreamMessageTest
+ {
+ protected static string DEFAULT_TEST_QUEUE = "defaultTestQueue";
+
+ public MSMQStreamMessageTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+ [Test]
+ public void TestSendReceiveStreamMessage(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestSendReceiveStreamMessage(deliveryMode, DEFAULT_TEST_QUEUE);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQTempDestinationDeletionTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQTempDestinationDeletionTest.cs b/src/test/csharp/MSMQTempDestinationDeletionTest.cs
new file mode 100644
index 0000000..b2d8a41
--- /dev/null
+++ b/src/test/csharp/MSMQTempDestinationDeletionTest.cs
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using Apache.NMS.Util;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ [Ignore("Temporary queues are not supported")]
+ public class MSMQTempDestinationDeletionTest : TempDestinationDeletionTest
+ {
+ protected const string DELETION_TEST_QUEUE = "deletionTestQueue";
+ protected const string DELETION_TEST_TOPIC = "deletionTestTopic";
+ protected const string DELETION_TEST_TEMP_QUEUE = "deletionTestTempQueue";
+ protected const string DELETION_TEST_TEMP_TOPIC = "deletionTestTempTopic";
+
+ public MSMQTempDestinationDeletionTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+ [Test]
+ public override void TestTempDestinationDeletion(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode,
+ [Values(DELETION_TEST_QUEUE, DELETION_TEST_TOPIC, DELETION_TEST_TEMP_QUEUE, DELETION_TEST_TEMP_TOPIC)]
+ string testDestRef)
+ {
+ base.TestTempDestinationDeletion(deliveryMode, testDestRef);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQTempDestinationTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQTempDestinationTest.cs b/src/test/csharp/MSMQTempDestinationTest.cs
new file mode 100644
index 0000000..de62683
--- /dev/null
+++ b/src/test/csharp/MSMQTempDestinationTest.cs
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ [Ignore("Temporary queues are not supported")]
+ public class MSMQTempDestinationTest : TempDestinationTest
+ {
+ public MSMQTempDestinationTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+ [SetUp]
+ public override void SetUp()
+ {
+ base.SetUp();
+ }
+
+ [TearDown]
+ public override void TearDown()
+ {
+ base.TearDown();
+ }
+
+ [Test]
+ public override void TestTempDestOnlyConsumedByLocalConn()
+ {
+ base.TestTempDestOnlyConsumedByLocalConn();
+ }
+
+ [Test]
+ public override void TestTempQueueHoldsMessagesWithConsumers()
+ {
+ base.TestTempQueueHoldsMessagesWithConsumers();
+ }
+
+ [Test]
+ public override void TestTempQueueHoldsMessagesWithoutConsumers()
+ {
+ base.TestTempQueueHoldsMessagesWithoutConsumers();
+ }
+
+ [Test]
+ public override void TestTmpQueueWorksUnderLoad()
+ {
+ base.TestTmpQueueWorksUnderLoad();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQTestSupport.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQTestSupport.cs b/src/test/csharp/MSMQTestSupport.cs
new file mode 100644
index 0000000..13725a8
--- /dev/null
+++ b/src/test/csharp/MSMQTestSupport.cs
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using System.Xml;
+using Apache.NMS.Test;
+using Apache.NMS.Util;
+using NUnit.Framework;
+
+using Apache.NMS.MSMQ;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ /// <summary>
+ /// Useful class for test cases support.
+ /// </summary>
+ public class MSMQTestSupport : NMSTestSupport
+ {
+ /// <summary>
+ /// Gets the environment variable name for the configuration file path.
+ /// </summary>
+ /// <returns>Environment variable name</returns>
+ public override string GetConfigEnvVarName()
+ {
+ return "MSMQTESTCONFIGPATH";
+ }
+
+ /// <summary>
+ /// Gets the default name for the configuration filename.
+ /// </summary>
+ /// <returns>Default name of the configuration filename</returns>
+ public override string GetDefaultConfigFileName()
+ {
+ return "msmqprovider-test.config";
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQTextMessageTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQTextMessageTest.cs b/src/test/csharp/MSMQTextMessageTest.cs
new file mode 100644
index 0000000..dfbd061
--- /dev/null
+++ b/src/test/csharp/MSMQTextMessageTest.cs
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ public class MSMQTextMessageTest : TextMessageTest
+ {
+ protected static string DEFAULT_TEST_QUEUE = "defaultTestQueue";
+
+ public MSMQTextMessageTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+ [Test]
+ public void TestSendReceiveTextMessage(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestSendReceiveTextMessage(deliveryMode, DEFAULT_TEST_QUEUE);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQTransactionTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQTransactionTest.cs b/src/test/csharp/MSMQTransactionTest.cs
new file mode 100644
index 0000000..c269d0c
--- /dev/null
+++ b/src/test/csharp/MSMQTransactionTest.cs
@@ -0,0 +1,115 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ public class MSMQTransactionTest : TransactionTest
+ {
+ protected static string TRANSACTION_TEST_QUEUE = "transactionTestQueue";
+
+ public MSMQTransactionTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+ [Test]
+ public void TestSendRollback(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestSendRollback(deliveryMode, TRANSACTION_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestSendSessionClose(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestSendSessionClose(deliveryMode, TRANSACTION_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestReceiveRollback(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestReceiveRollback(deliveryMode, TRANSACTION_TEST_QUEUE);
+ }
+
+
+ [Test]
+ public void TestReceiveTwoThenRollback(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestReceiveTwoThenRollback(deliveryMode, TRANSACTION_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestSendCommitNonTransaction(
+ [Values(AcknowledgementMode.AutoAcknowledge, AcknowledgementMode.ClientAcknowledge)]
+ AcknowledgementMode ackMode,
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestSendCommitNonTransaction(ackMode, deliveryMode, TRANSACTION_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestReceiveCommitNonTransaction(
+ [Values(AcknowledgementMode.AutoAcknowledge, AcknowledgementMode.ClientAcknowledge)]
+ AcknowledgementMode ackMode,
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestReceiveCommitNonTransaction(ackMode, deliveryMode, TRANSACTION_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestReceiveRollbackNonTransaction(
+ [Values(AcknowledgementMode.AutoAcknowledge, AcknowledgementMode.ClientAcknowledge)]
+ AcknowledgementMode ackMode,
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestReceiveRollbackNonTransaction(ackMode, deliveryMode, TRANSACTION_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestRedispatchOfRolledbackTx(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestRedispatchOfRolledbackTx(deliveryMode, TRANSACTION_TEST_QUEUE);
+ }
+
+ [Test]
+ public void TestRedispatchOfUncommittedTx(
+ [Values(MsgDeliveryMode.Persistent, MsgDeliveryMode.NonPersistent)]
+ MsgDeliveryMode deliveryMode)
+ {
+ base.TestRedispatchOfUncommittedTx(deliveryMode, TRANSACTION_TEST_QUEUE);
+ }
+ }
+}
+
+
http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/7274a80a/src/test/csharp/MSMQXmlMessageTest.cs
----------------------------------------------------------------------
diff --git a/src/test/csharp/MSMQXmlMessageTest.cs b/src/test/csharp/MSMQXmlMessageTest.cs
new file mode 100644
index 0000000..757e1f9
--- /dev/null
+++ b/src/test/csharp/MSMQXmlMessageTest.cs
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using System;
+using Apache.NMS.Test;
+using NUnit.Framework;
+
+namespace Apache.NMS.MSMQ.Test
+{
+ [TestFixture]
+ public class MSMQXmlMessageTest : XmlMessageTest
+ {
+ protected static string DEFAULT_TEST_QUEUE = "defaultTestQueue";
+
+ public MSMQXmlMessageTest()
+ : base(new MSMQTestSupport())
+ {
+ }
+
+#if NET_3_5 || MONO
+
+ [Test]
+ public void TestSendReceiveXmlMessage_Net35()
+ {
+ base.TestSendReceiveXmlMessage_Net35(DEFAULT_TEST_QUEUE);
+ }
+
+#else
+
+ // Test the obsolete API versions until they are completely removed.
+ [Test]
+ public void SendReceiveXmlMessage()
+ {
+ base.TestSendReceiveXmlMessage(DEFAULT_TEST_QUEUE);
+ }
+
+#endif
+ }
+}