rpn/test/040-stack.md
2022-02-18 17:43:07 +01:00

289 lines
2.6 KiB
Markdown

# STACK
`default del`
## entry depth (1)
`1 depth`
-> stack size should be 2
## entry depth (2)
`1 del depth`
-> stack should be 0
`del`
## swap
`1 2 swap`
-> stack size should be 2
-> stack should be 2, 1
`del`
## swap with filled stack
`5 6 1 2 swap`
-> stack size should be 4
-> stack should be 5, 6, 2, 1
`del`
## swap error
`5 swap`
-> stack size should be 1
-> error should be 2
`del`
## drop
`1 2 3 drop`
-> stack size should be 2
-> stack should be 1, 2
`del`
## drop2
`1 2 3 drop2`
-> stack size should be 1
-> stack should be 1
`del`
## drop error
`drop`
-> error should be 2
`del`
## drop2 error (1)
`drop2`
-> error should be 2
`del`
## drop2 error (2)
`1 drop2`
-> error should be 2
`del`
## test dup
`1 dup`
-> stack size should be 2
-> stack should be 1, 1
`del`
## test dup2
`1 2 dup2`
-> stack size should be 4
-> stack should be 1, 2, 1, 2
`del`
## test rot
`1 2 3 rot`
-> stack size should be 3
-> stack should be 2, 3, 1
`del`
## test rot 2
`5 6 7 rot rot`
-> stack should be 7, 5, 6
`del`
## test rot with filled stack
`5 6 1 2 3 rot`
-> stack size should be 5
-> stack should be 5, 6, 2, 3, 1
`del`
## test depth
`1 2 3`
`depth`
-> stack size should be 4
-> stack should be 1, 2, 3, 3
`del`
## test pick
`1 2 3 4 2 pick`
-> stack size should be 5
-> stack should be 1, 2, 3, 4, 3
`0 pick`
-> error should be 4
`7 pick`
-> error should be 4
`erase`
## test erase
-> stack size should be 0
`erase`
## test del
`1 2 3 4 5`
`del`
-> stack size should be 0
## test dropn
`1 2 2 dropn`
-> stack size should be 0
`del`
## test dropn error
`1 2 3 dropn`
-> stack size should be 3
-> error should be 2
`del`
## test dupn
`1 2 3 4 3 dupn`
-> stack should be 1, 2, 3, 4, 2, 3, 4
`del`
## test dupn error
`1 2 3 4 5 dupn`
-> stack size should be 4
-> error should be 2
`del`
## test roll
`1 2 3 4 5 4 roll`
-> stack should be 1, 3, 4, 5, 2
`del`
## test roll with filled stack
`10 11 1 2 3 4 5 4 roll`
-> stack should be 10, 11, 1, 3, 4, 5, 2
`del`
## test roll error
`1 2 3 4 5 6 roll`
-> stack size should be 5
-> error should be 2
`del`
## test rolld
`10 20 30 40 50 3 rolld`
-> stack should be 10, 20, 50, 30, 40
`del`
## test rolld with filled stack
`80 90 10 20 30 40 50 3 rolld`
-> stack should be 80, 90, 10, 20, 50, 30, 40
`del`
## test rolld error
`1 2 3 4 5 6 rolld`
-> stack size should be 5
-> error should be 2
`del`
## test over
`3.14 15.16 over`
-> stack should be 3.14, 15.16, 3.14
`del`
## test over error
`2 over`
-> stack size should be 1
-> error should be 2
`del`