public void TeeLocal_Compiled() { var exports = CompilerTestBase <int> .CreateInstance( new LocalGet(0), new LocalTee(0), new End()); Assert.AreEqual(3, exports.Test(3)); Assert.AreEqual(-1, exports.Test(-1)); }
public void Int32Add_Compiled() { var exports = CompilerTestBase <int> .CreateInstance( new LocalGet(0), new Int32Constant(1), new Int32Add(), new End()); Assert.AreEqual(1, exports.Test(0)); Assert.AreEqual(6, exports.Test(5)); }
public void Float32Subtract_Compiled() { var exports = CompilerTestBase <float> .CreateInstance( new LocalGet(0), new Float32Constant(1), new Float32Subtract(), new End()); Assert.AreEqual(-1, exports.Test(0)); Assert.AreEqual(4, exports.Test(5)); }
public void GetLocal_Compiled_Parameter_OutOfRange() { var exception = Assert.ThrowsException <ModuleLoadException>( () => CompilerTestBase <int> .CreateInstance( new Int32Constant(42), new LocalSet(1), new End() )); Assert.AreEqual("At offset 39: Attempt to set local at index 1 but only 1 local was defined.", exception.Message); }
public void Float64Subtract_Compiled() { var exports = CompilerTestBase <double> .CreateInstance( new GetLocal(0), new Float64Constant(1), new Float64Subtract(), new End()); Assert.AreEqual(-1, exports.Test(0)); Assert.AreEqual(4, exports.Test(5)); }
public void Int64Add_Compiled() { var exports = CompilerTestBase <long> .CreateInstance( new GetLocal(0), new Int64Constant(1), new Int64Add(), new End()); Assert.AreEqual(1, exports.Test(0)); Assert.AreEqual(6, exports.Test(5)); }
public void Float64Add_Compiled() { var exports = CompilerTestBase <double> .CreateInstance( new LocalGet(0), new Float64Constant(1), new Float64Add(), new End()); Assert.AreEqual(1, exports.Test(0)); Assert.AreEqual(6, exports.Test(5)); }
public void Float32Add_Compiled() { var exports = CompilerTestBase <float> .CreateInstance( new GetLocal(0), new Float32Constant(1), new Float32Add(), new End()); Assert.AreEqual(1, exports.Test(0)); Assert.AreEqual(6, exports.Test(5)); }
public void Float32Absolute_Compiled() { var exports = CompilerTestBase <float> .CreateInstance( new LocalGet(0), new Float32Absolute(), new End()); foreach (var value in new[] { 1f, -1f, -(float)Math.PI, (float)Math.PI }) { Assert.AreEqual(Math.Abs(value), exports.Test(value)); } }
public void Float32Negate_Compiled() { var exports = CompilerTestBase <float> .CreateInstance( new GetLocal(0), new Float32Negate(), new End()); foreach (var value in Samples.Single) { Assert.AreEqual(-value, exports.Test(value)); } }
public void Float64Nearest_Compiled() { var exports = CompilerTestBase <double> .CreateInstance( new GetLocal(0), new Float64Nearest(), new End()); foreach (var value in new[] { 1f, -1f, -Math.PI, Math.PI }) { Assert.AreEqual(Math.Round(value, MidpointRounding.ToEven), exports.Test(value)); } }
public void Float32SquareRoot_Compiled() { var exports = CompilerTestBase <float> .CreateInstance( new GetLocal(0), new Float32SquareRoot(), new End()); foreach (var value in Samples.Single) { Assert.AreEqual((float)Math.Sqrt(value), exports.Test(value)); } }
public void Float64Multiply_Compiled() { var exports = CompilerTestBase <double> .CreateInstance( new GetLocal(0), new Float64Constant(3), new Float64Multiply(), new End()); Assert.AreEqual(0, exports.Test(0)); Assert.AreEqual(9, exports.Test(3)); Assert.AreEqual(-6, exports.Test(-2)); }
public void Float32Divide_Compiled() { var exports = CompilerTestBase <float> .CreateInstance( new LocalGet(0), new Float32Constant(3), new Float32Divide(), new End()); Assert.AreEqual(0, exports.Test(0)); Assert.AreEqual(3, exports.Test(9)); Assert.AreEqual(-2, exports.Test(-6)); }
public void Float32Nearest_Compiled() { var exports = CompilerTestBase <float> .CreateInstance( new GetLocal(0), new Float32Nearest(), new End()); foreach (var value in Samples.Single) { Assert.AreEqual((float)Math.Round(value, MidpointRounding.ToEven), exports.Test(value)); } }
public void Float32Truncate_Compiled() { var exports = CompilerTestBase <float> .CreateInstance( new LocalGet(0), new Float32Truncate(), new End()); foreach (var value in Samples.Single) { Assert.AreEqual((float)Math.Truncate(value), exports.Test(value)); } }
public void Float64Negate_Compiled() { var exports = CompilerTestBase <double> .CreateInstance( new LocalGet(0), new Float64Negate(), new End()); foreach (var value in Samples.Double) { Assert.AreEqual(-value, exports.Test(value)); } }
public void Float64Floor_Compiled() { var exports = CompilerTestBase <double> .CreateInstance( new LocalGet(0), new Float64Floor(), new End()); foreach (var value in new[] { 1f, -1f, -Math.PI, Math.PI }) { Assert.AreEqual(Math.Floor(value), exports.Test(value)); } }
public void Int32EqualZero_Compiled() { var exports = CompilerTestBase <int> .CreateInstance( new GetLocal(0), new Int32EqualZero(), new End()); foreach (var value in Samples.Int32) { Assert.AreEqual(value == 0, exports.Test(value) != 0); } }
public void Int32ShiftLeft_Compiled() { const int amount = 0xF; var exports = CompilerTestBase<int>.CreateInstance( new GetLocal(0), new Int32Constant(amount), new Int32ShiftLeft(), new End()); foreach (var value in new[] { 0x00, 0x01, 0x02, 0x0F, 0xF0, 0xFF, }) Assert.AreEqual(value << amount, exports.Test(value)); }
public void If_Compiled() { var exports = CompilerTestBase <int> .CreateInstance( new LocalGet(0), new If(), new Int32Constant(3), new Return(), new End(), new Int32Constant(2), new End()); Assert.AreEqual(2, exports.Test(0)); Assert.AreEqual(3, exports.Test(1)); }
public void Int32ShiftRightSigned_Compiled() { const int amount = 0xF; var exports = CompilerTestBase <int> .CreateInstance( new LocalGet(0), new Int32Constant(amount), new Int32ShiftRightSigned(), new End()); foreach (var value in new[] { 0x00, 0x0F, 0xF0, 0xFF, }) { Assert.AreEqual(value >> amount, exports.Test(value)); } }
public void BranchIf_Compiled() { var exports = CompilerTestBase <int> .CreateInstance( new Block(BlockType.Empty), new LocalGet(0), new BranchIf(0), new Int32Constant(2), new Return(), new End(), new Int32Constant(1), new End()); Assert.AreEqual(2, exports.Test(0)); Assert.AreEqual(1, exports.Test(1)); }
public void Int32Or_Compiled() { const int comparand = 0xF; var exports = CompilerTestBase <int> .CreateInstance( new GetLocal(0), new Int32Constant(comparand), new Int32Or(), new End()); foreach (var value in new[] { 0x00, 0x0F, 0xF0, 0xFF, }) { Assert.AreEqual(value | comparand, exports.Test(value)); } }
public void Int32RemainderSigned_Compiled() { const int divisor = 0xF; var exports = CompilerTestBase <int> .CreateInstance( new GetLocal(0), new Int32Constant(divisor), new Int32RemainderSigned(), new End()); foreach (var value in new[] { 0x00, 0x0F, 0xF0, 0xFF, }) { Assert.AreEqual(value % divisor, exports.Test(value)); } }
public void Int64DivideSigned_Compiled() { const int divisor = 2; var exports = CompilerTestBase <long> .CreateInstance( new GetLocal(0), new Int64Constant(divisor), new Int64DivideSigned(), new End()); foreach (var value in new long[] { 0, 1, 2, 3, 4, 5, }) { Assert.AreEqual(value / divisor, exports.Test(value)); } }
public void Int32DivideUnsigned_Compiled() { const uint divisor = 2; var exports = CompilerTestBase <int> .CreateInstance( new LocalGet(0), new Int32Constant(divisor), new Int32DivideUnsigned(), new End()); foreach (var value in new uint[] { 0, 1, 2, 3, 4, 5, }) { Assert.AreEqual(value / divisor, (uint)exports.Test((int)value)); } }
public void Int64ExclusiveOr_Compiled() { const int or = 0xF; var exports = CompilerTestBase <long> .CreateInstance( new GetLocal(0), new Int64Constant(or), new Int64ExclusiveOr(), new End()); foreach (var value in new long[] { 0x00, 0x0F, 0xF0, 0xFF, }) { Assert.AreEqual(value ^ or, exports.Test(value)); } }
public void Int64Subtract_Compiled() { const int comparand = 0x8; var exports = CompilerTestBase <long> .CreateInstance( new LocalGet(0), new Int64Constant(comparand), new Int64Subtract(), new End()); foreach (var value in new long[] { 0x00, 0x0F, 0xF0, 0xFF, }) { Assert.AreEqual(value - comparand, exports.Test(value)); } }
public void Int64And_Compiled() { const int and = 0xF; var exports = CompilerTestBase <long> .CreateInstance( new GetLocal(0), new Int64Constant(and), new Int64And(), new End()); foreach (var value in new long[] { 0x00, 0x0F, 0xF0, 0xFF, }) { Assert.AreEqual(value & and, exports.Test(value)); } }