public void PopVector() { InterpreterStack stack = new InterpreterStack(); float value; stack.Init(10); try { value = stack.PopVector(); Assert.Fail(); } catch (IndexOutOfRangeException) { } stack.Push(1 * 0x4000); try { value = stack.PopVector(); Assert.Fail(); } catch (IndexOutOfRangeException) { } Assert.AreEqual(1, stack.Depth); stack.Push(1 * 0x4000); value = stack.PopVector(); Assert.AreEqual(0, stack.Depth); Assert.AreEqual((float)(Math.PI / 4), value); stack.Push(1 * 0x4000); stack.Push(-1 * 0x4000); value = stack.PopVector(); Assert.AreEqual((float)(-Math.PI / 4), value); }
public void Sub() { InterpreterStack stack = new InterpreterStack(); int value; stack.Init(10); try { stack.Sub(); Assert.Fail(); } catch (IndexOutOfRangeException) { } stack.Push(1); try { stack.Sub(); Assert.Fail(); } catch (IndexOutOfRangeException) { } stack.Push(12); stack.Push(123); stack.Push(1234); Assert.AreEqual(4, stack.Depth); stack.Sub(); Assert.AreEqual(3, stack.Depth); value = stack.Pop(); Assert.AreEqual(123 - 1234, value); value = stack.Pop(); Assert.AreEqual(12, value); value = stack.Pop(); Assert.AreEqual(1, value); Assert.AreEqual(0, stack.Depth); }
public void Even() { InterpreterStack stack = new InterpreterStack(); int value; stack.Init(10); try { stack.Even(RoundState.Off); Assert.Fail(); } catch (IndexOutOfRangeException) { } Assert.AreEqual(0, stack.Depth); stack.Push(1 * 64); stack.Even(RoundState.Off); value = stack.Pop(); Assert.AreEqual(0, value); stack.Push(2 * 64); stack.Even(RoundState.Off); value = stack.Pop(); Assert.AreEqual(1, value); stack.Push(1 * 32); stack.Even(RoundState.Off); value = stack.Pop(); Assert.AreEqual(1, value); // TODO: add another roundState test }
public void Push() { InterpreterStack stack = new InterpreterStack(); int value; stack.Init(1); stack.Push((byte)10); value = stack.Pop(); Assert.AreEqual(10, value); stack.Push((ushort)15); value = stack.Pop(); Assert.AreEqual(15, value); stack.Push(20); value = stack.Pop(); Assert.AreEqual(20, value); stack.Push(true); value = stack.Pop(); Assert.AreEqual(1, value); stack.Push(false); value = stack.Pop(); Assert.AreEqual(0, value); stack.Push((ushort)0xFFFF); value = stack.Pop(); Assert.AreEqual(-1, value); stack.Push(1); try { stack.Push(1); Assert.Fail(); } catch (IndexOutOfRangeException) { } }
public void Floor() { InterpreterStack stack = new InterpreterStack(); int value; stack.Init(10); try { stack.Floor(); Assert.Fail(); } catch (IndexOutOfRangeException) { } Assert.AreEqual(0, stack.Depth); stack.Push(1); stack.Floor(); value = stack.Pop(); Assert.AreEqual(0, value); stack.Push(0); stack.Floor(); value = stack.Pop(); Assert.AreEqual(0, value); stack.Push(3 << 5); stack.Floor(); value = stack.Pop(); Assert.AreEqual(1 << 6, value); stack.Push(0x7F); stack.Floor(); value = stack.Pop(); Assert.AreEqual(1 << 6, value); stack.Push(0xFF); stack.Floor(); value = stack.Pop(); Assert.AreEqual(3 << 6, value); }
public void Neg() { InterpreterStack stack = new InterpreterStack(); int value; stack.Init(10); try { stack.Neg(); Assert.Fail(); } catch (IndexOutOfRangeException) { } stack.Push(1); Assert.AreEqual(1, stack.Depth); stack.Neg(); Assert.AreEqual(1, stack.Depth); value = stack.Pop(); Assert.AreEqual(-1, value); stack.Push(-1); stack.Neg(); value = stack.Pop(); Assert.AreEqual(1, value); stack.Push(0); stack.Neg(); value = stack.Pop(); Assert.AreEqual(0, value); }
public void Reset() { InterpreterStack stack = new InterpreterStack(); stack.Init(10); Assert.AreEqual(0, stack.Depth); stack.Push(1); Assert.AreEqual(1, stack.Depth); stack.Reset(); Assert.AreEqual(0, stack.Depth); Assert.AreEqual(10, stack.Length); try { stack.Pop(); Assert.Fail(); } catch (IndexOutOfRangeException) { } }
public void PushDepth() { InterpreterStack stack = new InterpreterStack(); int value; stack.Init(10); stack.PushDepth(); Assert.AreEqual(1, stack.Depth); stack.Push(12); stack.PushDepth(); Assert.AreEqual(3, stack.Depth); value = stack.Pop(); Assert.AreEqual(2, value); value = stack.Pop(); Assert.AreEqual(12, value); value = stack.Pop(); Assert.AreEqual(0, value); }
public void PushBytes() { InterpreterStack stack = new InterpreterStack(); InterpreterStream stream = new InterpreterStream(); stream.Push(new byte[] { 1, 2, 3, 4, 5 }); int value; stack.Init(10); stack.PushBytes(stream, 3); Assert.AreEqual(3, stack.Depth); value = stack.Pop(); Assert.AreEqual(3, value); value = stack.Pop(); Assert.AreEqual(2, value); value = stack.Pop(); Assert.AreEqual(1, value); Assert.AreEqual(0, stack.Depth); }
public void Swap() { InterpreterStack stack = new InterpreterStack(); int value; stack.Init(10); stack.Push(12); stack.Push(123); stack.Push(1234); Assert.AreEqual(3, stack.Depth); stack.Swap(); Assert.AreEqual(3, stack.Depth); value = stack.Pop(); Assert.AreEqual(123, value); value = stack.Pop(); Assert.AreEqual(1234, value); value = stack.Pop(); Assert.AreEqual(12, value); }
public void PopF26Dot6() { InterpreterStack stack = new InterpreterStack(); float value; stack.Init(10); try { value = stack.PopF26Dot6(); Assert.Fail(); } catch (IndexOutOfRangeException) { } Assert.AreEqual(0, stack.Depth); stack.Push(0x40); value = stack.PopF26Dot6(); Assert.AreEqual(1, value); Assert.AreEqual(0, stack.Depth); stack.Push(0x70); value = stack.PopF26Dot6(); Assert.AreEqual(1.75f, value); stack.Push(0xF0); value = stack.PopF26Dot6(); Assert.AreEqual(3.75f, value); stack.Push(0xF8); value = stack.PopF26Dot6(); Assert.AreEqual(3.875f, value); stack.Push(0xFC); value = stack.PopF26Dot6(); Assert.AreEqual(3.9375f, value); stack.Push(0xFE); value = stack.PopF26Dot6(); Assert.AreEqual(3.96875f, value); stack.Push(0xFF); value = stack.PopF26Dot6(); Assert.AreEqual(3.984375f, value); try { value = stack.PopF26Dot6(); Assert.Fail(); } catch (IndexOutOfRangeException) { } Assert.AreEqual(0, stack.Depth); }
public void PushWords() { InterpreterStack stack = new InterpreterStack(); InterpreterStream stream = new InterpreterStream(); stream.Push(new byte[] { 0, 1, 0, 2, 3, 0, 0xFF, 0xFF }); int value; stack.Init(10); stack.PushWords(stream, 4); Assert.AreEqual(4, stack.Depth); value = stack.Pop(); Assert.AreEqual(-1, value); value = stack.Pop(); Assert.AreEqual(0x300, value); value = stack.Pop(); Assert.AreEqual(2, value); value = stack.Pop(); Assert.AreEqual(1, value); Assert.AreEqual(0, stack.Depth); }
public void PushVector() { InterpreterStack stack = new InterpreterStack(); int value; stack.Init(10); stack.PushVector(0); Assert.AreEqual(2, stack.Depth); value = stack.Pop(); Assert.AreEqual(0, value); value = stack.Pop(); Assert.AreEqual(0x4000, value); Assert.AreEqual(0, stack.Depth); stack.PushVector((float)(Math.PI / 2)); value = stack.Pop(); Assert.AreEqual(0x4000, value); value = stack.Pop(); Assert.AreEqual(0, value); stack.PushVector((float)(Math.PI)); value = stack.Pop(); Assert.AreEqual(0, value); value = stack.Pop(); Assert.AreEqual(-0x4000, value); stack.PushVector((float)(Math.PI * 1.5)); value = stack.Pop(); Assert.AreEqual(-0x4000, value); value = stack.Pop(); Assert.AreEqual(0, value); stack.PushVector((float)(Math.PI * 2)); value = stack.Pop(); Assert.AreEqual(0, value); value = stack.Pop(); Assert.AreEqual(0x4000, value); stack.PushVector((float)(Math.PI / 4)); value = stack.Pop(); Assert.AreEqual(0x2D41, value); value = stack.Pop(); Assert.AreEqual(0x2D41, value); }
public void MoveToTop() { InterpreterStack stack = new InterpreterStack(); int value; stack.Init(10); stack.Push(1); stack.Push(12); stack.Push(123); stack.Push(1234); Assert.AreEqual(4, stack.Depth); stack.MoveToTop(3); Assert.AreEqual(4, stack.Depth); value = stack.Pop(); Assert.AreEqual(12, value); value = stack.Pop(); Assert.AreEqual(1234, value); value = stack.Pop(); Assert.AreEqual(123, value); value = stack.Pop(); Assert.AreEqual(1, value); Assert.AreEqual(0, stack.Depth); }
public void Constructor() { InterpreterStack stack = new InterpreterStack(); }