You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
2.8 KiB

  1. import org.scalatest.funsuite.AnyFunSuite
  2. import nova.monadic_sfx.util.MutHistory
  3. import com.typesafe.scalalogging.LazyLogging
  4. class MutHistoryTest extends AnyFunSuite with LazyLogging {
  5. val h = new MutHistory(0)
  6. test("init") {
  7. assert(h.values == Vector(0))
  8. assert(h.sp == 0)
  9. assert(h.current == 0)
  10. }
  11. test("push 1") {
  12. h.push(1)
  13. // logger.debug(mutHistory.ints.toString)
  14. assert(h.values == Vector(0, 1))
  15. assert(h.values.length - 1 == h.sp)
  16. assert(h.current == 1)
  17. }
  18. test("push 2") {
  19. h.push(2)
  20. // logger.debug(mutHistory.ints.toString)
  21. assert(h.values == Vector(0, 1, 2))
  22. assert(h.values.length - 1 == h.sp)
  23. assert(h.current == 2)
  24. }
  25. test("first forward") {
  26. // logger.debug(mutHistory.ints.toString)
  27. // logger.debug(mutHistory.sp.toString)
  28. h.forward()
  29. assert(h.values == Vector(0, 1, 2))
  30. assert(h.sp == 2)
  31. assert(h.current == 2)
  32. }
  33. test("second forward") {
  34. // logger.debug(mutHistory.ints.toString)
  35. // logger.debug(mutHistory.sp.toString)
  36. h.forward()
  37. assert(h.values == Vector(0, 1, 2))
  38. assert(h.sp == 2)
  39. assert(h.current == 2)
  40. }
  41. test("first backward") {
  42. h.backward()
  43. assert(h.values == Vector(0, 1, 2))
  44. assert(h.sp == 1)
  45. assert(h.current == 1)
  46. }
  47. test("second backward") {
  48. h.backward()
  49. assert(h.values == Vector(0, 1, 2))
  50. assert(h.sp == 0)
  51. assert(h.current == 0)
  52. }
  53. test("third backward") {
  54. h.backward()
  55. assert(h.values == Vector(0, 1, 2))
  56. assert(h.sp == 0)
  57. assert(h.current == 0)
  58. }
  59. test("push 3") {
  60. h.push(3)
  61. assert(h.sp == 0)
  62. assert(h.values == Vector(3))
  63. assert(h.current == 3)
  64. }
  65. test("fourth backward") {
  66. h.backward()
  67. assert(h.values == Vector(3))
  68. assert(h.sp == 0)
  69. assert(h.current == 3)
  70. }
  71. test("lastly") {
  72. h.push(4)
  73. h.push(5)
  74. h.push(6)
  75. h.push(7)
  76. h.push(8)
  77. assert(h.values == Vector(3, 4, 5, 6, 7, 8))
  78. assert(h.sp == 5)
  79. assert(h.current == 8)
  80. h.backward()
  81. h.backward()
  82. assert(h.current == 6)
  83. assert(h.sp == 3)
  84. h.push(9)
  85. assert(h.values == Vector(3, 4, 5, 9))
  86. assert(h.sp == 3)
  87. assert(h.current == 9)
  88. for (i <- 1 to 4) h.backward()
  89. // assert(h.current == None)
  90. // assert(h.ints == Vector.empty)
  91. assert(h.sp == 0)
  92. assert(h.current == 3)
  93. h.push(1)
  94. assert(h.current == 1)
  95. assert(h.sp == 0)
  96. }
  97. }
  98. // test("main") {
  99. // assert(mutHistory.ints == Vector.empty)
  100. // assert(mutHistory.sp == -1)
  101. // mutHistory.push(1)
  102. // assert(mutHistory.ints == Vector(1))
  103. // assert(mutHistory.sp == 0)
  104. // mutHistory.push(2)
  105. // assert(mutHistory.ints == Vector(1, 2))
  106. // assert(mutHistory.sp == 1)
  107. // // mutHistory.forward()
  108. // // assert(mutHistory.sp == 1)
  109. // // mutHistory.forward()
  110. // // assert(mutHistory.sp == 1)
  111. // }
  112. //