(t *testing.T, code []byte, origin [2][]Value, expected [2][]Value)
| 126 | } |
| 127 | |
| 128 | func checkAltStackOpCodeNew(t *testing.T, code []byte, origin [2][]Value, expected [2][]Value) { |
| 129 | executor := NewExecutor(code, VmFeatureFlag{}) |
| 130 | for _, val := range origin[0] { |
| 131 | err := executor.EvalStack.Push(newVmValue(t, val)) |
| 132 | assert.Nil(t, err) |
| 133 | } |
| 134 | for _, val := range origin[1] { |
| 135 | err := executor.AltStack.Push(newVmValue(t, val)) |
| 136 | assert.Nil(t, err) |
| 137 | } |
| 138 | err := executor.Execute() |
| 139 | assert.Nil(t, err) |
| 140 | assert.Equal(t, len(expected[0]), executor.EvalStack.Count()) |
| 141 | assert.Equal(t, len(expected[1]), executor.AltStack.Count()) |
| 142 | |
| 143 | stacks := [2]*ValueStack{executor.EvalStack, executor.AltStack} |
| 144 | for s, stack := range stacks { |
| 145 | expect := expected[s] |
| 146 | for i := 0; i < len(expect); i++ { |
| 147 | val := expect[len(expect)-i-1] |
| 148 | res, _ := stack.Pop() |
| 149 | exp := newVmValue(t, val) |
| 150 | assertEqual(t, res, exp) |
| 151 | } |
| 152 | } |
| 153 | } |
| 154 | |
| 155 | func TestAltStackOpCode(t *testing.T) { |
| 156 | checkAltStackOpCode(t, DUPFROMALTSTACK, [2][]Value{ |
no test coverage detected