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,5 +0,0 @@
1
- -1
2
- -1
3
- -1
4
- -1.1
5
- 1
@@ -1,4 +0,0 @@
1
- 10 PRINT TAB(10); "A"; TAB(20); "B"
2
- 20 PRINT TAB(20);
3
- 30 PRINT "C"; TAB(10); "D"
4
- 50 PRINT TAB(0); "X"
File without changes
@@ -1,3 +0,0 @@
1
- A B
2
- CD
3
- X
@@ -1 +0,0 @@
1
- 10 PRINT TAN(3.14159265 / 8)
File without changes
@@ -1 +0,0 @@
1
- 0.4142136
@@ -1,3 +0,0 @@
1
- 10 PRINT VAL("123")
2
- 20 PRINT VAL("123.45")
3
- 30 PRINT VAL(" -1 ")
File without changes
@@ -1,3 +0,0 @@
1
- 123
2
- 123.45
3
- -1
@@ -1,128 +0,0 @@
1
- require_relative 'spec_helper'
2
-
3
- module Basic101
4
-
5
- describe ArgumentChecker do
6
-
7
- subject {described_class.new(args, required_types, optional_types)}
8
-
9
- context 'when takes [string]' do
10
-
11
- let(:required_types) {[BasicString]}
12
- let(:optional_types) {[]}
13
-
14
- context 'when given [string]' do
15
- let(:args) {[BasicString.new('')]}
16
- specify do
17
- expect{subject.check}.to_not raise_error
18
- end
19
- end
20
-
21
- context 'when given []' do
22
- let(:args) {[]}
23
- specify do
24
- expect do
25
- subject.check
26
- end.to raise_error InvalidArgumentError,
27
- 'Wrong number of arguments (0 instead of 1)'
28
- end
29
- end
30
-
31
- context 'when given [string, string]' do
32
- let(:args) {[BasicString.new(''), BasicString.new('')]}
33
- specify do
34
- expect do
35
- subject.check
36
- end.to raise_error InvalidArgumentError,
37
- 'Wrong number of arguments (2 instead of 1)'
38
- end
39
- end
40
-
41
- context 'when given [integer]' do
42
- let(:args) {[BasicInteger.new('')]}
43
- specify do
44
- expect do
45
- subject.check
46
- end.to raise_error InvalidArgumentError,
47
- 'Expected string but got integer'
48
- end
49
- end
50
-
51
- end
52
-
53
- context 'when takes [integer, integer?]' do
54
-
55
- let(:required_types) {[BasicInteger]}
56
- let(:optional_types) {[BasicInteger]}
57
-
58
- context 'when given [integer]' do
59
- let(:args) {[BasicInteger.new(0)]}
60
- specify do
61
- expect do
62
- subject.check
63
- end.to_not raise_error
64
- end
65
- end
66
-
67
- context 'when given [integer, integer]' do
68
- let(:args) {[BasicInteger.new(0), BasicInteger.new(0)]}
69
- specify do
70
- expect{subject.check}.to_not raise_error
71
- end
72
- end
73
-
74
- context 'when given []' do
75
- let(:args) {[]}
76
- specify do
77
- expect do
78
- subject.check
79
- end.to raise_error InvalidArgumentError,
80
- 'Wrong number of arguments (0 instead of 1..2)'
81
- end
82
- end
83
-
84
- context 'when given [integer, integer, integer]' do
85
- let(:args) {3.times.map {BasicInteger.new(0)}}
86
- specify do
87
- expect do
88
- subject.check
89
- end.to raise_error InvalidArgumentError,
90
- 'Wrong number of arguments (3 instead of 1..2)'
91
- end
92
- end
93
-
94
- context 'when given [integer]' do
95
- let(:args) {[BasicString.new('')]}
96
- specify do
97
- expect do
98
- subject.check
99
- end.to raise_error InvalidArgumentError,
100
- 'Expected integer but got string'
101
- end
102
- end
103
-
104
- context 'when given [integer, string]' do
105
- let(:args) {[BasicString.new('')]}
106
- specify do
107
- expect do
108
- subject.check
109
- end.to raise_error InvalidArgumentError,
110
- 'Expected integer but got string'
111
- end
112
- end
113
-
114
- context 'when given [string, string]' do
115
- let(:args) {[BasicString.new('')]}
116
- specify do
117
- expect do
118
- subject.check
119
- end.to raise_error InvalidArgumentError,
120
- 'Expected integer but got string'
121
- end
122
- end
123
-
124
- end
125
-
126
- end
127
-
128
- end
@@ -1,100 +0,0 @@
1
- require_relative 'spec_helper'
2
-
3
- module Basic101
4
-
5
- describe BasicArray do
6
-
7
- let(:default) {BasicInteger.new(0)}
8
- subject {BasicArray.new(num_dimensions, default)}
9
-
10
- describe 'default dimensions' do
11
-
12
- context 'when 1 dimension' do
13
- let(:num_dimensions) {1}
14
- it 'should set each element to the default' do
15
- expect(subject.get([0])).to eq default
16
- expect(subject.get([10])).to eq default
17
- end
18
- end
19
-
20
- context 'when 2 dimensions' do
21
- let(:num_dimensions) {2}
22
- it 'should set each element to the default' do
23
- expect(subject.get([0, 0])).to eq default
24
- expect(subject.get([0, 10])).to eq default
25
- expect(subject.get([10, 0])).to eq default
26
- expect(subject.get([10, 10])).to eq default
27
- end
28
- end
29
-
30
- end
31
-
32
- describe '#dimension' do
33
-
34
- context 'when normal' do
35
- let(:num_dimensions) {2}
36
- before(:each) {subject.dimension([2, 3])}
37
- it 'should set each element to the default' do
38
- expect(subject.get([0, 0])).to eq default
39
- expect(subject.get([0, 3])).to eq default
40
- expect(subject.get([2, 0])).to eq default
41
- expect(subject.get([2, 3])).to eq default
42
- end
43
- end
44
-
45
- context 'max index 0' do
46
- let(:num_dimensions) {1}
47
- before(:each) {subject.dimension([0])}
48
- specify do
49
- expect(subject.get([0])).to eq default
50
- end
51
- end
52
-
53
- context 'negative max index' do
54
- let(:num_dimensions) {1}
55
- specify do
56
- expect{subject.dimension([-1])}.to raise_error ArraySizeError
57
- end
58
- end
59
-
60
- end
61
-
62
- describe '#set' do
63
- let(:num_dimensions) {2}
64
- before(:each) do
65
- subject.dimension([1, 1])
66
- subject.set([0, 0], BasicInteger.new(1))
67
- subject.set([0, 1], BasicInteger.new(2))
68
- subject.set([1, 0], BasicInteger.new(3))
69
- subject.set([1, 1], BasicInteger.new(4))
70
- end
71
- specify {expect(subject.get([0, 0])).to eq BasicInteger.new(1)}
72
- specify {expect(subject.get([0, 1])).to eq BasicInteger.new(2)}
73
- specify {expect(subject.get([1, 0])).to eq BasicInteger.new(3)}
74
- specify {expect(subject.get([1, 1])).to eq BasicInteger.new(4)}
75
- end
76
-
77
- describe 'bounds checking' do
78
-
79
- let(:num_dimensions) {2}
80
-
81
- it 'should reject negative indices' do
82
- expect{subject.get([0, -1])}.to raise_error IndexError
83
- end
84
-
85
- it 'should reject too few indices' do
86
- expect{subject.get([0])}.to raise_error IndexError
87
- end
88
-
89
- it 'should reject too many indices' do
90
- expect{subject.get([0, 0, 0])}.to raise_error IndexError
91
- end
92
-
93
- it 'should reject too large an index' do
94
- expect{subject.get([0, 11])}.to raise_error IndexError
95
- end
96
- end
97
-
98
- end
99
-
100
- end
@@ -1,168 +0,0 @@
1
- require_relative 'spec_helper'
2
-
3
- module Basic101
4
-
5
- describe BasicFloat do
6
-
7
- it_should_behave_like 'a basic numeric'
8
-
9
- describe '#simplest' do
10
-
11
- context 'when no fractional part' do
12
- it 'should return a basic integer' do
13
- a = described_class.new(12.0)
14
- b = a.simplest
15
- expect(b).to eq BasicInteger.new(12)
16
- end
17
- end
18
-
19
- context 'when fractional part' do
20
- it 'should return itself' do
21
- a = described_class.new(12.34)
22
- b = a.simplest
23
- expect(b).to eq a
24
- end
25
- end
26
-
27
- end
28
-
29
- describe 'type_name' do
30
- let(:type_name) {'float'}
31
- subject {described_class.new(0)}
32
- specify {expect(subject.class.type_name).to eq type_name}
33
- specify {expect(subject.type_name).to eq type_name}
34
- end
35
-
36
- describe '.from_s' do
37
-
38
- context 'when fixed-point' do
39
- specify do
40
- a = '1.2'
41
- b = described_class.from_s(a)
42
- expect(b.value).to eq 1.2
43
- end
44
- end
45
-
46
- context 'when exponential' do
47
- specify do
48
- a = '-1.2E-2'
49
- b = described_class.from_s(a)
50
- expect(b.value).to eq -1.2E-2
51
- end
52
- end
53
-
54
- context 'when no leading digits' do
55
- specify do
56
- a = '.2'
57
- b = described_class.from_s(a)
58
- expect(b.value).to eq 0.2
59
- end
60
- end
61
-
62
- context 'when no trailing digits' do
63
- specify do
64
- a = '2.'
65
- b = described_class.from_s(a)
66
- expect(b.value).to eq 2.0
67
- end
68
- end
69
-
70
- end
71
-
72
- describe '#to_integer' do
73
- specify do
74
- a = described_class.new(2.6)
75
- expect(a.to_integer).to eq BasicInteger.new(2)
76
- end
77
- end
78
-
79
- describe '#to_float' do
80
- specify do
81
- a = described_class.new(2.6)
82
- expect(a.to_float).to eq a
83
- end
84
- end
85
-
86
- describe '#to_string' do
87
- specify do
88
- a = described_class.new(2.6)
89
- expect{a.to_string}.to raise_error TypeError
90
- end
91
- end
92
-
93
- describe '#and' do
94
- specify do
95
- a = described_class.new(0b1100)
96
- b = BasicInteger.new(0b0110)
97
- c = a.and(b)
98
- expect(c).to eq BasicInteger.new(0b0100)
99
- end
100
- end
101
-
102
- describe '#or' do
103
- specify do
104
- a = described_class.new(0b1100)
105
- b = BasicInteger.new(0b0110)
106
- c = a.or(b)
107
- expect(c).to eq BasicInteger.new(0b1110)
108
- end
109
- end
110
-
111
- describe '#not' do
112
- specify do
113
- a = described_class.new(10)
114
- b = a.not
115
- expect(b).to eq BasicInteger.new(-11)
116
- end
117
- end
118
-
119
- describe '#floor' do
120
- specify do
121
- a = described_class.new(-1.5)
122
- b = a.floor
123
- expect(b).to eq BasicInteger.new(-2.0)
124
- end
125
- end
126
-
127
- describe '#abs' do
128
-
129
- it 'should turn negative into positive' do
130
- a = described_class.new(-1.5)
131
- b = a.abs
132
- expect(b).to eq described_class.new(1.5)
133
- end
134
-
135
- it 'should leave positive alone' do
136
- a = described_class.new(1.5)
137
- b = a.abs
138
- expect(b).to eq described_class.new(1.5)
139
- end
140
-
141
- end
142
-
143
- describe '#sqr' do
144
- specify do
145
- a = described_class.new(2)
146
- b = a.sqr
147
- expect(b).to eq described_class.new(2 ** 0.5)
148
- end
149
- end
150
-
151
- describe '#exp' do
152
- specify do
153
- a = described_class.new(1.5)
154
- b = a.exp
155
- expect(b).to eq described_class.new(Math::E ** 1.5)
156
- end
157
- end
158
-
159
- describe '#str' do
160
- specify do
161
- a = described_class.new(-12.34)
162
- expect(a.str).to eq BasicString.new('-12.34')
163
- end
164
- end
165
-
166
- end
167
-
168
- end
@@ -1,270 +0,0 @@
1
- require_relative 'spec_helper'
2
-
3
- module Basic101
4
-
5
- describe BasicInteger do
6
-
7
- it_should_behave_like 'a basic numeric'
8
-
9
- describe '#simplest' do
10
- it 'should return itself' do
11
- a = BasicInteger.new(1)
12
- b = a.simplest
13
- expect(b).to eq a
14
- end
15
- end
16
-
17
- describe '.from_bool' do
18
-
19
- it 'should convert true to basic -1' do
20
- a = BasicInteger.from_bool(true)
21
- expect(a).to eq BasicInteger.new(-1)
22
- end
23
-
24
- it 'should convert false to basic 0' do
25
- a = BasicInteger.from_bool(false)
26
- expect(a).to eq BasicInteger.new(0)
27
- end
28
-
29
- end
30
-
31
- describe 'type_name' do
32
- let(:type_name) {'integer'}
33
- subject {described_class.new(0)}
34
- specify {expect(subject.class.type_name).to eq type_name}
35
- specify {expect(subject.type_name).to eq type_name}
36
- end
37
-
38
- describe '#str' do
39
- specify do
40
- a = BasicInteger.new(-12)
41
- expect(a.str).to eq BasicString.new('-12')
42
- end
43
- end
44
-
45
- describe '#to_integer' do
46
- specify do
47
- a = BasicInteger.new(1)
48
- expect(a.to_integer).to eq a
49
- end
50
- end
51
-
52
- describe '#to_float' do
53
- specify do
54
- a = BasicInteger.new(1)
55
- expect(a.to_float).to eq BasicFloat.new(1)
56
- end
57
- end
58
-
59
- describe '#to_string' do
60
- specify do
61
- a = BasicInteger.new(1)
62
- expect {a.to_string}.to raise_error TypeError
63
- end
64
- end
65
-
66
- describe '#and' do
67
-
68
- context 'when 0, 0' do
69
- specify do
70
- a = BasicInteger.new(0)
71
- b = BasicInteger.new(0)
72
- c = a.and(b)
73
- expect(c).to eq BasicInteger.new(0)
74
- end
75
- end
76
-
77
- context 'when 0, -1' do
78
- specify do
79
- a = BasicInteger.new(0)
80
- b = BasicInteger.new(-1)
81
- c = a.and(b)
82
- expect(c).to eq BasicInteger.new(0)
83
- end
84
- end
85
-
86
- context 'when -1, 0' do
87
- specify do
88
- a = BasicInteger.new(-1)
89
- b = BasicInteger.new(0)
90
- c = a.and(b)
91
- expect(c).to eq BasicInteger.new(0)
92
- end
93
- end
94
-
95
- context 'when -1, -1' do
96
- specify do
97
- a = BasicInteger.new(-1)
98
- b = BasicInteger.new(-1)
99
- c = a.and(b)
100
- expect(c).to eq BasicInteger.new(-1)
101
- end
102
- end
103
-
104
- context 'when bitwise' do
105
- specify do
106
- a = BasicInteger.new(0b1100)
107
- b = BasicInteger.new(0b0110)
108
- c = a.and(b)
109
- expect(c).to eq BasicInteger.new(0b0100)
110
- end
111
- end
112
-
113
- context 'when float' do
114
- specify do
115
- a = BasicFloat.new(0b11)
116
- b = BasicFloat.new(-1.5)
117
- c = a.and(b)
118
- expect(c).to eq BasicInteger.new(0b11)
119
- end
120
- end
121
-
122
- end
123
-
124
- describe '#or' do
125
-
126
- context 'when 0, 0' do
127
- specify do
128
- a = BasicInteger.new(0)
129
- b = BasicInteger.new(0)
130
- c = a.or(b)
131
- expect(c).to eq BasicInteger.new(0)
132
- end
133
- end
134
-
135
- context 'when 0, -1' do
136
- specify do
137
- a = BasicInteger.new(0)
138
- b = BasicInteger.new(-1)
139
- c = a.or(b)
140
- expect(c).to eq BasicInteger.new(-1)
141
- end
142
- end
143
-
144
- context 'when -1, 0' do
145
- specify do
146
- a = BasicInteger.new(-1)
147
- b = BasicInteger.new(0)
148
- c = a.or(b)
149
- expect(c).to eq BasicInteger.new(-1)
150
- end
151
- end
152
-
153
- context 'when -1, -1' do
154
- specify do
155
- a = BasicInteger.new(-1)
156
- b = BasicInteger.new(-1)
157
- c = a.or(b)
158
- expect(c).to eq BasicInteger.new(-1)
159
- end
160
- end
161
-
162
- context 'when bitwise' do
163
- specify do
164
- a = BasicInteger.new(0b1100)
165
- b = BasicInteger.new(0b0110)
166
- c = a.or(b)
167
- expect(c).to eq BasicInteger.new(0b1110)
168
- end
169
- end
170
-
171
- context 'when float' do
172
- specify do
173
- a = BasicFloat.new(1)
174
- b = BasicFloat.new(-2.2)
175
- c = a.or(b)
176
- expect(c).to eq BasicInteger.new(-1)
177
- end
178
- end
179
-
180
- end
181
-
182
- describe '#not' do
183
-
184
- context 'when 0' do
185
- specify do
186
- a = BasicInteger.new(0)
187
- b = a.not
188
- expect(b).to eq BasicInteger.new(-1)
189
- end
190
- end
191
-
192
- context 'when -1' do
193
- specify do
194
- a = BasicInteger.new(-1)
195
- b = a.not
196
- expect(b).to eq BasicInteger.new(0)
197
- end
198
- end
199
-
200
- context 'when bitwise' do
201
- specify do
202
- a = BasicInteger.new(123)
203
- b = a.not
204
- expect(b).to eq BasicInteger.new(-124)
205
- end
206
- end
207
-
208
- end
209
-
210
- describe '#chr' do
211
-
212
- context 'normal' do
213
- specify do
214
- a = BasicInteger.new(65)
215
- b = a.chr
216
- expect(b).to eq BasicString.new("A")
217
- end
218
- end
219
-
220
- context 'value too small' do
221
- specify do
222
- a = BasicInteger.new(-1)
223
- expect {a.chr}.to raise_error InvalidArgumentError
224
- end
225
- end
226
-
227
- context 'value too large' do
228
- specify do
229
- a = BasicInteger.new(256)
230
- expect {a.chr}.to raise_error InvalidArgumentError
231
- end
232
- end
233
-
234
- end
235
-
236
- describe '#abs' do
237
-
238
- it 'should turn negative into positive' do
239
- a = BasicInteger.new(-1)
240
- b = a.abs
241
- expect(b).to eq BasicInteger.new(1)
242
- end
243
-
244
- it 'should leave positive alone' do
245
- a = BasicInteger.new(1)
246
- b = a.abs
247
- expect(b).to eq BasicInteger.new(1)
248
- end
249
-
250
- end
251
-
252
- describe '#sqr' do
253
- specify do
254
- a = BasicInteger.new(4)
255
- b = a.sqr
256
- expect(b).to eq BasicInteger.new(2)
257
- end
258
- end
259
-
260
- describe '#exp' do
261
- specify do
262
- a = BasicInteger.new(4)
263
- b = a.exp
264
- expect(b).to eq BasicFloat.new(Math::E ** 4)
265
- end
266
- end
267
-
268
- end
269
-
270
- end