using System; using System.Collections.Generic; using System.Text; using UnitTestSharp; using DNAModule.Sunweaver.Commands.Abstracts; namespace DNAModule.Sunweaver.UnitTests.Commands.Abstracts { public class BinaryOperationTests : TestFixture { class BinaryOperationTester : BinaryOperation { public long A=0, B=0; public override void Operation(long a, long b) { A = a; B = b; } } public override void TestSetup() { VM = new DNAModule.Sunweaver.DataPrototypes.VirtualMachine(); } BinaryOperationTester bp = new BinaryOperationTester(); DNAModule.Sunweaver.DataPrototypes.VirtualMachine VM; public void DecreasesStackDepthBy2() { VM.Stack.Push(10); VM.Stack.Push(20); bp.Implementation(VM); CheckEqual(0, VM.Stack.Count()); } public void FizzlesWhenEmpty() { bp.A = 100; bp.B = 200; bp.Implementation(VM); CheckEqual(0, VM.Stack.Count()); CheckEqual((long)100, bp.A); CheckEqual((long)200, bp.B); } public void FizzlesWhenAlmostEmpty() { VM.Stack.Push(45); bp.A = 100; bp.B = 200; bp.Implementation(VM); CheckEqual(1, VM.Stack.Count()); CheckEqual(45, VM.Stack.Pop()); CheckEqual((long)100, bp.A); CheckEqual((long)200, bp.B); } public void PullsStackValuesInRightOrderAndCorrectly() { VM.Stack.Push(1); VM.Stack.Push(2); bp.Implementation(VM); CheckEqual((long)1, bp.A); CheckEqual((long)2, bp.B); } } }