using System; using System.Collections.Generic; using System.Text; using UnitTestSharp; using Sunweaver.Commands.Abstracts; using Sunweaver.Commands; using Sunweaver.VM; namespace Sunweaver.UnitTesting.Commands { public class mulTests : TestFixture { BasePair bp = new mul(); VirtualMachine VM; public override void TestSetup() { VM = new VirtualMachine(); } public void MultsCorrectly() { VM.Stack.Push(25); VM.Stack.Push(30); bp.Implementation(VM); CheckEqual(750, VM.Stack.Pop()); } public void NameTest() { CheckEqual("mul", bp.ToString()); } /// /// Try to weird out the mult operator. This will fail if theirs any loss of bit precision /// public void Overflow_NP() { //18 nines VM.Stack.Push(IntStack.Min); VM.Stack.Push(IntStack.Max); bp.Implementation(VM); CheckEqual(-1, VM.Stack.Pop()); } public void Overflow_PN() { //18 nines VM.Stack.Push(IntStack.Max); VM.Stack.Push(IntStack.Min); bp.Implementation(VM); CheckEqual(-1, VM.Stack.Pop()); } public void Overflow_NN() { //18 nines VM.Stack.Push(IntStack.Min); VM.Stack.Push(IntStack.Min); bp.Implementation(VM); CheckEqual(1, VM.Stack.Pop()); } public void Overflow_PP() { //18 nines VM.Stack.Push(IntStack.Max); VM.Stack.Push(IntStack.Max); bp.Implementation(VM); CheckEqual(1, VM.Stack.Pop()); } } }