blob: ad9ce08ba07ed342026e10c8f2a6197dc46cfabf [file] [log] [blame]
/*
* 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);
}
}
}