/red-system/tests/source/units/return-test.reds

http://github.com/dockimbel/Red · Redscript · 168 lines · 150 code · 18 blank · 0 comment · 14 complexity · 46a5c04c66ce881243a1bb7fb8e81906 MD5 · raw file

  1. Red/System [
  2. Title: "Red/System RETURN keyword test script"
  3. Author: "Nenad Rakocevic"
  4. File: %test-return.reds
  5. Rights: "Copyright (C) 2011 Nenad Rakocevic. All rights reserved."
  6. License: "BSD-3 - https://github.com/dockimbel/Red/blob/origin/BSD-3-License.txt"
  7. ]
  8. #include %../../../../quick-test/quick-test.reds
  9. ~~~start-file~~~ "return"
  10. --test-- "return-1"
  11. ret-test: func [return: [integer!]][return 1]
  12. --assert ret-test = 1
  13. ret-test1-1: func [s [c-string!] return: [c-string!]][return s]
  14. --assert 5 = length? ret-test1-1 "hello"
  15. --test-- "return-2"
  16. i: 0
  17. ret-test98: func [return: [logic!]][
  18. return true
  19. i: 1
  20. false
  21. ]
  22. --assert ret-test98
  23. --assert i = 0
  24. --test-- "return-3"
  25. i: 0
  26. ret-test99: func [return: [logic!]][
  27. return false
  28. i: 1
  29. true
  30. ]
  31. --assert not ret-test99
  32. --assert i = 0
  33. --test-- "return-4"
  34. i: 0
  35. ret-test2: func [return: [logic!]][
  36. i: 1
  37. return true
  38. i: 2
  39. false
  40. ]
  41. --assert ret-test2
  42. --assert i = 1
  43. --test-- "return-5"
  44. i: 0
  45. ret-test3: func [return: [logic!]][
  46. i: 1
  47. if true [return true i: 2]
  48. i: 3
  49. false
  50. ]
  51. --assert ret-test3
  52. --assert i = 1
  53. --test-- "return-6"
  54. i: 0
  55. ret-test97: func [a [logic!] return: [logic!]][
  56. i: 1
  57. if true [return a i: 2]
  58. i: 3
  59. false
  60. ]
  61. --assert ret-test97 true
  62. --assert i = 1
  63. --test-- "return-7"
  64. i: 0
  65. ret-test4: func [return: [logic!]][
  66. i: 1
  67. if false [return false i: 2]
  68. i: 1
  69. true
  70. ]
  71. --assert ret-test4
  72. --assert i = 1
  73. --test-- "return-8"
  74. i: 0
  75. ret-test5: func [return: [logic!]][
  76. i: 1
  77. either true [return 1 < 2 i: 2][i: 3]
  78. i: 4
  79. false
  80. ]
  81. --assert ret-test5
  82. --assert i = 1
  83. --test-- "return-9"
  84. i: 0
  85. ret-test6: func [return: [logic!]][
  86. i: 1
  87. either false [return false][i: 1 return true i: 2]
  88. i: 3
  89. false
  90. ]
  91. --assert ret-test6
  92. --assert i = 1
  93. --test-- "return-10"
  94. i: 0
  95. ret-test7: func [return: [logic!]][
  96. i: 1
  97. either 1 < 2 [
  98. either 3 < 4 [
  99. return true
  100. i: 2
  101. ][
  102. i: 3
  103. ]
  104. ][
  105. i: 4
  106. ]
  107. i: 5
  108. false
  109. ]
  110. --assert ret-test7
  111. --assert i = 1
  112. ;; ret-test8 moved to return-test.r
  113. --test-- "return-11"
  114. i: 0
  115. ret-test9: func [return: [logic!]][
  116. i: 1
  117. until [
  118. return false
  119. true
  120. ]
  121. i: 2
  122. true
  123. ]
  124. --assert not ret-test9
  125. --assert i = 1
  126. --test-- "return-12"
  127. i: 0
  128. ret-test10: func [return: [integer!]][
  129. i: 1
  130. until [
  131. if true [return 42]
  132. i: 2
  133. true
  134. ]
  135. i: 3
  136. ]
  137. --assert ret-test10 = 42
  138. --assert i = 1
  139. --test-- "return-13"
  140. ret-test13: func [
  141. i [integer!]
  142. n [integer!]
  143. return: [integer!]
  144. /local s
  145. ][
  146. if 0 = i [return i]
  147. i
  148. ]
  149. --assert 0 = ret-test13 0 2
  150. ~~~end-file~~~