public void SquareNumberInCpu32ShouldOutputErrorMessageWhenValueIsGreaterThanMaxValue()
 {
     var cpu = new Cpu32(4);
     var motherboardMock = new Mock<IMotherboard>();
     motherboardMock.Setup(x => x.LoadRamValue()).Returns(Cpu32.MaxValue + 1);
     cpu.AttachTo(motherboardMock.Object);
     cpu.SquareNumber();
     motherboardMock.Verify(x => x.DrawOnVideoCard(It.Is<string>(z => z == Cpu.NumberTooHighMessage)));
 }
 public void SquareNumberShouldOutputCorrectValues()
 {
     var cpu = new Cpu32(4);
     var motherboardMock = new Mock<IMotherboard>();
     motherboardMock.Setup(x => x.LoadRamValue()).Returns(123);
     cpu.AttachTo(motherboardMock.Object);
     cpu.SquareNumber();
     motherboardMock.Verify(x => x.DrawOnVideoCard(It.Is<string>(z => z.Contains("15129"))));
 }
        public void RandShouldAlwaysReturnRandomNumbers()
        {
            var hashSet = new HashSet<int>();
            var cpu = new Cpu32(2);
            var motherboardMock = new Mock<IMotherboard>();
            cpu.AttachTo(motherboardMock.Object);
            motherboardMock.Setup(x => x.SaveRamValue(It.IsAny<int>()))
                .Callback<int>(z => hashSet.Add(z));
            for (int i = 0; i < 10000; i++)
            {
                cpu.Rand(1, 10);
            }

            Assert.AreEqual(10, hashSet.Count);
        }
        public void RandShouldNotProduceNumbersGreaterThanMaxValue()
        {
            var cpu = new Cpu32(2);
            var motherboardMock = new Mock<IMotherboard>();
            cpu.AttachTo(motherboardMock.Object);
            var globalMax = int.MinValue;
            motherboardMock.Setup(x => x.SaveRamValue(It.IsAny<int>()))
                .Callback<int>(z => globalMax = Math.Max(globalMax, z));
            for (int i = 0; i < 10000; i++)
            {
                cpu.Rand(1, 10);
            }

            Assert.AreEqual(10, globalMax);
        }