// // Copyright (c) Adrian Conlon. All rights reserved. // namespace EightBit { using Microsoft.VisualStudio.TestTools.UnitTesting; [TestClass] public class ChipUnitTest { [TestMethod] public void TestLowByte() { const ushort input = 0xf00f; var low = Chip.LowByte(input); Assert.AreEqual(0xf, low); } [TestMethod] public void TestHighByte() { const ushort input = 0xf00f; var high = Chip.HighByte(input); Assert.AreEqual(0xf0, high); } [TestMethod] public void TestClearBit() { byte flags = 0xff; flags = Chip.ClearBit(flags, 0x80); Assert.AreEqual(0x7f, flags); } [TestMethod] public void TestClearBitNonZero() { byte flags = 0xff; flags = Chip.ClearBit(flags, 0x80, 1); Assert.AreEqual(0x7f, flags); } [TestMethod] public void TestClearBitZero() { byte flags = 0xff; flags = Chip.ClearBit(flags, 0x80, 0); Assert.AreEqual(0xff, flags); } [TestMethod] public void TestClearBitFalse() { byte flags = 0xff; flags = Chip.ClearBit(flags, 0x80, false); Assert.AreEqual(0xff, flags); } [TestMethod] public void TestClearBitTrue() { byte flags = 0xff; flags = Chip.ClearBit(flags, 0x80, true); Assert.AreEqual(0x7f, flags); } [TestMethod] public void TestSetBit() { byte flags = 0x7f; flags = Chip.SetBit(flags, 0x80); Assert.AreEqual(0xff, flags); } [TestMethod] public void TestSetBitNonZero() { byte flags = 0x7f; flags = Chip.SetBit(flags, 0x80, 1); Assert.AreEqual(0xff, flags); } [TestMethod] public void TestSetBitZero() { byte flags = 0x7f; flags = Chip.SetBit(flags, 0x80, 0); Assert.AreEqual(0x7f, flags); } [TestMethod] public void TestSetBitFalse() { byte flags = 0x7f; flags = Chip.SetBit(flags, 0x80, false); Assert.AreEqual(0x7f, flags); } [TestMethod] public void TestSetBitTrue() { byte flags = 0x7f; flags = Chip.SetBit(flags, 0x80, true); Assert.AreEqual(0xff, flags); } [TestMethod] public void TestLowerPart() { const ushort input = 0xf00f; ushort lower = Chip.LowerPart(input); Assert.AreEqual(0xf, lower); } [TestMethod] public void TestHigherPart() { const ushort input = 0xf00f; var higher = Chip.HigherPart(input); Assert.AreEqual(0xf000, higher); } [TestMethod] public void TestDemoteByte() { const ushort input = 0xf00f; var demoted = Chip.DemoteByte(input); Assert.AreEqual(0xf0, demoted); } [TestMethod] public void TestPromoteByte() { const byte input = 0xf0; var promoted = Chip.PromoteByte(input); Assert.AreEqual(0xf000, promoted); } [TestMethod] public void TestLowNibble() { const byte input = 0xab; var nibble = Chip.LowNibble(input); Assert.AreEqual(0xb, nibble); } [TestMethod] public void TestHighNibble() { const byte input = 0xab; var nibble = Chip.HighNibble(input); Assert.AreEqual(0xa, nibble); } [TestMethod] public void TestDemoteNibble() { const byte input = 0xab; var nibble = Chip.DemoteNibble(input); Assert.AreEqual(0xa, nibble); } [TestMethod] public void TestPromoteNibble() { const byte input = 0xab; var nibble = Chip.PromoteNibble(input); Assert.AreEqual(0xb0, nibble); } [TestMethod] public void TestHigherNibble() { const byte input = 0xab; var nibble = Chip.HigherNibble(input); Assert.AreEqual(0xa0, nibble); } [TestMethod] public void TestLowerNibble() { const byte input = 0xab; var nibble = Chip.LowerNibble(input); Assert.AreEqual(0xb, nibble); } [TestMethod] public void TestMakeWord() { var word = Chip.MakeWord(0xcd, 0xab); Assert.AreEqual(0xabcd, word); } [TestMethod] public void TestFindFirstSet_1() { var position = Chip.FindFirstSet(12); Assert.AreEqual(3, position); } [TestMethod] public void TestFindFirstSet_2() { var position = Chip.FindFirstSet(1); Assert.AreEqual(1, position); } [TestMethod] public void TestFindFirstSet_3() { var position = Chip.FindFirstSet(128); Assert.AreEqual(8, position); } [TestMethod] public void TestFindFirstSet_4() { var position = Chip.FindFirstSet(0); Assert.AreEqual(0, position); } } }