basic101 0.4.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (526) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +7 -0
  3. data/Gemfile +3 -12
  4. data/Gemfile.lock +33 -72
  5. data/Rakefile +0 -8
  6. data/basic101.gemspec +63 -663
  7. data/lib/basic101.rb +3 -0
  8. data/lib/basic101/abs_function.rb +2 -0
  9. data/lib/basic101/argument_checker.rb +2 -0
  10. data/lib/basic101/arguments.rb +2 -0
  11. data/lib/basic101/array_reference.rb +2 -0
  12. data/lib/basic101/asc_function.rb +2 -0
  13. data/lib/basic101/basic_array.rb +2 -0
  14. data/lib/basic101/basic_comparisons.rb +2 -0
  15. data/lib/basic101/basic_float.rb +2 -0
  16. data/lib/basic101/basic_integer.rb +2 -0
  17. data/lib/basic101/basic_math.rb +2 -0
  18. data/lib/basic101/basic_numeric.rb +2 -0
  19. data/lib/basic101/basic_object.rb +2 -0
  20. data/lib/basic101/basic_string.rb +2 -0
  21. data/lib/basic101/binary_operation.rb +2 -0
  22. data/lib/basic101/binary_operations.rb +2 -0
  23. data/lib/basic101/built_in_functions.rb +2 -0
  24. data/lib/basic101/chr_function.rb +2 -0
  25. data/lib/basic101/cos_function.rb +2 -0
  26. data/lib/basic101/data_statement.rb +2 -0
  27. data/lib/basic101/define_function_statement.rb +2 -0
  28. data/lib/basic101/dim_statement.rb +2 -0
  29. data/lib/basic101/else_statement.rb +2 -0
  30. data/lib/basic101/end_statement.rb +2 -0
  31. data/lib/basic101/endif_statement.rb +2 -0
  32. data/lib/basic101/errors.rb +2 -0
  33. data/lib/basic101/exp_function.rb +2 -0
  34. data/lib/basic101/for_stack.rb +2 -0
  35. data/lib/basic101/for_statement.rb +2 -0
  36. data/lib/basic101/function.rb +2 -0
  37. data/lib/basic101/function_call.rb +2 -0
  38. data/lib/basic101/function_identifier.rb +2 -0
  39. data/lib/basic101/functions.rb +2 -0
  40. data/lib/basic101/gosub_statement.rb +2 -0
  41. data/lib/basic101/goto_statement.rb +2 -0
  42. data/lib/basic101/identifier.rb +2 -0
  43. data/lib/basic101/identity.rb +2 -0
  44. data/lib/basic101/if_statement.rb +3 -0
  45. data/lib/basic101/input.rb +2 -0
  46. data/lib/basic101/input_reader.rb +3 -1
  47. data/lib/basic101/input_statement.rb +2 -0
  48. data/lib/basic101/int_function.rb +2 -0
  49. data/lib/basic101/left_function.rb +2 -0
  50. data/lib/basic101/len_function.rb +2 -0
  51. data/lib/basic101/let_statement.rb +2 -0
  52. data/lib/basic101/line.rb +2 -0
  53. data/lib/basic101/log_function.rb +2 -0
  54. data/lib/basic101/main.rb +2 -0
  55. data/lib/basic101/mid_function.rb +2 -0
  56. data/lib/basic101/negate_operation.rb +2 -0
  57. data/lib/basic101/next_statement.rb +2 -0
  58. data/lib/basic101/not_operation.rb +2 -0
  59. data/lib/basic101/null_prompt_delimeter.rb +2 -0
  60. data/lib/basic101/null_transcript.rb +2 -0
  61. data/lib/basic101/numeric_identifier.rb +2 -0
  62. data/lib/basic101/on_goto_statement.rb +2 -0
  63. data/lib/basic101/output.rb +2 -0
  64. data/lib/basic101/parser.rb +2 -0
  65. data/lib/basic101/parser/data_statement.rb +2 -0
  66. data/lib/basic101/parser/define_function_statement.rb +2 -0
  67. data/lib/basic101/parser/dim_statement.rb +2 -0
  68. data/lib/basic101/parser/end_statement.rb +2 -0
  69. data/lib/basic101/parser/expression.rb +2 -0
  70. data/lib/basic101/parser/for_statement.rb +2 -0
  71. data/lib/basic101/parser/function_call.rb +2 -0
  72. data/lib/basic101/parser/gosub_statement.rb +2 -0
  73. data/lib/basic101/parser/goto_statement.rb +2 -0
  74. data/lib/basic101/parser/identifier.rb +2 -0
  75. data/lib/basic101/parser/if_statement.rb +2 -0
  76. data/lib/basic101/parser/input_statement.rb +2 -0
  77. data/lib/basic101/parser/let_statement.rb +2 -0
  78. data/lib/basic101/parser/next_statement.rb +2 -0
  79. data/lib/basic101/parser/numeric.rb +2 -0
  80. data/lib/basic101/parser/on_goto_statement.rb +2 -0
  81. data/lib/basic101/parser/print_statement.rb +2 -0
  82. data/lib/basic101/parser/program.rb +2 -0
  83. data/lib/basic101/parser/randomize_statement.rb +2 -0
  84. data/lib/basic101/parser/read_statement.rb +2 -0
  85. data/lib/basic101/parser/reference.rb +2 -0
  86. data/lib/basic101/parser/remark_statement.rb +2 -0
  87. data/lib/basic101/parser/restore_statement.rb +2 -0
  88. data/lib/basic101/parser/return_statement.rb +2 -0
  89. data/lib/basic101/parser/space.rb +2 -0
  90. data/lib/basic101/parser/statements.rb +2 -0
  91. data/lib/basic101/parser/stop_statement.rb +2 -0
  92. data/lib/basic101/parser/string.rb +2 -0
  93. data/lib/basic101/power_operation.rb +2 -0
  94. data/lib/basic101/print_comma.rb +2 -0
  95. data/lib/basic101/print_semicolon.rb +2 -0
  96. data/lib/basic101/print_statement.rb +2 -0
  97. data/lib/basic101/program.rb +2 -0
  98. data/lib/basic101/program_counter.rb +2 -0
  99. data/lib/basic101/prompt_delimeter.rb +2 -0
  100. data/lib/basic101/randomize_statement.rb +2 -0
  101. data/lib/basic101/read_statement.rb +2 -0
  102. data/lib/basic101/reference.rb +2 -0
  103. data/lib/basic101/release.rb +13 -0
  104. data/lib/basic101/remark_statement.rb +2 -0
  105. data/lib/basic101/restore_statement.rb +2 -0
  106. data/lib/basic101/return_statement.rb +2 -0
  107. data/lib/basic101/right_function.rb +2 -0
  108. data/lib/basic101/rnd_function.rb +2 -0
  109. data/lib/basic101/runtime.rb +2 -0
  110. data/lib/basic101/scalar_reference.rb +2 -0
  111. data/lib/basic101/sgn_function.rb +2 -0
  112. data/lib/basic101/sin_function.rb +2 -0
  113. data/lib/basic101/sqr_function.rb +2 -0
  114. data/lib/basic101/statement.rb +2 -0
  115. data/lib/basic101/stop_statement.rb +2 -0
  116. data/lib/basic101/str_function.rb +2 -0
  117. data/lib/basic101/string_identifier.rb +2 -0
  118. data/lib/basic101/tab.rb +2 -0
  119. data/lib/basic101/tab_function.rb +2 -0
  120. data/lib/basic101/tan_function.rb +2 -0
  121. data/lib/basic101/transcript.rb +2 -0
  122. data/lib/basic101/transform.rb +2 -0
  123. data/lib/basic101/user_defined_function.rb +2 -0
  124. data/lib/basic101/val_function.rb +2 -0
  125. metadata +27 -445
  126. data/.rspec +0 -2
  127. data/.simplecov +0 -1
  128. data/.travis.yml +0 -5
  129. data/.yardopts +0 -7
  130. data/rake_tasks/default.rake +0 -1
  131. data/rake_tasks/integration.rake +0 -8
  132. data/rake_tasks/jeweler.rake +0 -28
  133. data/rake_tasks/spec.rake +0 -8
  134. data/rake_tasks/test.rake +0 -2
  135. data/rake_tasks/yard.rake +0 -3
  136. data/test/integration/arguments.rb +0 -25
  137. data/test/integration/errors.rb +0 -7
  138. data/test/integration/integration_test.rb +0 -28
  139. data/test/integration/main.rb +0 -49
  140. data/test/integration/output_file.rb +0 -40
  141. data/test/integration/test.rb +0 -135
  142. data/test/integration/tests/basic_computer_games/23-match.input +0 -1
  143. data/test/integration/tests/basic_computer_games/23-match.output +0 -29
  144. data/test/integration/tests/basic_computer_games/3dplot.input +0 -0
  145. data/test/integration/tests/basic_computer_games/3dplot.output +0 -47
  146. data/test/integration/tests/basic_computer_games/aceyducy.input +0 -8
  147. data/test/integration/tests/basic_computer_games/aceyducy.output +0 -78
  148. data/test/integration/tests/basic_computer_games/amazing.input +0 -1
  149. data/test/integration/tests/basic_computer_games/amazing.output +0 -32
  150. data/test/integration/tests/basic_computer_games/animal.input +0 -17
  151. data/test/integration/tests/basic_computer_games/animal.output +0 -38
  152. data/test/integration/tests/basic_computer_games/awari.input +0 -11
  153. data/test/integration/tests/basic_computer_games/awari.output +0 -117
  154. data/test/integration/tests/basic_computer_games/bagels.input +0 -12
  155. data/test/integration/tests/basic_computer_games/bagels.output +0 -42
  156. data/test/integration/tests/basic_computer_games/banner.input +0 -6
  157. data/test/integration/tests/basic_computer_games/banner.output +0 -135
  158. data/test/integration/tests/basic_computer_games/basketbl.input +0 -46
  159. data/test/integration/tests/basic_computer_games/basketbl.output +0 -509
  160. data/test/integration/tests/basic_computer_games/batnum.input +0 -14
  161. data/test/integration/tests/basic_computer_games/batnum.output +0 -67
  162. data/test/integration/tests/basic_computer_games/battle.input +0 -21
  163. data/test/integration/tests/basic_computer_games/battle.output +0 -118
  164. data/test/integration/tests/basic_computer_games/blackjck.input +0 -26
  165. data/test/integration/tests/basic_computer_games/blackjck.output +0 -144
  166. data/test/integration/tests/basic_computer_games/bombard.input +0 -20
  167. data/test/integration/tests/basic_computer_games/bombard.output +0 -175
  168. data/test/integration/tests/basic_computer_games/bounce.input +0 -0
  169. data/test/integration/tests/basic_computer_games/bounce.output +0 -15
  170. data/test/integration/tests/basic_computer_games/bowling.input +0 -23
  171. data/test/integration/tests/basic_computer_games/bowling.output +0 -229
  172. data/test/integration/tests/basic_computer_games/boxing.input +0 -8
  173. data/test/integration/tests/basic_computer_games/boxing.output +0 -47
  174. data/test/integration/tests/basic_computer_games/bug.input +0 -17
  175. data/test/integration/tests/basic_computer_games/bug.output +0 -847
  176. data/test/integration/tests/basic_computer_games/bullfght.input +0 -4
  177. data/test/integration/tests/basic_computer_games/bullfght.output +0 -60
  178. data/test/integration/tests/basic_computer_games/bullseye.input +0 -10
  179. data/test/integration/tests/basic_computer_games/bullseye.output +0 -79
  180. data/test/integration/tests/basic_computer_games/bunny.input +0 -0
  181. data/test/integration/tests/basic_computer_games/bunny.output +0 -67
  182. data/test/integration/tests/basic_computer_games/buzzword.input +0 -4
  183. data/test/integration/tests/basic_computer_games/buzzword.output +0 -25
  184. data/test/integration/tests/basic_computer_games/calendar.input +0 -0
  185. data/test/integration/tests/basic_computer_games/calendar.output +0 -213
  186. data/test/integration/tests/basic_computer_games/change.input +0 -4
  187. data/test/integration/tests/basic_computer_games/change.output +0 -28
  188. data/test/integration/tests/basic_computer_games/checkers.input +0 -74
  189. data/test/integration/tests/basic_computer_games/checkers.output +0 -673
  190. data/test/integration/tests/basic_computer_games/chemist.input +0 -11
  191. data/test/integration/tests/basic_computer_games/chemist.output +0 -54
  192. data/test/integration/tests/basic_computer_games/chief.input +0 -5
  193. data/test/integration/tests/basic_computer_games/chief.output +0 -19
  194. data/test/integration/tests/basic_computer_games/chomp.input +0 -15
  195. data/test/integration/tests/basic_computer_games/chomp.output +0 -159
  196. data/test/integration/tests/basic_computer_games/combat.input +0 -7
  197. data/test/integration/tests/basic_computer_games/combat.output +0 -33
  198. data/test/integration/tests/basic_computer_games/craps.input +0 -9
  199. data/test/integration/tests/basic_computer_games/craps.output +0 -51
  200. data/test/integration/tests/basic_computer_games/cube.input +0 -25
  201. data/test/integration/tests/basic_computer_games/cube.output +0 -72
  202. data/test/integration/tests/basic_computer_games/depthchg.input +0 -16
  203. data/test/integration/tests/basic_computer_games/depthchg.output +0 -83
  204. data/test/integration/tests/basic_computer_games/diamond.input +0 -1
  205. data/test/integration/tests/basic_computer_games/diamond.output +0 -65
  206. data/test/integration/tests/basic_computer_games/dice.input +0 -4
  207. data/test/integration/tests/basic_computer_games/dice.output +0 -46
  208. data/test/integration/tests/basic_computer_games/digits.input +0 -5
  209. data/test/integration/tests/basic_computer_games/digits.output +0 -70
  210. data/test/integration/tests/basic_computer_games/evenwin1.input +0 -13
  211. data/test/integration/tests/basic_computer_games/evenwin1.output +0 -116
  212. data/test/integration/tests/basic_computer_games/evenwin2.input +0 -14
  213. data/test/integration/tests/basic_computer_games/evenwin2.output +0 -56
  214. data/test/integration/tests/basic_computer_games/flipflop.input +0 -8
  215. data/test/integration/tests/basic_computer_games/flipflop.output +0 -45
  216. data/test/integration/tests/basic_computer_games/footbal1.input +0 -13
  217. data/test/integration/tests/basic_computer_games/footbal1.output +0 -315
  218. data/test/integration/tests/basic_computer_games/footbal2.input +0 -23
  219. data/test/integration/tests/basic_computer_games/footbal2.output +0 -318
  220. data/test/integration/tests/basic_computer_games/furtradr.input +0 -20
  221. data/test/integration/tests/basic_computer_games/furtradr.output +0 -133
  222. data/test/integration/tests/basic_computer_games/golf.input +0 -11
  223. data/test/integration/tests/basic_computer_games/golf.output +0 -69
  224. data/test/integration/tests/basic_computer_games/gomoko.input +0 -6
  225. data/test/integration/tests/basic_computer_games/gomoko.output +0 -66
  226. data/test/integration/tests/basic_computer_games/guess.input +0 -8
  227. data/test/integration/tests/basic_computer_games/guess.output +0 -37
  228. data/test/integration/tests/basic_computer_games/gunner.input +0 -18
  229. data/test/integration/tests/basic_computer_games/gunner.output +0 -91
  230. data/test/integration/tests/basic_computer_games/hamurabi.input +0 -7
  231. data/test/integration/tests/basic_computer_games/hamurabi.output +0 -51
  232. data/test/integration/tests/basic_computer_games/hangman.input +0 -69
  233. data/test/integration/tests/basic_computer_games/hangman.output +0 -889
  234. data/test/integration/tests/basic_computer_games/hello.input +0 -7
  235. data/test/integration/tests/basic_computer_games/hello.output +0 -46
  236. data/test/integration/tests/basic_computer_games/hexapawn.input +0 -38
  237. data/test/integration/tests/basic_computer_games/hexapawn.output +0 -521
  238. data/test/integration/tests/basic_computer_games/hi-q.input +0 -14
  239. data/test/integration/tests/basic_computer_games/hi-q.output +0 -115
  240. data/test/integration/tests/basic_computer_games/hilo.input +0 -20
  241. data/test/integration/tests/basic_computer_games/hilo.output +0 -76
  242. data/test/integration/tests/basic_computer_games/hockey.input +0 -59
  243. data/test/integration/tests/basic_computer_games/hockey.output +0 -243
  244. data/test/integration/tests/basic_computer_games/horsrace.input +0 -11
  245. data/test/integration/tests/basic_computer_games/horsrace.output +0 -517
  246. data/test/integration/tests/basic_computer_games/hurkle.input +0 -16
  247. data/test/integration/tests/basic_computer_games/hurkle.output +0 -81
  248. data/test/integration/tests/basic_computer_games/kinema.input +0 -9
  249. data/test/integration/tests/basic_computer_games/kinema.output +0 -64
  250. data/test/integration/tests/basic_computer_games/king.input +0 -7
  251. data/test/integration/tests/basic_computer_games/king.output +0 -57
  252. data/test/integration/tests/basic_computer_games/lem.input +0 -4
  253. data/test/integration/tests/basic_computer_games/lem.output +0 -68
  254. data/test/integration/tests/basic_computer_games/letter.input +0 -24
  255. data/test/integration/tests/basic_computer_games/letter.output +0 -123
  256. data/test/integration/tests/basic_computer_games/life.input +0 -4
  257. data/test/integration/tests/basic_computer_games/life.options +0 -1
  258. data/test/integration/tests/basic_computer_games/life.output +0 -200
  259. data/test/integration/tests/basic_computer_games/life2.input +0 -17
  260. data/test/integration/tests/basic_computer_games/life2.output +0 -113
  261. data/test/integration/tests/basic_computer_games/litquiz.input +0 -4
  262. data/test/integration/tests/basic_computer_games/litquiz.output +0 -36
  263. data/test/integration/tests/basic_computer_games/love.input +0 -1
  264. data/test/integration/tests/basic_computer_games/love.output +0 -67
  265. data/test/integration/tests/basic_computer_games/lunar.input +0 -87
  266. data/test/integration/tests/basic_computer_games/lunar.output +0 -195
  267. data/test/integration/tests/basic_computer_games/mastrmnd.input +0 -18
  268. data/test/integration/tests/basic_computer_games/mastrmnd.output +0 -67
  269. data/test/integration/tests/basic_computer_games/mathdice.input +0 -4
  270. data/test/integration/tests/basic_computer_games/mathdice.output +0 -86
  271. data/test/integration/tests/basic_computer_games/mugwump.input +0 -16
  272. data/test/integration/tests/basic_computer_games/mugwump.output +0 -139
  273. data/test/integration/tests/basic_computer_games/name.input +0 -2
  274. data/test/integration/tests/basic_computer_games/name.output +0 -22
  275. data/test/integration/tests/basic_computer_games/nicoma.input +0 -8
  276. data/test/integration/tests/basic_computer_games/nicoma.output +0 -36
  277. data/test/integration/tests/basic_computer_games/nim.input +0 -8
  278. data/test/integration/tests/basic_computer_games/nim.output +0 -30
  279. data/test/integration/tests/basic_computer_games/number.input +0 -19
  280. data/test/integration/tests/basic_computer_games/number.output +0 -73
  281. data/test/integration/tests/basic_computer_games/onecheck.input +0 -6
  282. data/test/integration/tests/basic_computer_games/onecheck.output +0 -77
  283. data/test/integration/tests/basic_computer_games/orbit.input +0 -10
  284. data/test/integration/tests/basic_computer_games/orbit.output +0 -113
  285. data/test/integration/tests/basic_computer_games/pizza.input +0 -10
  286. data/test/integration/tests/basic_computer_games/pizza.output +0 -93
  287. data/test/integration/tests/basic_computer_games/poetry.input +0 -0
  288. data/test/integration/tests/basic_computer_games/poetry.options +0 -1
  289. data/test/integration/tests/basic_computer_games/poetry.output +0 -50
  290. data/test/integration/tests/basic_computer_games/poker.input +0 -34
  291. data/test/integration/tests/basic_computer_games/poker.output +0 -197
  292. data/test/integration/tests/basic_computer_games/queen.input +0 -10
  293. data/test/integration/tests/basic_computer_games/queen.output +0 -133
  294. data/test/integration/tests/basic_computer_games/reverse.input +0 -12
  295. data/test/integration/tests/basic_computer_games/reverse.output +0 -79
  296. data/test/integration/tests/basic_computer_games/rocket.input +0 -42
  297. data/test/integration/tests/basic_computer_games/rocket.output +0 -149
  298. data/test/integration/tests/basic_computer_games/rocksp.input +0 -9
  299. data/test/integration/tests/basic_computer_games/rocksp.output +0 -69
  300. data/test/integration/tests/basic_computer_games/roulette.input +0 -9
  301. data/test/integration/tests/basic_computer_games/roulette.output +0 -98
  302. data/test/integration/tests/basic_computer_games/rusrou.input +0 -9
  303. data/test/integration/tests/basic_computer_games/rusrou.output +0 -50
  304. data/test/integration/tests/basic_computer_games/salvo.input +0 -21
  305. data/test/integration/tests/basic_computer_games/salvo.output +0 -49
  306. data/test/integration/tests/basic_computer_games/sinewave.input +0 -0
  307. data/test/integration/tests/basic_computer_games/sinewave.output +0 -168
  308. data/test/integration/tests/basic_computer_games/slalom.input +0 -20
  309. data/test/integration/tests/basic_computer_games/slalom.output +0 -122
  310. data/test/integration/tests/basic_computer_games/slots.input +0 -2
  311. data/test/integration/tests/basic_computer_games/slots.output +0 -20
  312. data/test/integration/tests/basic_computer_games/splat.input +0 -9
  313. data/test/integration/tests/basic_computer_games/splat.output +0 -61
  314. data/test/integration/tests/basic_computer_games/stars.input +0 -15
  315. data/test/integration/tests/basic_computer_games/stars.output +0 -70
  316. data/test/integration/tests/basic_computer_games/stock.input +0 -30
  317. data/test/integration/tests/basic_computer_games/stock.output +0 -156
  318. data/test/integration/tests/basic_computer_games/superstartrek.input +0 -21
  319. data/test/integration/tests/basic_computer_games/superstartrek.output +0 -151
  320. data/test/integration/tests/basic_computer_games/superstartrekins.input +0 -1
  321. data/test/integration/tests/basic_computer_games/superstartrekins.output +0 -134
  322. data/test/integration/tests/basic_computer_games/synonym.input +0 -13
  323. data/test/integration/tests/basic_computer_games/synonym.output +0 -57
  324. data/test/integration/tests/basic_computer_games/target.input +0 -2
  325. data/test/integration/tests/basic_computer_games/target.output +0 -39
  326. data/test/integration/tests/basic_computer_games/tictac1.input +0 -10
  327. data/test/integration/tests/basic_computer_games/tictac1.output +0 -49
  328. data/test/integration/tests/basic_computer_games/tictac2.input +0 -6
  329. data/test/integration/tests/basic_computer_games/tictac2.output +0 -104
  330. data/test/integration/tests/basic_computer_games/towers.input +0 -9
  331. data/test/integration/tests/basic_computer_games/towers.output +0 -70
  332. data/test/integration/tests/basic_computer_games/train.input +0 -4
  333. data/test/integration/tests/basic_computer_games/train.output +0 -23
  334. data/test/integration/tests/basic_computer_games/trap.input +0 -7
  335. data/test/integration/tests/basic_computer_games/trap.output +0 -40
  336. data/test/integration/tests/basic_computer_games/war.input +0 -11
  337. data/test/integration/tests/basic_computer_games/war.output +0 -54
  338. data/test/integration/tests/basic_computer_games/weekday.input +0 -2
  339. data/test/integration/tests/basic_computer_games/weekday.output +0 -28
  340. data/test/integration/tests/basic_computer_games/word.input +0 -6
  341. data/test/integration/tests/basic_computer_games/word.output +0 -0
  342. data/test/integration/tests/fast/abs.bas +0 -5
  343. data/test/integration/tests/fast/abs.input +0 -0
  344. data/test/integration/tests/fast/abs.output +0 -5
  345. data/test/integration/tests/fast/add.bas +0 -5
  346. data/test/integration/tests/fast/add.input +0 -0
  347. data/test/integration/tests/fast/add.output +0 -5
  348. data/test/integration/tests/fast/and.bas +0 -5
  349. data/test/integration/tests/fast/and.input +0 -0
  350. data/test/integration/tests/fast/and.output +0 -5
  351. data/test/integration/tests/fast/array.bas +0 -11
  352. data/test/integration/tests/fast/array.input +0 -0
  353. data/test/integration/tests/fast/array.output +0 -6
  354. data/test/integration/tests/fast/asc.bas +0 -1
  355. data/test/integration/tests/fast/asc.input +0 -0
  356. data/test/integration/tests/fast/asc.output +0 -1
  357. data/test/integration/tests/fast/chr.bas +0 -1
  358. data/test/integration/tests/fast/chr.input +0 -0
  359. data/test/integration/tests/fast/chr.output +0 -1
  360. data/test/integration/tests/fast/cos.bas +0 -1
  361. data/test/integration/tests/fast/cos.input +0 -0
  362. data/test/integration/tests/fast/cos.output +0 -1
  363. data/test/integration/tests/fast/def_fn.bas +0 -9
  364. data/test/integration/tests/fast/def_fn.input +0 -0
  365. data/test/integration/tests/fast/def_fn.output +0 -5
  366. data/test/integration/tests/fast/divide.bas +0 -5
  367. data/test/integration/tests/fast/divide.input +0 -0
  368. data/test/integration/tests/fast/divide.output +0 -5
  369. data/test/integration/tests/fast/end.bas +0 -3
  370. data/test/integration/tests/fast/end.input +0 -0
  371. data/test/integration/tests/fast/end.output +0 -1
  372. data/test/integration/tests/fast/eq.bas +0 -3
  373. data/test/integration/tests/fast/eq.input +0 -0
  374. data/test/integration/tests/fast/eq.output +0 -3
  375. data/test/integration/tests/fast/exp.bas +0 -2
  376. data/test/integration/tests/fast/exp.input +0 -0
  377. data/test/integration/tests/fast/exp.output +0 -2
  378. data/test/integration/tests/fast/float.bas +0 -3
  379. data/test/integration/tests/fast/float.input +0 -0
  380. data/test/integration/tests/fast/float.output +0 -2
  381. data/test/integration/tests/fast/for_next.bas +0 -61
  382. data/test/integration/tests/fast/for_next.input +0 -0
  383. data/test/integration/tests/fast/for_next.output +0 -46
  384. data/test/integration/tests/fast/ge.bas +0 -3
  385. data/test/integration/tests/fast/ge.input +0 -0
  386. data/test/integration/tests/fast/ge.output +0 -3
  387. data/test/integration/tests/fast/gosub_return.bas +0 -10
  388. data/test/integration/tests/fast/gosub_return.input +0 -0
  389. data/test/integration/tests/fast/gosub_return.output +0 -4
  390. data/test/integration/tests/fast/goto.bas +0 -3
  391. data/test/integration/tests/fast/goto.input +0 -0
  392. data/test/integration/tests/fast/goto.output +0 -1
  393. data/test/integration/tests/fast/gt.bas +0 -3
  394. data/test/integration/tests/fast/gt.input +0 -0
  395. data/test/integration/tests/fast/gt.output +0 -3
  396. data/test/integration/tests/fast/if.bas +0 -25
  397. data/test/integration/tests/fast/if.input +0 -0
  398. data/test/integration/tests/fast/if.output +0 -8
  399. data/test/integration/tests/fast/input.bas +0 -24
  400. data/test/integration/tests/fast/input.input +0 -10
  401. data/test/integration/tests/fast/input.output +0 -28
  402. data/test/integration/tests/fast/int.bas +0 -5
  403. data/test/integration/tests/fast/int.input +0 -0
  404. data/test/integration/tests/fast/int.output +0 -5
  405. data/test/integration/tests/fast/integer_plus_string.bas +0 -1
  406. data/test/integration/tests/fast/integer_plus_string.input +0 -0
  407. data/test/integration/tests/fast/integer_plus_string.output +0 -1
  408. data/test/integration/tests/fast/invalid_argument.bas +0 -1
  409. data/test/integration/tests/fast/invalid_argument.input +0 -0
  410. data/test/integration/tests/fast/invalid_argument.output +0 -1
  411. data/test/integration/tests/fast/le.bas +0 -3
  412. data/test/integration/tests/fast/le.input +0 -0
  413. data/test/integration/tests/fast/le.output +0 -3
  414. data/test/integration/tests/fast/left.bas +0 -1
  415. data/test/integration/tests/fast/left.input +0 -0
  416. data/test/integration/tests/fast/left.output +0 -1
  417. data/test/integration/tests/fast/len.bas +0 -2
  418. data/test/integration/tests/fast/len.input +0 -0
  419. data/test/integration/tests/fast/len.output +0 -2
  420. data/test/integration/tests/fast/let.bas +0 -6
  421. data/test/integration/tests/fast/let.input +0 -0
  422. data/test/integration/tests/fast/let.output +0 -4
  423. data/test/integration/tests/fast/log.bas +0 -1
  424. data/test/integration/tests/fast/log.input +0 -0
  425. data/test/integration/tests/fast/log.output +0 -1
  426. data/test/integration/tests/fast/lt.bas +0 -3
  427. data/test/integration/tests/fast/lt.input +0 -0
  428. data/test/integration/tests/fast/lt.output +0 -3
  429. data/test/integration/tests/fast/math.output +0 -0
  430. data/test/integration/tests/fast/mid.bas +0 -2
  431. data/test/integration/tests/fast/mid.input +0 -0
  432. data/test/integration/tests/fast/mid.output +0 -2
  433. data/test/integration/tests/fast/multiply.bas +0 -5
  434. data/test/integration/tests/fast/multiply.input +0 -0
  435. data/test/integration/tests/fast/multiply.output +0 -5
  436. data/test/integration/tests/fast/ne.bas +0 -3
  437. data/test/integration/tests/fast/ne.input +0 -0
  438. data/test/integration/tests/fast/ne.output +0 -3
  439. data/test/integration/tests/fast/negate.bas +0 -4
  440. data/test/integration/tests/fast/negate.input +0 -0
  441. data/test/integration/tests/fast/negate.output +0 -3
  442. data/test/integration/tests/fast/not.bas +0 -4
  443. data/test/integration/tests/fast/not.input +0 -0
  444. data/test/integration/tests/fast/not.output +0 -4
  445. data/test/integration/tests/fast/on_goto.bas +0 -6
  446. data/test/integration/tests/fast/on_goto.input +0 -0
  447. data/test/integration/tests/fast/on_goto.output +0 -2
  448. data/test/integration/tests/fast/or.bas +0 -5
  449. data/test/integration/tests/fast/or.input +0 -0
  450. data/test/integration/tests/fast/or.output +0 -5
  451. data/test/integration/tests/fast/parentheses.bas +0 -1
  452. data/test/integration/tests/fast/parentheses.input +0 -0
  453. data/test/integration/tests/fast/parentheses.output +0 -1
  454. data/test/integration/tests/fast/power.bas +0 -4
  455. data/test/integration/tests/fast/power.input +0 -0
  456. data/test/integration/tests/fast/power.output +0 -4
  457. data/test/integration/tests/fast/print.bas +0 -6
  458. data/test/integration/tests/fast/print.input +0 -0
  459. data/test/integration/tests/fast/print.output +0 -4
  460. data/test/integration/tests/fast/read_data.bas +0 -15
  461. data/test/integration/tests/fast/read_data.input +0 -0
  462. data/test/integration/tests/fast/read_data.output +0 -4
  463. data/test/integration/tests/fast/rem.bas +0 -1
  464. data/test/integration/tests/fast/rem.input +0 -0
  465. data/test/integration/tests/fast/rem.output +0 -0
  466. data/test/integration/tests/fast/right.bas +0 -1
  467. data/test/integration/tests/fast/right.input +0 -0
  468. data/test/integration/tests/fast/right.output +0 -1
  469. data/test/integration/tests/fast/rnd.bas +0 -5
  470. data/test/integration/tests/fast/rnd.input +0 -0
  471. data/test/integration/tests/fast/rnd.output +0 -5
  472. data/test/integration/tests/fast/sgn.bas +0 -5
  473. data/test/integration/tests/fast/sgn.input +0 -0
  474. data/test/integration/tests/fast/sgn.output +0 -5
  475. data/test/integration/tests/fast/sin.bas +0 -1
  476. data/test/integration/tests/fast/sin.input +0 -0
  477. data/test/integration/tests/fast/sin.output +0 -1
  478. data/test/integration/tests/fast/sqr.bas +0 -2
  479. data/test/integration/tests/fast/sqr.input +0 -0
  480. data/test/integration/tests/fast/sqr.output +0 -2
  481. data/test/integration/tests/fast/stop.bas +0 -3
  482. data/test/integration/tests/fast/stop.input +0 -0
  483. data/test/integration/tests/fast/stop.output +0 -2
  484. data/test/integration/tests/fast/str.bas +0 -3
  485. data/test/integration/tests/fast/str.input +0 -0
  486. data/test/integration/tests/fast/str.output +0 -3
  487. data/test/integration/tests/fast/string_addition.bas +0 -1
  488. data/test/integration/tests/fast/string_addition.input +0 -0
  489. data/test/integration/tests/fast/string_addition.output +0 -1
  490. data/test/integration/tests/fast/string_comparisons.bas +0 -7
  491. data/test/integration/tests/fast/string_comparisons.input +0 -0
  492. data/test/integration/tests/fast/string_comparisons.output +0 -4
  493. data/test/integration/tests/fast/string_plus_integer.bas +0 -1
  494. data/test/integration/tests/fast/string_plus_integer.input +0 -0
  495. data/test/integration/tests/fast/string_plus_integer.output +0 -1
  496. data/test/integration/tests/fast/subtract.bas +0 -5
  497. data/test/integration/tests/fast/subtract.input +0 -0
  498. data/test/integration/tests/fast/subtract.output +0 -5
  499. data/test/integration/tests/fast/tab.bas +0 -4
  500. data/test/integration/tests/fast/tab.input +0 -0
  501. data/test/integration/tests/fast/tab.output +0 -3
  502. data/test/integration/tests/fast/tan.bas +0 -1
  503. data/test/integration/tests/fast/tan.input +0 -0
  504. data/test/integration/tests/fast/tan.output +0 -1
  505. data/test/integration/tests/fast/val.bas +0 -3
  506. data/test/integration/tests/fast/val.input +0 -0
  507. data/test/integration/tests/fast/val.output +0 -3
  508. data/test/spec/argument_checker_spec.rb +0 -128
  509. data/test/spec/basic_array_spec.rb +0 -100
  510. data/test/spec/basic_float_spec.rb +0 -168
  511. data/test/spec/basic_integer_spec.rb +0 -270
  512. data/test/spec/basic_numeric_spec.rb +0 -16
  513. data/test/spec/basic_object_spec.rb +0 -22
  514. data/test/spec/basic_string_spec.rb +0 -259
  515. data/test/spec/for_stack_spec.rb +0 -70
  516. data/test/spec/input_reader_spec.rb +0 -143
  517. data/test/spec/input_spec.rb +0 -102
  518. data/test/spec/line_spec.rb +0 -18
  519. data/test/spec/output_spec.rb +0 -153
  520. data/test/spec/parser_spec.rb +0 -562
  521. data/test/spec/program_spec.rb +0 -45
  522. data/test/spec/spec_helper.rb +0 -16
  523. data/test/spec/support/basic_numeric_helpers.rb +0 -327
  524. data/test/spec/support/basic_object_helpers.rb +0 -22
  525. data/test/spec/transcript_spec.rb +0 -37
  526. data/test/spec/transform_spec.rb +0 -513
@@ -1,22 +0,0 @@
1
- require_relative 'spec_helper'
2
-
3
- module Basic101
4
-
5
- describe BasicObject do
6
-
7
- describe 'type_name' do
8
- let(:type_name) {'object'}
9
- specify {expect(subject.class.type_name).to eq type_name}
10
- specify {expect(subject.type_name).to eq type_name}
11
- end
12
-
13
- describe '#eval' do
14
- let(:runtime) {double Runtime}
15
- it 'should return itself' do
16
- expect(subject.eval(runtime)).to eq subject
17
- end
18
- end
19
-
20
- end
21
-
22
- end
@@ -1,259 +0,0 @@
1
- require_relative 'spec_helper'
2
-
3
- module Basic101
4
-
5
- describe BasicString do
6
-
7
- it_behaves_like 'a basic object' do
8
- let(:default_value) {''}
9
- end
10
-
11
- describe 'type_name' do
12
- let(:type_name) {'string'}
13
- subject {described_class.new(0)}
14
- specify {expect(subject.class.type_name).to eq type_name}
15
- specify {expect(subject.type_name).to eq type_name}
16
- end
17
-
18
- describe '#left' do
19
-
20
- context 'when extracting substring' do
21
- specify do
22
- s = described_class.new('abcd')
23
- expect(s.left(2)).to eq described_class.new('ab')
24
- end
25
- end
26
-
27
- context 'when extracting null string' do
28
- specify do
29
- s = described_class.new('abcd')
30
- expect(s.left(0)).to eq described_class.new('')
31
- end
32
- end
33
-
34
- context 'when extracting entire string' do
35
- specify do
36
- s = described_class.new('abcd')
37
- expect(s.left(10)).to eq described_class.new('abcd')
38
- end
39
- end
40
-
41
- context 'when negative' do
42
- specify do
43
- s = described_class.new('abcd')
44
- expect do
45
- s.left(-1)
46
- end.to raise_error InvalidArgumentError
47
- end
48
- end
49
-
50
- end
51
-
52
- describe '#length' do
53
- specify do
54
- s = described_class.new('abc')
55
- expect(s.length).to eq BasicInteger.new(3)
56
- end
57
- end
58
-
59
- describe '#mid' do
60
-
61
- context 'when substring' do
62
- specify do
63
- s = described_class.new('abc')
64
- expect(s.mid(2)).to eq described_class.new('bc')
65
- end
66
- end
67
-
68
- context 'when short count' do
69
- specify do
70
- s = described_class.new('abc')
71
- expect(s.mid(2, 1)).to eq described_class.new('b')
72
- end
73
- end
74
-
75
- context 'when long count' do
76
- specify do
77
- s = described_class.new('abc')
78
- expect(s.mid(2, 100)).to eq described_class.new('bc')
79
- end
80
- end
81
-
82
- context 'when start past end of string' do
83
- specify do
84
- s = described_class.new('abc')
85
- expect(s.mid(100)).to eq described_class.new('')
86
- end
87
- end
88
-
89
- context 'when zero start' do
90
- specify do
91
- s = described_class.new('abc')
92
- expect do
93
- s.mid(0)
94
- end.to raise_error InvalidArgumentError
95
- end
96
- end
97
-
98
- context 'when zero count' do
99
- specify do
100
- s = described_class.new('abc')
101
- expect do
102
- s.mid(1, 0)
103
- end.to raise_error InvalidArgumentError
104
- end
105
- end
106
-
107
- end
108
-
109
- describe '#+' do
110
-
111
- it 'should concatenate a string' do
112
- a = described_class.new('abc')
113
- b = described_class.new('123')
114
- c = a + b
115
- expect(c).to eq described_class.new('abc123')
116
- end
117
-
118
- it 'should not concatenate an integer' do
119
- a = described_class.new('abc')
120
- b = BasicInteger.new(1)
121
- expect {a + b}.to raise_error TypeError
122
- end
123
-
124
- end
125
-
126
- describe '#right' do
127
-
128
- context 'when entire string' do
129
- specify do
130
- a = described_class.new('abc')
131
- b = a.right(10)
132
- expect(b).to eq described_class.new('abc')
133
- end
134
- end
135
-
136
- context 'when substring' do
137
- specify do
138
- a = described_class.new('abc')
139
- b = a.right(2)
140
- expect(b).to eq described_class.new('bc')
141
- end
142
- end
143
-
144
- context 'when zero count' do
145
- specify do
146
- a = described_class.new('abc')
147
- b = a.right(0)
148
- expect(b).to eq described_class.new('')
149
- end
150
- end
151
-
152
- context 'when negative count' do
153
- specify do
154
- a = described_class.new('abc')
155
- expect { a.right(-1) }.to raise_error InvalidArgumentError
156
- end
157
- end
158
-
159
- end
160
-
161
- describe '#asc' do
162
-
163
- context 'when not empty' do
164
- specify do
165
- a = described_class.new('ABC')
166
- expect(a.asc).to eq BasicInteger.new(65)
167
- end
168
- end
169
-
170
- context 'when empty' do
171
- specify do
172
- a = described_class.new('')
173
- expect {a.asc}.to raise_error InvalidArgumentError
174
- end
175
- end
176
-
177
- end
178
-
179
- describe '#val' do
180
-
181
- it 'converts to a float' do
182
- a = described_class.new('1.23')
183
- expect(a.val).to eq BasicFloat.new(1.23)
184
- end
185
-
186
- it 'converts to an integer' do
187
- a = described_class.new('-123')
188
- expect(a.val).to eq BasicInteger.new(-123)
189
- end
190
-
191
- it 'ignores white space' do
192
- a = described_class.new("\t\n 123\t\n ")
193
- expect(a.val).to eq BasicInteger.new(123)
194
- end
195
-
196
- end
197
-
198
- describe '#to_numeric' do
199
- it 'should refuse' do
200
- a = described_class.new('abc')
201
- expect do
202
- a.to_numeric
203
- end.to raise_error TypeError,
204
- 'string cannot be converted to numeric'
205
- end
206
- end
207
-
208
- describe '#to_integer' do
209
- specify do
210
- a = described_class.new(12)
211
- expect {a.to_integer}.to raise_error TypeError
212
- end
213
- end
214
-
215
- describe '#to_float' do
216
- specify do
217
- a = described_class.new(12.34)
218
- expect {a.to_float}.to raise_error TypeError
219
- end
220
- end
221
-
222
- describe '#to_string' do
223
- specify do
224
- a = described_class.new('abc')
225
- expect(a.to_string).to eq a
226
- end
227
- end
228
-
229
- describe '#str' do
230
- it 'should return itself' do
231
- a = described_class.new('abc')
232
- expect(a.str).to eq a
233
- end
234
- end
235
-
236
- describe 'printing' do
237
-
238
- let(:output) {double Output}
239
- subject {described_class.new('123')}
240
-
241
- describe '#print_string' do
242
- specify do
243
- expect(output).to receive(:print).with('123')
244
- subject.print_string(output)
245
- end
246
- end
247
-
248
- describe '#print_new_line' do
249
- specify do
250
- expect(output).to receive(:print).with("\n")
251
- subject.print_new_line(output)
252
- end
253
- end
254
-
255
- end
256
-
257
- end
258
-
259
- end
@@ -1,70 +0,0 @@
1
- require_relative 'spec_helper'
2
-
3
- module Basic101
4
-
5
- describe ForStack do
6
-
7
- it 'should be empty' do
8
- expect(subject).to be_empty
9
- end
10
-
11
- it 'should not be empty' do
12
- statement1 = double(ForStatement, :reference => 'I')
13
- subject.push statement1
14
- expect(subject).to_not be_empty
15
- end
16
-
17
- it 'should act as a FIFO stack' do
18
- statement1 = double(ForStatement, :reference => 'I')
19
- statement2 = double(ForStatement, :reference => 'J')
20
- subject.push statement1
21
- subject.push statement2
22
- expect(subject.pop).to eq statement2
23
- expect(subject.pop).to eq statement1
24
- expect(subject).to be_empty
25
- end
26
-
27
- it 'should refuse to have the same reference duplicated' do
28
- statement1 = double(ForStatement, :reference => 'I')
29
- statement2 = double(ForStatement, :reference => 'I')
30
- subject.push statement1
31
- expect do
32
- subject.push statement2
33
- end.to raise_error DuplicateReferenceInForStack
34
- end
35
-
36
- it 'should peek at the top of the stack' do
37
- statement1 = double(ForStatement, :reference => 'I')
38
- statement2 = double(ForStatement, :reference => 'J')
39
- subject.push statement1
40
- subject.push statement2
41
- expect(subject.top).to eq statement2
42
- subject.pop
43
- expect(subject.top).to eq statement1
44
- subject.pop
45
- expect(subject.top).to be_nil
46
- end
47
-
48
- it 'should delete entries with a reference variable' do
49
- statement1 = double(ForStatement, :reference => 'I')
50
- statement2 = double(ForStatement, :reference => 'J')
51
- subject.push statement1
52
- subject.push statement2
53
- subject.delete_reference('I')
54
- expect(subject.pop).to eq statement2
55
- expect(subject).to be_empty
56
- end
57
-
58
- it 'should locate the entry for a given reference variable' do
59
- statement1 = double(ForStatement, :reference => 'I')
60
- statement2 = double(ForStatement, :reference => 'J')
61
- subject.push statement1
62
- subject.push statement2
63
- expect(subject['I']).to eq statement1
64
- expect(subject['J']).to eq statement2
65
- expect(subject['K']).to be_nil
66
- end
67
-
68
- end
69
-
70
- end
@@ -1,143 +0,0 @@
1
- require_relative 'spec_helper'
2
-
3
- module Basic101
4
-
5
- describe InputReader do
6
-
7
- let(:input) {double Input, :read_line => line}
8
- subject(:input_reader) {described_class.new(input)}
9
-
10
- context 'invalid csv' do
11
- let(:line) {%Q'"abc'}
12
- specify do
13
- expect {
14
- input_reader
15
- }.to raise_error BadInputFormatError, "Invalid format"
16
- end
17
- end
18
-
19
- describe '#read_string' do
20
-
21
- context 'when unquoted' do
22
- let(:line) {%Q'abc,123'}
23
- specify do
24
- expect(input_reader.read_string).to eq 'abc'
25
- end
26
- end
27
-
28
- context 'with comma' do
29
- let(:line) {%Q'"abc,def",123'}
30
- specify do
31
- expect(input_reader.read_string).to eq 'abc,def'
32
- end
33
- end
34
-
35
- context 'with quote' do
36
- let(:line) {%Q'"abc""def",123'}
37
- specify do
38
- expect(input_reader.read_string).to eq 'abc"def'
39
- end
40
- end
41
-
42
- context 'when blank' do
43
- let(:line) {",abc"}
44
- specify do
45
- expect(input_reader.read_string).to eq ''
46
- end
47
- end
48
-
49
- context 'when end of line' do
50
- let(:line) {""}
51
- specify do
52
- expect(input_reader.read_string).to eq ''
53
- end
54
- end
55
-
56
- context 'when past end of line' do
57
- let(:line) {''}
58
- specify do
59
- input_reader.read_string
60
- expect {
61
- input_reader.read_string
62
- }.to raise_error TooFewInputItemsError, "Too few items"
63
- end
64
- end
65
-
66
- end
67
-
68
- describe '#read_numeric' do
69
-
70
- context 'when integer' do
71
- let(:line) {"123,abc"}
72
- specify do
73
- expect(input_reader.read_numeric).to eq 123
74
- end
75
- end
76
-
77
- context 'when positive integer' do
78
- let(:line) {"+123,abc"}
79
- specify do
80
- expect(input_reader.read_numeric).to eq 123
81
- end
82
- end
83
-
84
- context 'when negative integer' do
85
- let(:line) {"-123,abc"}
86
- specify do
87
- expect(input_reader.read_numeric).to eq -123
88
- end
89
- end
90
-
91
- context 'when float' do
92
- let(:line) {"1.2,abc"}
93
- specify do
94
- expect(input_reader.read_numeric).to be_within(0.000001).of(1.2)
95
- end
96
- end
97
-
98
- context 'when positive float' do
99
- let(:line) {"+1.2,abc"}
100
- specify do
101
- expect(input_reader.read_numeric).to be_within(0.000001).of(1.2)
102
- end
103
- end
104
-
105
- context 'when negative float' do
106
- let(:line) {"-1.2,abc"}
107
- specify do
108
- expect(input_reader.read_numeric).to be_within(0.000001).of(-1.2)
109
- end
110
- end
111
-
112
- context 'when not numeric' do
113
- let(:line) {"abc"}
114
- specify do
115
- expect {
116
- input_reader.read_numeric
117
- }.to raise_error BadInputFormatError, 'Not numeric: "abc"'
118
- end
119
- end
120
-
121
- context 'when blank' do
122
- let(:line) {",123"}
123
- specify do
124
- expect {
125
- input_reader.read_numeric
126
- }.to raise_error BadInputFormatError, 'Not numeric: ""'
127
- end
128
- end
129
-
130
- context 'whe end of line' do
131
- let(:line) {""}
132
- specify do
133
- expect {
134
- input_reader.read_numeric
135
- }.to raise_error TooFewInputItemsError, "Too few items"
136
- end
137
- end
138
-
139
- end
140
-
141
- end
142
-
143
- end