/* * * 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.Qpid.Buffer; using Apache.Qpid.Framing; namespace Apache.Qpid.Framing.Tests { [TestFixture] public class TestAMQType { #region LONG_STRING tests [Test] public void LONG_STRING_ReadWrite() { AMQType type = AMQType.LONG_STRING; ByteBuffer buffer = ByteBuffer.Allocate(0x1000); const string VALUE = "simple string 1"; type.WriteToBuffer(VALUE, buffer); buffer.Flip(); buffer.Rewind(); AMQTypedValue value = AMQTypedValue.ReadFromBuffer(buffer); Assert.AreEqual(VALUE, value.Value); } #endregion // LONG_STRING tests #region UINT32 tests [Test] public void UINT32_CanGetEncodingSize() { AMQType type = AMQType.UINT32; Assert.AreEqual(4, type.GetEncodingSize(1234443)); } [Test] public void UINT32_ToNativeValue() { AMQType type = AMQType.UINT32; Assert.AreEqual(1, type.ToNativeValue(1)); Assert.AreEqual(1, type.ToNativeValue((short)1)); Assert.AreEqual(1, type.ToNativeValue((byte)1)); Assert.AreEqual(1, type.ToNativeValue("1")); try { Assert.AreEqual(1, type.ToNativeValue("adasdads")); Assert.Fail("Invalid format allowed"); } catch ( FormatException ) { } } [Test] public void UINT32_ReadWrite() { AMQType type = AMQType.UINT32; ByteBuffer buffer = ByteBuffer.Allocate(0x1000); const uint VALUE = 0xFFEEDDCC; type.WriteToBuffer(VALUE, buffer); buffer.Flip(); buffer.Rewind(); AMQTypedValue value = AMQTypedValue.ReadFromBuffer(buffer); Assert.AreEqual(VALUE, value.Value); } #endregion // UINT32 Tests #region VOID Tests [Test] public void VOID_CanGetEncodingSize() { AMQType type = AMQType.VOID; Assert.AreEqual(0, type.GetEncodingSize(null)); } [Test] public void VOID_ToNativeValue() { AMQType type = AMQType.VOID; Assert.IsNull(type.ToNativeValue(null)); try { type.ToNativeValue("asdasd"); Assert.Fail("converted invalid value"); } catch (FormatException) { } } [Test] public void VOID_ReadWrite() { AMQType type = AMQType.VOID; ByteBuffer buffer = ByteBuffer.Allocate(0x1000); type.WriteToBuffer(null, buffer); buffer.Flip(); buffer.Rewind(); AMQTypedValue value = AMQTypedValue.ReadFromBuffer(buffer); Assert.AreEqual(null, value.Value); } #endregion // VOID Tests #region BOOLEAN Tests [Test] public void BOOLEAN_CanGetEncodingSize() { AMQType type = AMQType.BOOLEAN; Assert.AreEqual(1, type.GetEncodingSize(true)); } [Test] public void BOOLEAN_ToNativeValue() { AMQType type = AMQType.BOOLEAN; Assert.AreEqual(true, type.ToNativeValue(true)); Assert.AreEqual(false, type.ToNativeValue("false")); try { type.ToNativeValue("asdasd"); Assert.Fail("converted invalid value"); } catch ( FormatException ) { } } [Test] public void BOOLEAN_ReadWrite() { AMQType type = AMQType.BOOLEAN; ByteBuffer buffer = ByteBuffer.Allocate(0x1000); type.WriteToBuffer(true, buffer); buffer.Flip(); buffer.Rewind(); AMQTypedValue value = AMQTypedValue.ReadFromBuffer(buffer); Assert.AreEqual(true, value.Value); } #endregion // BOOLEAN Tests #region INT16 tests [Test] public void INT16_ReadWrite() { AMQType type = AMQType.INT16; ByteBuffer buffer = ByteBuffer.Allocate(0x1000); const short VALUE = -32765; type.WriteToBuffer(VALUE, buffer); buffer.Flip(); buffer.Rewind(); AMQTypedValue value = AMQTypedValue.ReadFromBuffer(buffer); Assert.AreEqual(VALUE, value.Value); } //public void UINT16_ReadWrite() //{ // AMQType type = AMQType.UINT16; // ByteBuffer buffer = ByteBuffer.Allocate(0x1000); // const ushort VALUE = 64321; // type.WriteToBuffer(VALUE, buffer); // buffer.Flip(); // buffer.Rewind(); // AMQTypedValue value = AMQTypedValue.ReadFromBuffer(buffer); // Assert.AreEqual(VALUE, value.Value); //} #endregion // INT16 Tests #region INT32 tests [Test] public void INT32_ReadWrite() { AMQType type = AMQType.INT32; ByteBuffer buffer = ByteBuffer.Allocate(0x1000); const int VALUE = -39273563; type.WriteToBuffer(VALUE, buffer); buffer.Flip(); buffer.Rewind(); AMQTypedValue value = AMQTypedValue.ReadFromBuffer(buffer); Assert.AreEqual(VALUE, value.Value); } #endregion // INT32 Tests #region INT64 tests [Test] public void INT64_ReadWrite() { AMQType type = AMQType.INT64; ByteBuffer buffer = ByteBuffer.Allocate(0x1000); const long VALUE = -(2^43+1233123); type.WriteToBuffer(VALUE, buffer); buffer.Flip(); buffer.Rewind(); AMQTypedValue value = AMQTypedValue.ReadFromBuffer(buffer); Assert.AreEqual(VALUE, value.Value); } [Test] public void UINT64_ReadWrite() { AMQType type = AMQType.UINT64; ByteBuffer buffer = ByteBuffer.Allocate(0x1000); const ulong VALUE = (2 ^ 61 + 1233123); type.WriteToBuffer(VALUE, buffer); buffer.Flip(); buffer.Rewind(); AMQTypedValue value = AMQTypedValue.ReadFromBuffer(buffer); Assert.AreEqual(VALUE, value.Value); } #endregion // INT64 Tests #region FLOAT tests [Test] public void FLOAT_ReadWrite() { AMQType type = AMQType.FLOAT; ByteBuffer buffer = ByteBuffer.Allocate(0x1000); const float VALUE = 1.2345000E-035f; type.WriteToBuffer(VALUE, buffer); buffer.Flip(); buffer.Rewind(); AMQTypedValue value = AMQTypedValue.ReadFromBuffer(buffer); Assert.AreEqual(VALUE, value.Value); } #endregion // FLOAT Tests #region DOUBLE tests [Test] public void DOUBLE_ReadWrite() { AMQType type = AMQType.DOUBLE; ByteBuffer buffer = ByteBuffer.Allocate(0x1000); const double VALUE = 1.2345000E-045; type.WriteToBuffer(VALUE, buffer); buffer.Flip(); buffer.Rewind(); AMQTypedValue value = AMQTypedValue.ReadFromBuffer(buffer); Assert.AreEqual(VALUE, value.Value); } #endregion // FLOAT Tests } }