diff --git a/src/NTH/NTH.Tests/BitUtilTests.cs b/src/NTH/NTH.Tests/BitUtilTests.cs new file mode 100644 index 0000000..3566180 --- /dev/null +++ b/src/NTH/NTH.Tests/BitUtilTests.cs @@ -0,0 +1,61 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace NTH.Tests +{ + [TestClass] + public class BitUtilTests + { + [TestMethod] + public void HiWord() + { + const int value = 0x12345678; + const short expectedValue = 0x1234; + + int expected = value >> 16; // high = 0x1234 + int actual = BitUtil.HighWord(value); + + Assert.AreEqual(expected, expectedValue); + Assert.AreEqual(expected, actual); + } + + [TestMethod] + public void LoWord() + { + const int value = 0x12345678; + const short expectedValue = 0x5678; + + int expected = value & 0xFFFF; // low = 0x5678 + int actual = BitUtil.LowWord(value); + + Assert.AreEqual(expected, expectedValue); + Assert.AreEqual(expected, actual); + } + + + [TestMethod] + public void LoByte() + { + const short value = 0x1234; + const byte expectedValue = 0x34; + + int expected = value & 0xFF; // low = 0x34 + int actual = BitUtil.LowByte(value); + + Assert.AreEqual(expected, expectedValue); + Assert.AreEqual(expected, actual); + } + + [TestMethod] + public void HiByte() + { + const short value = 0x1234; + const byte expectedValue = 0x12; + + int expected = value >> 8; // low = 0x12 + int actual = BitUtil.HighByte(value); + + Assert.AreEqual(expected, expectedValue); + Assert.AreEqual(expected, actual); + } + } +} diff --git a/src/NTH/NTH.Tests/NTH.Tests.csproj b/src/NTH/NTH.Tests/NTH.Tests.csproj index 33d367c..5b5dd07 100644 --- a/src/NTH/NTH.Tests/NTH.Tests.csproj +++ b/src/NTH/NTH.Tests/NTH.Tests.csproj @@ -69,6 +69,7 @@ + diff --git a/src/NTH/NTH/BitUtil.cs b/src/NTH/NTH/BitUtil.cs new file mode 100644 index 0000000..15a343a --- /dev/null +++ b/src/NTH/NTH/BitUtil.cs @@ -0,0 +1,24 @@ + +namespace NTH +{ + public class BitUtil + { + public static short HighWord(int dword) + { + return (short)(dword >> 16); + } + public static short LowWord(int dword) + { + return (short)(dword & 0x0000FFFF); + } + + public static byte HighByte(short word) + { + return (byte)(word >> 8); + } + public static byte LowByte(short word) + { + return (byte)(word & 0x00FF); + } + } +} diff --git a/src/NTH/NTH/NTH-40-client.csproj b/src/NTH/NTH/NTH-40-client.csproj index 2cda0f1..9d0d944 100644 --- a/src/NTH/NTH/NTH-40-client.csproj +++ b/src/NTH/NTH/NTH-40-client.csproj @@ -62,6 +62,7 @@ + diff --git a/src/NTH/NTH/NTH.csproj b/src/NTH/NTH/NTH.csproj index e36581f..2ee7a58 100644 --- a/src/NTH/NTH/NTH.csproj +++ b/src/NTH/NTH/NTH.csproj @@ -64,6 +64,7 @@ +