basic101 0.2.0 → 1.0.1

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