public void TestReadObjectAfterPartialReadBytesThrowsMFE()
        {
            NmsStreamMessage streamMessage = factory.CreateStreamMessage();

            byte[] bytes = { 4, 44, 99 };
            streamMessage.WriteBytes(bytes);

            streamMessage.Reset();

            // start reading via readBytes
            int partialLength = 2;

            byte[] retrievedByteArray = new byte[partialLength];
            int    readBytesLength    = streamMessage.ReadBytes(retrievedByteArray);

            Assert.AreEqual(partialLength, readBytesLength);
            CollectionAssert.AreEqual(bytes.Take(partialLength), retrievedByteArray, "Expected array subset to equal retrieved bytes");

            // check that using readObject does not return the full/remaining bytes as a new array

            Assert.Throws <MessageFormatException>(() => streamMessage.ReadObject());

            // finish reading via reaBytes to ensure it can be completed
            readBytesLength = streamMessage.ReadBytes(retrievedByteArray);
            Assert.AreEqual(bytes.Length - partialLength, readBytesLength);
            CollectionAssert.AreEqual(bytes.Skip(partialLength).Take(bytes.Length), retrievedByteArray.Take(readBytesLength), "Expected array subset to equal retrieved bytes");
        }
        public void TestNullStreamEntryResultsInExpectedBehaviour()
        {
            NmsStreamMessage streamMessage = factory.CreateStreamMessage();

            streamMessage.WriteObject(null);
            streamMessage.Reset();

            // expect an NFE from the primitive integral, float, double, and char <type>.valueOf(null) conversions
            AssertGetStreamEntryThrowsNullReferenceException <byte>(streamMessage);
            AssertGetStreamEntryThrowsNullReferenceException <short>(streamMessage);
            AssertGetStreamEntryThrowsNullReferenceException <int>(streamMessage);
            AssertGetStreamEntryThrowsNullReferenceException <long>(streamMessage);
            AssertGetStreamEntryThrowsNullReferenceException <float>(streamMessage);
            AssertGetStreamEntryThrowsNullReferenceException <double>(streamMessage);
            AssertGetStreamEntryThrowsNullReferenceException <char>(streamMessage);

            // expect null
            Assert.Null(streamMessage.ReadObject());
            streamMessage.Reset(); // need to reset as read was a success
            Assert.Null(streamMessage.ReadString());
            streamMessage.Reset(); // need to reset as read was a success

            // expect completion value.
            Assert.AreEqual(-1, streamMessage.ReadBytes(new byte[1]));
            streamMessage.Reset(); // need to reset as read was a success

            // expect false
            Assert.False(streamMessage.ReadBoolean());
        }
        public void TestReadObjectGetsInvalidObjectThrowsMFE()
        {
            NmsTestStreamMessageFacade facade = new NmsTestStreamMessageFacade();

            facade.Put(new Uri("test://test"));
            NmsStreamMessage streamMessage = new NmsStreamMessage(facade);

            streamMessage.Reset();

            Assert.Throws <MessageFormatException>(() => streamMessage.ReadObject());
        }
        public void TestClearBodyAppliesCorrectState()
        {
            NmsStreamMessage streamMessage = factory.CreateStreamMessage();

            streamMessage.WriteObject(2);
            streamMessage.ClearBody();
            Assert.False(streamMessage.IsReadOnlyBody);
            streamMessage.WriteObject(2);

            Assert.Throws <MessageNotReadableException>(() => streamMessage.ReadObject());
        }
        public void TestReadObjectForBytesReturnsNewArray()
        {
            NmsStreamMessage streamMessage = factory.CreateStreamMessage();

            byte[] bytes = { 11, 44, 99 };
            streamMessage.WriteBytes(bytes);

            streamMessage.Reset();

            byte[] retrievedBytes = (byte[])streamMessage.ReadObject();

            Assert.AreNotSame(bytes, retrievedBytes, "Expected different array objects");
            CollectionAssert.AreEqual(bytes, retrievedBytes, "Expected arrays to be equal");
        }
        public void TestWriteBytesWithOffsetAndLength()
        {
            NmsStreamMessage streamMessage = factory.CreateStreamMessage();

            byte[] orig = Encoding.ASCII.GetBytes("myBytesAll");

            // extract the segment containing 'Bytes'
            int offset = 2;
            int length = 5;

            byte[] segment = orig.Skip(offset).Take(length).ToArray();

            // set the same section from the original bytes
            streamMessage.WriteBytes(orig, offset, length);
            streamMessage.Reset();

            byte[] retrieved = (byte[])streamMessage.ReadObject();

            // verify the retrieved bytes from the stream equal the segment but are not the same
            Assert.AreNotSame(orig, retrieved);
            Assert.AreNotSame(segment, retrieved);
            CollectionAssert.AreEqual(segment, retrieved);
        }
        public void TestWriteReadObject()
        {
            NmsStreamMessage streamMessage = factory.CreateStreamMessage();

            Object nullEntryValue   = null;
            bool   boolEntryValue   = false;
            byte   byteEntryValue   = 1;
            short  shortEntryValue  = 2;
            int    intEntryValue    = 3;
            long   longEntryValue   = 4;
            float  floatEntryValue  = 5.01f;
            double doubleEntryValue = 6.01d;
            string stringEntryValue = "string";
            char   charEntryValue   = 'c';

            byte[] bytes = { 1, 170, 65 };

            streamMessage.WriteObject(nullEntryValue);
            streamMessage.WriteObject(boolEntryValue);
            streamMessage.WriteObject(byteEntryValue);
            streamMessage.WriteObject(shortEntryValue);
            streamMessage.WriteObject(intEntryValue);
            streamMessage.WriteObject(longEntryValue);
            streamMessage.WriteObject(floatEntryValue);
            streamMessage.WriteObject(doubleEntryValue);
            streamMessage.WriteObject(stringEntryValue);
            streamMessage.WriteObject(charEntryValue);
            streamMessage.WriteObject(bytes);

            streamMessage.Reset();

            Assert.AreEqual(nullEntryValue, streamMessage.ReadObject(), "Got unexpected value from stream");
            Assert.AreEqual(boolEntryValue, streamMessage.ReadObject(), "Got unexpected value from stream");
            Assert.AreEqual(byteEntryValue, streamMessage.ReadObject(), "Got unexpected value from stream");
            Assert.AreEqual(shortEntryValue, streamMessage.ReadObject(), "Got unexpected value from stream");
            Assert.AreEqual(intEntryValue, streamMessage.ReadObject(), "Got unexpected value from stream");
            Assert.AreEqual(longEntryValue, streamMessage.ReadObject(), "Got unexpected value from stream");
            Assert.AreEqual(floatEntryValue, streamMessage.ReadObject(), "Got unexpected value from stream");
            Assert.AreEqual(doubleEntryValue, streamMessage.ReadObject(), "Got unexpected value from stream");
            Assert.AreEqual(stringEntryValue, streamMessage.ReadObject(), "Got unexpected value from stream");
            Assert.AreEqual(charEntryValue, streamMessage.ReadObject(), "Got unexpected value from stream");
            CollectionAssert.AreEqual(bytes, (byte[])streamMessage.ReadObject(), "Got unexpected value from stream");
        }
Ejemplo n.º 8
0
 public object ReadObject()
 {
     return(message.ReadObject());
 }