cucumber 0.1.10 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. data/History.txt +223 -5
  2. data/License.txt +1 -1
  3. data/Manifest.txt +174 -85
  4. data/README.txt +2 -39
  5. data/Rakefile +1 -2
  6. data/bin/cucumber +2 -2
  7. data/config/hoe.rb +9 -3
  8. data/examples/cs/README.textile +1 -22
  9. data/examples/cs/Rakefile +1 -1
  10. data/examples/cs/compile.bat +1 -0
  11. data/examples/cs/features/addition.feature +16 -0
  12. data/examples/cs/features/step_definitons/calculator_steps.rb +19 -0
  13. data/examples/cs/src/demo/Calculator.cs +20 -0
  14. data/examples/i18n/README.textile +1 -1
  15. data/examples/i18n/Rakefile +20 -4
  16. data/examples/i18n/ar/features/addition.feature +10 -11
  17. data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +4 -12
  18. data/examples/i18n/da/features/step_definitons/kalkulator_steps.rb +4 -2
  19. data/examples/i18n/de/features/addition.feature +10 -11
  20. data/examples/i18n/de/features/division.feature +0 -1
  21. data/examples/i18n/de/features/step_definitons/calculator_steps.rb +5 -11
  22. data/examples/i18n/en/features/addition.feature +10 -11
  23. data/examples/i18n/en/features/division.feature +0 -1
  24. data/examples/i18n/en/features/step_definitons/calculator_steps.rb +5 -12
  25. data/examples/i18n/en-lol/Rakefile +6 -0
  26. data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +16 -0
  27. data/examples/i18n/en-lol/features/stuffing.feature +8 -0
  28. data/examples/i18n/en-lol/features/support/env.rb +8 -0
  29. data/examples/i18n/en-lol/lib/basket.rb +12 -0
  30. data/examples/i18n/en-lol/lib/belly.rb +11 -0
  31. data/examples/i18n/es/features/adicion.feature +11 -12
  32. data/examples/i18n/es/features/step_definitons/calculador_steps.rb +10 -11
  33. data/examples/i18n/es/lib/calculador.rb +4 -1
  34. data/examples/i18n/et/features/jagamine.feature +9 -0
  35. data/examples/i18n/et/features/liitmine.feature +10 -11
  36. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +7 -9
  37. data/examples/i18n/et/lib/kalkulaator.rb +5 -1
  38. data/examples/i18n/fi/Rakefile +6 -0
  39. data/examples/i18n/fi/features/jakolasku.feature +9 -0
  40. data/examples/i18n/fi/features/step_definitons/laskin_steps.rb +24 -0
  41. data/examples/i18n/fi/features/yhteenlasku.feature +16 -0
  42. data/examples/i18n/fi/lib/laskin.rb +14 -0
  43. data/examples/i18n/fr/features/addition.feature +16 -12
  44. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +14 -11
  45. data/examples/i18n/fr/lib/calculatrice.rb +1 -1
  46. data/examples/i18n/id/features/addition.feature +10 -11
  47. data/examples/i18n/id/features/division.feature +0 -1
  48. data/examples/i18n/id/features/step_definitons/calculator_steps.rb +5 -12
  49. data/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +4 -2
  50. data/examples/i18n/ja/features/addition.feature +10 -11
  51. data/examples/i18n/ja/features/division.feature +2 -3
  52. data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +6 -12
  53. data/examples/i18n/ko/Rakefile +6 -0
  54. data/examples/i18n/ko/features/addition.feature +16 -0
  55. data/examples/i18n/ko/features/division.feature +10 -0
  56. data/examples/i18n/ko/features/step_definitons/calculator_steps.rb +24 -0
  57. data/examples/i18n/ko/lib/calculator.rb +14 -0
  58. data/examples/i18n/lt/features/addition.feature +11 -11
  59. data/examples/i18n/lt/features/division.feature +0 -1
  60. data/examples/i18n/lt/features/step_definitons/calculator_steps.rb +5 -12
  61. data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +4 -9
  62. data/examples/i18n/no/features/summering.feature +1 -0
  63. data/examples/i18n/no/features/support/env.rb +6 -0
  64. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +4 -2
  65. data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +4 -2
  66. data/examples/i18n/ru/Rakefile +6 -0
  67. data/examples/i18n/ru/features/addition.feature +10 -0
  68. data/examples/i18n/ru/features/consecutive_calculations.feature +16 -0
  69. data/examples/i18n/ru/features/division.feature +15 -0
  70. data/examples/i18n/ru/features/step_definitons/calculator_steps.rb +19 -0
  71. data/examples/i18n/ru/features/support/env.rb +6 -0
  72. data/examples/i18n/ru/features/support/world.rb +7 -0
  73. data/examples/i18n/ru/lib/calculator.rb +24 -0
  74. data/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +4 -2
  75. data/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +5 -3
  76. data/examples/i18n/zh-TW/Rakefile +6 -0
  77. data/examples/i18n/zh-TW/features/addition.feature +16 -0
  78. data/examples/i18n/zh-TW/features/division.feature +10 -0
  79. data/examples/i18n/zh-TW/features/step_definitons/calculator_steps.rb +24 -0
  80. data/examples/i18n/zh-TW/lib/calculator.rb +14 -0
  81. data/examples/java/features/step_definitons/hello_steps.rb +1 -1
  82. data/examples/java/features/step_definitons/tree_steps.rb +1 -1
  83. data/examples/jbehave/README.textile +20 -0
  84. data/examples/jbehave/features/support/env.rb +7 -0
  85. data/examples/jbehave/features/trading.feature +28 -0
  86. data/examples/jbehave/pom.xml +53 -0
  87. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/converters/TraderConverter.java +32 -0
  88. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/model/Stock.java +42 -0
  89. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/model/Trader.java +29 -0
  90. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/persistence/TraderPersister.java +22 -0
  91. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/scenarios/TraderSteps.java +70 -0
  92. data/examples/selenium/features/search.feature +1 -1
  93. data/examples/selenium/features/step_definitons/search_steps.rb +13 -0
  94. data/examples/selenium/features/support/env.rb +19 -0
  95. data/examples/selenium_webrat/features/search.feature +9 -0
  96. data/examples/selenium_webrat/features/step_definitons/search_steps.rb +13 -0
  97. data/examples/selenium_webrat/features/support/env.rb +41 -0
  98. data/examples/self_test/README.textile +6 -0
  99. data/examples/self_test/Rakefile +6 -0
  100. data/examples/self_test/features/background/failing_background.feature +11 -0
  101. data/examples/self_test/features/background/failing_background_after_success.feature +11 -0
  102. data/examples/self_test/features/background/multiline_args_background.feature +32 -0
  103. data/examples/self_test/features/background/passing_background.feature +10 -0
  104. data/examples/self_test/features/background/pending_background.feature +10 -0
  105. data/examples/self_test/features/background/scenario_outline_failing_background.feature +16 -0
  106. data/examples/self_test/features/background/scenario_outline_passing_background.feature +16 -0
  107. data/examples/self_test/features/call_undefined_step_from_step_def.feature +7 -0
  108. data/examples/self_test/features/failing_expectation.feature +4 -0
  109. data/examples/self_test/features/lots_of_undefined.feature +8 -0
  110. data/examples/self_test/features/outline_sample.feature +15 -0
  111. data/examples/self_test/features/sample.feature +19 -0
  112. data/examples/self_test/features/step_definitions/sample_steps.rb +64 -0
  113. data/examples/self_test/features/support/env.rb +1 -0
  114. data/examples/self_test/features/support/tag_count_formatter.rb +25 -0
  115. data/examples/sinatra/Rakefile +6 -0
  116. data/examples/sinatra/app.rb +14 -0
  117. data/examples/sinatra/features/add.feature +11 -0
  118. data/examples/sinatra/features/step_definitions/add_steps.rb +15 -0
  119. data/examples/sinatra/features/support/env.rb +20 -0
  120. data/examples/sinatra/views/add.erb +5 -0
  121. data/examples/sinatra/views/layout.erb +8 -0
  122. data/examples/tickets/Rakefile +13 -8
  123. data/examples/tickets/cucumber.yml +2 -1
  124. data/examples/tickets/features/172.feature +28 -0
  125. data/examples/tickets/features/177/1.feature +29 -0
  126. data/examples/tickets/features/177/2.feature +21 -0
  127. data/examples/tickets/features/177/3.feature +18 -0
  128. data/examples/tickets/features/180.feature +7 -0
  129. data/examples/tickets/features/236.feature +13 -0
  130. data/examples/tickets/features/241.feature +13 -0
  131. data/examples/tickets/features/lib/eatting_machine.rb +18 -0
  132. data/examples/tickets/features/lib/pantry.rb +20 -0
  133. data/examples/tickets/features/scenario_outline.feature +95 -0
  134. data/examples/tickets/features/step_definitons/scenario_outline_steps.rb +42 -0
  135. data/examples/tickets/features/step_definitons/tickets_steps.rb +46 -5
  136. data/examples/tickets/features/tickets.feature +5 -1
  137. data/examples/watir/README.textile +16 -0
  138. data/examples/watir/features/step_definitons/search_steps.rb +24 -0
  139. data/examples/watir/features/support/env.rb +32 -0
  140. data/features/background.feature +221 -0
  141. data/features/cucumber_cli.feature +389 -0
  142. data/features/cucumber_cli_diff_disabled.feature +45 -0
  143. data/features/cucumber_cli_outlines.feature +81 -0
  144. data/features/custom_formatter.feature +11 -0
  145. data/features/report_called_undefined_steps.feature +34 -0
  146. data/features/step_definitions/cucumber_steps.rb +30 -0
  147. data/features/step_definitions/extra_steps.rb +2 -0
  148. data/features/support/env.rb +8 -0
  149. data/gem_tasks/deployment.rake +0 -23
  150. data/gem_tasks/features.rake +1 -1
  151. data/gem_tasks/fix_cr_lf.rake +1 -1
  152. data/gem_tasks/flog.rake +1 -1
  153. data/gem_tasks/gemspec.rake +4 -0
  154. data/gem_tasks/jar.rake +67 -0
  155. data/gem_tasks/rspec.rake +31 -15
  156. data/gem_tasks/yard.rake +8 -0
  157. data/lib/autotest/cucumber_mixin.rb +41 -25
  158. data/lib/cucumber/ast/background.rb +50 -0
  159. data/lib/cucumber/ast/comment.rb +26 -0
  160. data/lib/cucumber/ast/examples.rb +38 -0
  161. data/lib/cucumber/ast/feature.rb +62 -0
  162. data/lib/cucumber/ast/feature_element.rb +46 -0
  163. data/lib/cucumber/ast/features.rb +20 -0
  164. data/lib/cucumber/ast/outline_table.rb +81 -0
  165. data/lib/cucumber/ast/py_string.rb +58 -0
  166. data/lib/cucumber/ast/scenario.rb +64 -0
  167. data/lib/cucumber/ast/scenario_outline.rb +90 -0
  168. data/lib/cucumber/ast/step.rb +122 -0
  169. data/lib/cucumber/ast/step_collection.rb +66 -0
  170. data/lib/cucumber/ast/step_invocation.rb +110 -0
  171. data/lib/cucumber/ast/table.rb +318 -0
  172. data/lib/cucumber/ast/tags.rb +33 -0
  173. data/lib/cucumber/ast/visitor.rb +125 -0
  174. data/lib/cucumber/ast.rb +29 -0
  175. data/lib/cucumber/broadcaster.rb +2 -9
  176. data/lib/cucumber/cli/configuration.rb +364 -0
  177. data/lib/cucumber/cli/language_help_formatter.rb +59 -0
  178. data/lib/cucumber/cli/main.rb +109 -0
  179. data/lib/cucumber/core_ext/exception.rb +53 -0
  180. data/lib/cucumber/core_ext/instance_exec.rb +54 -0
  181. data/lib/cucumber/core_ext/proc.rb +29 -65
  182. data/lib/cucumber/core_ext/string.rb +26 -0
  183. data/lib/cucumber/formatter/ansicolor.rb +102 -0
  184. data/lib/cucumber/formatter/color_io.rb +23 -0
  185. data/lib/cucumber/formatter/console.rb +109 -0
  186. data/lib/cucumber/formatter/cucumber.css +55 -0
  187. data/lib/cucumber/formatter/cucumber.sass +49 -0
  188. data/lib/cucumber/formatter/html.rb +133 -0
  189. data/lib/cucumber/formatter/pretty.rb +179 -0
  190. data/lib/cucumber/formatter/profile.rb +77 -0
  191. data/lib/cucumber/formatter/progress.rb +60 -0
  192. data/lib/cucumber/formatter/rerun.rb +35 -0
  193. data/lib/cucumber/formatter/unicode.rb +35 -0
  194. data/lib/cucumber/formatter.rb +1 -0
  195. data/lib/cucumber/formatters/unicode.rb +2 -0
  196. data/lib/cucumber/jbehave.rb +97 -0
  197. data/lib/cucumber/languages.yml +214 -72
  198. data/lib/cucumber/parser/basic.rb +0 -0
  199. data/lib/cucumber/parser/feature.rb +1487 -0
  200. data/lib/cucumber/parser/feature.tt +193 -0
  201. data/lib/cucumber/parser/i18n.tt +31 -0
  202. data/lib/cucumber/parser/table.rb +402 -0
  203. data/lib/cucumber/parser/table.tt +59 -0
  204. data/lib/cucumber/parser/treetop_ext.rb +75 -0
  205. data/lib/cucumber/parser.rb +43 -0
  206. data/lib/cucumber/platform.rb +13 -8
  207. data/lib/cucumber/rails/rspec.rb +6 -10
  208. data/lib/cucumber/rails/world.rb +8 -8
  209. data/lib/cucumber/rake/task.rb +46 -9
  210. data/lib/cucumber/step_definition.rb +103 -0
  211. data/lib/cucumber/step_match.rb +49 -0
  212. data/lib/cucumber/step_mother.rb +184 -65
  213. data/lib/cucumber/version.rb +4 -3
  214. data/lib/cucumber/world.rb +53 -0
  215. data/lib/cucumber.rb +45 -21
  216. data/rails_generators/cucumber/cucumber_generator.rb +23 -3
  217. data/rails_generators/cucumber/templates/cucumber +2 -1
  218. data/rails_generators/cucumber/templates/cucumber.rake +13 -5
  219. data/rails_generators/cucumber/templates/env.rb +11 -2
  220. data/rails_generators/cucumber/templates/paths.rb +19 -0
  221. data/rails_generators/cucumber/templates/webrat_steps.rb +60 -40
  222. data/rails_generators/feature/feature_generator.rb +26 -2
  223. data/rails_generators/feature/templates/feature.erb +15 -12
  224. data/rails_generators/feature/templates/steps.erb +14 -16
  225. data/spec/cucumber/ast/background_spec.rb +49 -0
  226. data/spec/cucumber/ast/feature_factory.rb +63 -0
  227. data/spec/cucumber/ast/feature_spec.rb +37 -0
  228. data/spec/cucumber/ast/py_string_spec.rb +47 -0
  229. data/spec/cucumber/ast/scenario_outline_spec.rb +67 -0
  230. data/spec/cucumber/ast/scenario_spec.rb +65 -0
  231. data/spec/cucumber/ast/step_collection_spec.rb +8 -0
  232. data/spec/cucumber/ast/step_spec.rb +66 -0
  233. data/spec/cucumber/ast/table_spec.rb +149 -0
  234. data/spec/cucumber/ast/tags_spec.rb +19 -0
  235. data/spec/cucumber/broadcaster_spec.rb +6 -18
  236. data/spec/cucumber/cli/configuration_spec.rb +275 -0
  237. data/spec/cucumber/cli/main_spec.rb +203 -0
  238. data/spec/cucumber/core_ext/proc_spec.rb +27 -35
  239. data/spec/cucumber/core_ext/string_spec.rb +8 -0
  240. data/spec/cucumber/formatter/ansicolor_spec.rb +35 -0
  241. data/spec/cucumber/formatter/color_io_spec.rb +26 -0
  242. data/spec/cucumber/formatter/html/cucumber.css +37 -0
  243. data/spec/cucumber/formatter/html/cucumber.js +13 -0
  244. data/spec/cucumber/formatter/html/index.html +45 -0
  245. data/spec/cucumber/formatter/html/jquery-1.3.min.js +19 -0
  246. data/spec/cucumber/formatter/html/jquery.uitableedit.js +100 -0
  247. data/spec/cucumber/formatters/profile_formatter_spec.rb +22 -16
  248. data/spec/cucumber/parser/feature_parser_spec.rb +282 -0
  249. data/spec/cucumber/parser/table_parser_spec.rb +48 -0
  250. data/spec/cucumber/rails/stubs/mini_rails.rb +4 -3
  251. data/spec/cucumber/step_definition_spec.rb +81 -0
  252. data/spec/cucumber/step_mother_spec.rb +50 -51
  253. data/spec/cucumber/treetop_parser/empty_feature.feature +1 -1
  254. data/spec/cucumber/treetop_parser/empty_scenario_outline.feature +3 -0
  255. data/spec/cucumber/treetop_parser/invalid_scenario_outlines.feature +7 -0
  256. data/spec/cucumber/treetop_parser/multiple_tables.feature +6 -8
  257. data/spec/cucumber/treetop_parser/scenario_outline.feature +16 -0
  258. data/spec/cucumber/treetop_parser/spaces.feature +3 -1
  259. data/spec/cucumber/treetop_parser/with_comments.feature +1 -1
  260. data/spec/cucumber/treetop_parser/with_tags.feature +18 -0
  261. data/spec/cucumber/world/pending_spec.rb +47 -0
  262. data/spec/spec_helper.rb +4 -3
  263. metadata +192 -95
  264. data/TODO.txt +0 -26
  265. data/examples/calculator_ruby_features/features/addition.rb +0 -23
  266. data/examples/calculator_ruby_features/features/step_definitons/calculator_steps.rb +0 -43
  267. data/examples/cs/features/hello.feature +0 -11
  268. data/examples/cs/features/step_definitons/hello_steps.rb +0 -25
  269. data/examples/cs/features/step_definitons/tree_steps.rb +0 -14
  270. data/examples/cs/features/tree.feature +0 -9
  271. data/examples/cs/src/Hello.cs +0 -18
  272. data/examples/i18n/ja/README.txt +0 -5
  273. data/examples/selenium/features/step_definitons/stories_steps.rb +0 -41
  274. data/examples/watir/features/step_definitons/stories_steps.rb +0 -51
  275. data/features/see_features.feature +0 -8
  276. data/features/steps/features_steps.rb +0 -9
  277. data/gem_tasks/treetop.rake +0 -41
  278. data/lib/cucumber/cli.rb +0 -279
  279. data/lib/cucumber/executor.rb +0 -190
  280. data/lib/cucumber/formatters/ansicolor.rb +0 -109
  281. data/lib/cucumber/formatters/autotest_formatter.rb +0 -23
  282. data/lib/cucumber/formatters/cucumber.css +0 -132
  283. data/lib/cucumber/formatters/cucumber.js +0 -11
  284. data/lib/cucumber/formatters/html_formatter.rb +0 -128
  285. data/lib/cucumber/formatters/jquery.js +0 -32
  286. data/lib/cucumber/formatters/pretty_formatter.rb +0 -234
  287. data/lib/cucumber/formatters/profile_formatter.rb +0 -92
  288. data/lib/cucumber/formatters/progress_formatter.rb +0 -58
  289. data/lib/cucumber/formatters.rb +0 -1
  290. data/lib/cucumber/model/table.rb +0 -28
  291. data/lib/cucumber/model.rb +0 -1
  292. data/lib/cucumber/step_methods.rb +0 -49
  293. data/lib/cucumber/tree/feature.rb +0 -63
  294. data/lib/cucumber/tree/features.rb +0 -21
  295. data/lib/cucumber/tree/given_scenario.rb +0 -13
  296. data/lib/cucumber/tree/scenario.rb +0 -174
  297. data/lib/cucumber/tree/step.rb +0 -134
  298. data/lib/cucumber/tree/table.rb +0 -26
  299. data/lib/cucumber/tree/top_down_visitor.rb +0 -23
  300. data/lib/cucumber/tree.rb +0 -18
  301. data/lib/cucumber/treetop_parser/feature.treetop.erb +0 -206
  302. data/lib/cucumber/treetop_parser/feature_ar.rb +0 -1591
  303. data/lib/cucumber/treetop_parser/feature_cy.rb +0 -1591
  304. data/lib/cucumber/treetop_parser/feature_da.rb +0 -1591
  305. data/lib/cucumber/treetop_parser/feature_de.rb +0 -1591
  306. data/lib/cucumber/treetop_parser/feature_en-tx.rb +0 -1591
  307. data/lib/cucumber/treetop_parser/feature_en.rb +0 -1591
  308. data/lib/cucumber/treetop_parser/feature_es.rb +0 -1591
  309. data/lib/cucumber/treetop_parser/feature_et.rb +0 -1591
  310. data/lib/cucumber/treetop_parser/feature_fr.rb +0 -1591
  311. data/lib/cucumber/treetop_parser/feature_id.rb +0 -1591
  312. data/lib/cucumber/treetop_parser/feature_it.rb +0 -1591
  313. data/lib/cucumber/treetop_parser/feature_ja.rb +0 -1591
  314. data/lib/cucumber/treetop_parser/feature_lt.rb +0 -1591
  315. data/lib/cucumber/treetop_parser/feature_nl.rb +0 -1591
  316. data/lib/cucumber/treetop_parser/feature_no.rb +0 -1591
  317. data/lib/cucumber/treetop_parser/feature_parser.rb +0 -34
  318. data/lib/cucumber/treetop_parser/feature_pl.rb +0 -1591
  319. data/lib/cucumber/treetop_parser/feature_pt.rb +0 -1591
  320. data/lib/cucumber/treetop_parser/feature_ro.rb +0 -1591
  321. data/lib/cucumber/treetop_parser/feature_ro2.rb +0 -1591
  322. data/lib/cucumber/treetop_parser/feature_ru.rb +0 -1591
  323. data/lib/cucumber/treetop_parser/feature_se.rb +0 -1591
  324. data/lib/cucumber/treetop_parser/feature_zh-CN.rb +0 -1591
  325. data/script/console +0 -10
  326. data/script/console.cmd +0 -1
  327. data/script/destroy +0 -14
  328. data/script/destroy.cmd +0 -1
  329. data/script/generate +0 -14
  330. data/script/generate.cmd +0 -1
  331. data/script/txt2html +0 -74
  332. data/script/txt2html.cmd +0 -1
  333. data/setup.rb +0 -1585
  334. data/spec/cucumber/cli_spec.rb +0 -274
  335. data/spec/cucumber/executor_spec.rb +0 -298
  336. data/spec/cucumber/formatters/ansicolor_spec.rb +0 -35
  337. data/spec/cucumber/formatters/autotest_formatter_spec.rb +0 -26
  338. data/spec/cucumber/formatters/features.html +0 -269
  339. data/spec/cucumber/formatters/html_formatter_spec.rb +0 -74
  340. data/spec/cucumber/formatters/pretty_formatter_spec.rb +0 -204
  341. data/spec/cucumber/formatters/progress_formatter_spec.rb +0 -65
  342. data/spec/cucumber/model/table_spec.rb +0 -20
  343. data/spec/cucumber/tree/feature_spec.rb +0 -43
  344. data/spec/cucumber/tree/row_scenario_spec.rb +0 -55
  345. data/spec/cucumber/tree/scenario_spec.rb +0 -76
  346. data/spec/cucumber/tree/step_spec.rb +0 -50
  347. data/spec/cucumber/treetop_parser/feature_parser_spec.rb +0 -98
  348. /data/examples/{calculator_ruby_features → selenium_webrat}/Rakefile +0 -0
@@ -0,0 +1,9 @@
1
+ Ominaisuus: Jakolasku
2
+ Välttyäkseen hölmöiltä virheiltä
3
+ Kassanhoitajan on voitava laskea osamäärä
4
+
5
+ Tapaus: Kokonaislukujen jakolasku
6
+ Oletetaan että olen syöttänyt laskimeen luvun 3
7
+ Ja että olen syöttänyt laskimeen luvun 2
8
+ Kun painan "jaa"
9
+ Niin laskimen ruudulla pitäisi näkyä tulos 1.5
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
4
+ require 'cucumber/formatters/unicode'
5
+ require 'laskin'
6
+
7
+ Before do
8
+ @laskin = Laskin.new
9
+ end
10
+
11
+ After do
12
+ end
13
+
14
+ Given /että olen syöttänyt laskimeen luvun (\d+)/ do |n|
15
+ @laskin.pinoa n.to_i
16
+ end
17
+
18
+ When /painan "(\w+)"/ do |op|
19
+ @tulos = @laskin.send op
20
+ end
21
+
22
+ Then /laskimen ruudulla pitäisi näkyä tulos (.*)/ do |tulos|
23
+ @tulos.should == tulos.to_f
24
+ end
@@ -0,0 +1,16 @@
1
+ Ominaisuus: Yhteenlasku
2
+ Välttyäkseni hölmöiltä virheiltä
3
+ Koska olen laskutaidoton
4
+ Haluan että yhteenlaskut lasketaan puolestani
5
+
6
+ Tapausaihio: Kahden luvun summa
7
+ Oletetaan että olen syöttänyt laskimeen luvun 50
8
+ Ja että olen syöttänyt laskimeen luvun 70
9
+ Kun painan "summaa"
10
+ Niin laskimen ruudulla pitäisi näkyä tulos 120
11
+
12
+ Tapaukset:
13
+ | luku_1 | luku_2 | nappi | tulos |
14
+ | 20 | 30 | summaa | 50 |
15
+ | 2 | 5 | summaa | 7 |
16
+ | 0 | 40 | summaa | 40 |
@@ -0,0 +1,14 @@
1
+ class Laskin
2
+ def pinoa(n)
3
+ @args ||= []
4
+ @args << n
5
+ end
6
+
7
+ def summaa
8
+ @args.inject(0){|n,sum| sum+=n}
9
+ end
10
+
11
+ def jaa
12
+ @args[0].to_f / @args[1].to_f
13
+ end
14
+ end
@@ -1,13 +1,17 @@
1
- Fonction: Addition
2
- Afin d'eviter des conneries
3
- Etant un comptable
4
- Je désire additionner deux chiffres
1
+ Fonctionnalité: Addition
2
+ Afin de gagner du temps lors du calcul de la facture
3
+ En tant que commerçant
4
+ Je souhaite pouvoir faire une additionn
5
5
 
6
- Scenario: 7 et 5
7
- Soit que j'ai entré 5
8
- Et que j'ai entré 7
9
-
10
- Scenario: Additionner
11
- SoitScenario: 7 et 5
12
- Lorsque je tape additionner
13
- Alors le reultat doit être 12
6
+ Plan du Scénario: Addition de deux nombres
7
+ Soit une calculatrice
8
+ Et que j'entre <a> pour le premier nombre
9
+ Et que je tape sur la touche "+"
10
+ Et que j'entre <b> pour le second nombre
11
+ Lorsque je tape sur la touche "="
12
+ Alors le résultat affiché doit être <somme>
13
+
14
+ Exemples:
15
+ | a | b | somme |
16
+ | 2 | 2 | 4 |
17
+ | 2 | 3 | 5 |
@@ -1,22 +1,25 @@
1
- require 'spec'
2
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
4
+ require 'cucumber/formatters/unicode'
3
5
  require 'calculatrice'
4
6
 
5
- Before do
6
- @calc = Calulatrice.new
7
+ Soit /^une calculatrice$/ do
8
+ @calc = Calculatrice.new
7
9
  end
8
10
 
9
- After do
11
+ Et /^que j'entre (\d+) pour le (.*) nombre/ do |n, x|
12
+ @calc.push n.to_i
10
13
  end
11
14
 
12
- Given /que j'ai entré (\d+)/ do |n|
13
- @calc.push n.to_i
15
+ Lorsque /^je tape sur la touche "="$/ do
16
+ @expected_result = @calc.additionner
14
17
  end
15
18
 
16
- When 'je tape additionner' do
17
- @result = @calc.additionner
19
+ Alors /le résultat affiché doit être (\d*)/ do |result|
20
+ result.to_i.should == @expected_result
18
21
  end
19
22
 
20
- Then /le reultat doit être (\d*)/ do |result|
21
- @result.should == result.to_i
23
+ Soit /^que je tape sur la touche "\+"$/ do
24
+ # noop
22
25
  end
@@ -1,4 +1,4 @@
1
- class Calulatrice
1
+ class Calculatrice
2
2
  def push(n)
3
3
  @args ||= []
4
4
  @args << n
@@ -3,15 +3,14 @@ Fitur: Addition
3
3
  Sebagai orang yang gak bisa matematika
4
4
  Aku ingin diberi tahu jumlah dua bilangan
5
5
 
6
- Skenario: Menjumlahkan dua bilangan
7
- Dengan aku sudah masukkan 50 ke kalkulator
8
- Dan aku sudah masukkan 70 ke kalkulator
9
- Ketika aku tekan add
10
- Maka hasilnya harus 120 di layar
11
- Dan class hasilnya harus Fixnum
6
+ Skenario konsep: Menjumlahkan dua bilangan
7
+ Dengan aku sudah masukkan <input_1> ke kalkulator
8
+ Dan aku sudah masukkan <input_2> ke kalkulator
9
+ Ketika aku tekan <button>
10
+ Maka hasilnya harus <output> di layar
12
11
 
13
- Contoh Tambahan:
14
- | input_1 | input_2 | button | output | class |
15
- | 20 | 30 | add | 50 | Fixnum |
16
- | 2 | 5 | add | 7 | Fixnum |
17
- | 0 | 40 | add | 40 | Fixnum |
12
+ Contoh:
13
+ | input_1 | input_2 | button | output |
14
+ | 20 | 30 | add | 50 |
15
+ | 2 | 5 | add | 7 |
16
+ | 0 | 40 | add | 40 |
@@ -7,4 +7,3 @@ Fitur: Division
7
7
  Dan aku sudah masukkan 2 ke kalkulator
8
8
  Ketika aku tekan divide
9
9
  Maka hasilnya harus 1.5 di layar
10
- Dan class hasilnya harus Float
@@ -1,5 +1,7 @@
1
- require 'spec'
2
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
4
+ require 'cucumber/formatters/unicode'
3
5
  require 'calculator'
4
6
 
5
7
  Before do
@@ -9,7 +11,7 @@ end
9
11
  After do
10
12
  end
11
13
 
12
- Given "aku sudah masukkan $n ke kalkulator" do |n|
14
+ Given /aku sudah masukkan (\d+) ke kalkulator/ do |n|
13
15
  @calc.push n.to_i
14
16
  end
15
17
 
@@ -20,12 +22,3 @@ end
20
22
  Then /hasilnya harus (.*) di layar/ do |result|
21
23
  @result.should == result.to_f
22
24
  end
23
-
24
- Then /class hasilnya harus (\w*)/ do |class_name|
25
- @result.class.name.should == class_name
26
- end
27
-
28
- Given /it should rain on (\w+)/ do |day|
29
- @calc.rain?(day).should == true
30
- end
31
-
@@ -1,5 +1,7 @@
1
- require 'spec'
2
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
4
+ require 'cucumber/formatters/unicode'
3
5
  require 'calcolatrice'
4
6
 
5
7
  Before do
@@ -3,15 +3,14 @@
3
3
  数学オンチとして
4
4
  2つの数の合計を知りたい
5
5
 
6
- シナリオ: 2つの数の加算について
7
- 前提 50 を入力
8
- かつ 70 を入力
9
- もし add ボタンを押した
10
- ならば 結果は 120 を表示
11
- かつ 結果のクラスは Fixnum
6
+ シナリオテンプレート: 2つの数の加算について
7
+ 前提 <値1> を入力
8
+ かつ <値2> を入力
9
+ もし <ボタン> を押した
10
+ ならば <結果> を表示
12
11
 
13
- 他のサンプル:
14
- | 入力1 | 入力2 | 実行 | 表示 | クラス |
15
- | 20 | 30 | add | 50 | Fixnum |
16
- | 2 | 5 | add | 7 | Fixnum |
17
- | 0 | 40 | add | 40 | Fixnum |
12
+ 例:
13
+ | 1 | 2 | ボタン | 結果 |
14
+ | 20 | 30 | add | 50 |
15
+ | 2 | 5 | add | 7 |
16
+ | 0 | 40 | add | 40 |
@@ -5,6 +5,5 @@
5
5
  シナリオ: ふつうの数値
6
6
  前提 3 を入力
7
7
  かつ 2 を入力
8
- もし divide ボタンを押した
9
- ならば 結果は 1.5 を表示
10
- かつ 結果のクラスは Float
8
+ もし divide を押した
9
+ ならば 1.5 を表示
@@ -1,5 +1,7 @@
1
- require 'spec'
2
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
1
+ # encoding: UTF-8
2
+ require 'spec/expectations'
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
4
+ require 'cucumber/formatters/unicode'
3
5
  require 'calculator'
4
6
 
5
7
  Before do
@@ -13,18 +15,10 @@ Given "$n を入力" do |n|
13
15
  @calc.push n.to_i
14
16
  end
15
17
 
16
- When /(\w+) ボタンを押した/ do |op|
18
+ When /(\w+) を押した/ do |op|
17
19
  @result = @calc.send op
18
20
  end
19
21
 
20
- Then /結果は (.*) を表示/ do |result|
22
+ Then /(.*) を表示/ do |result|
21
23
  @result.should == result.to_f
22
24
  end
23
-
24
- Then /結果のクラスは (\w*)/ do |class_name|
25
- @result.class.name.should == class_name
26
- end
27
-
28
- Given /it should rain on (\w+)/ do |day|
29
- @calc.rain?(day).should == true
30
- end
@@ -0,0 +1,6 @@
1
+ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
+ require 'cucumber/rake/task'
3
+
4
+ Cucumber::Rake::Task.new do |t|
5
+ t.cucumber_opts = "--language ko"
6
+ end
@@ -0,0 +1,16 @@
1
+ 기능: 덧셈
2
+ 예기치못한 실수을 방지하기 위해
3
+ 수학을 잘 못하는 사람으로써
4
+ 두숫자의 합을 알고 싶다
5
+
6
+ 시나리오: 두 숫자를 더하기
7
+ 조건 계산기에 50을 입력했음
8
+ 그리고 계산기에 70을 입력했음
9
+ 만일 내가 add를 누르면
10
+ 그러면 화면에 출력된 결과는 120이다
11
+
12
+ 다른 예:
13
+ | 입력1 | 입력2 | 버튼 | 결과 |
14
+ | 20 | 30 | add | 50 |
15
+ | 2 | 5 | add | 7 |
16
+ | 0 | 40 | add | 40 |
@@ -0,0 +1,10 @@
1
+ 기능: 나눗셈
2
+ 예기치못한 실수을 방지하기 위해
3
+ 분수를 계산 능력 요구한다
4
+
5
+ 시나리오: 보통 숫자
6
+ 조건 계산기에 3을 입력했음
7
+ 그리고 계산기에 2을 입력했음
8
+ 만일 내가 divide를 누르면
9
+ 그러면 화면에 출력된 결과는 1.5이다
10
+
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
4
+ require 'cucumber/formatters/unicode'
5
+ require 'calculator'
6
+
7
+ Before do
8
+ @calc = Calculator.new
9
+ end
10
+
11
+ After do
12
+ end
13
+
14
+ Given /^계산기에 (.*)을 입력했음$/ do |n|
15
+ @calc.push n.to_i
16
+ end
17
+
18
+ When /^내가 (.*)를 누루면$/ do |op|
19
+ @result = @calc.send op
20
+ end
21
+
22
+ Then /^화면에 출력된 결과는 (.*)이다$/ do |result|
23
+ @result.should == result.to_f
24
+ end
@@ -0,0 +1,14 @@
1
+ class Calculator
2
+ def push(n)
3
+ @args ||= []
4
+ @args << n
5
+ end
6
+
7
+ def add
8
+ @args.inject(0){|n,sum| sum+=n}
9
+ end
10
+
11
+ def divide
12
+ @args[0].to_f / @args[1].to_f
13
+ end
14
+ end
@@ -3,15 +3,15 @@ Sąvybė: Sudėtis
3
3
  Kaip matematinis idiotas
4
4
  Aš noriu, kad man pasakytų dviejų skaičių sumą
5
5
 
6
- Scenarijus: dviejų skaičių sudėtis
7
- Duota įvedžiau 50 į skaičiuotuvą
8
- Ir aš įvedžiau 70 į skaičiuotuvą
9
- Kaipaspaudžiu "add"
10
- Tada rezultatas ekrane turi būti 120
11
- Ir rezultato klasė turi būti "Fixnum"
6
+ # Someone please translate this in languages.yml please
7
+ Scenario Outline: dviejų skaičių sudėtis
8
+ Duota aš įvedžiau <įvestis_1> į skaičiuotuvą
9
+ Irįvedžiau <įvestis_2> į skaičiuotuvą
10
+ Kai paspaudžiu "<mygtukas>"
11
+ Tada rezultatas ekrane turi būti <išvestis>
12
12
 
13
- Daugiau pavyzdžių
14
- | įvestis_1 | įvestis_2 | mygtukas | išvestis | klasė |
15
- | 20 | 30 | add | 50 | Fixnum |
16
- | 2 | 5 | add | 7 | Fixnum |
17
- | 0 | 40 | add | 40 | Fixnum |
13
+ Pavyzdžių
14
+ | įvestis_1 | įvestis_2 | mygtukas | išvestis |
15
+ | 20 | 30 | add | 50 |
16
+ | 2 | 5 | add | 7 |
17
+ | 0 | 40 | add | 40 |
@@ -7,4 +7,3 @@ Feature: Dalyba
7
7
  Ir aš įvedžiau 2 į skaičiuotuvą
8
8
  Kai aš paspaudžiu "divide"
9
9
  Tada rezultatas ekrane turi būti 1.5
10
- Ir rezultato klasė turi būti "Float"
@@ -1,5 +1,7 @@
1
- require 'spec'
2
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
4
+ require 'cucumber/formatters/unicode'
3
5
  require 'calculator'
4
6
 
5
7
  Before do
@@ -9,7 +11,7 @@ end
9
11
  After do
10
12
  end
11
13
 
12
- Given "aš įvedžiau $n į skaičiuotuvą" do |n|
14
+ Given /aš įvedžiau (\d+) į skaičiuotuvą/ do |n|
13
15
  @calc.push n.to_i
14
16
  end
15
17
 
@@ -20,12 +22,3 @@ end
20
22
  Then /rezultatas ekrane turi būti (.*)/ do |result|
21
23
  @result.should == result.to_f
22
24
  end
23
-
24
- Then /rezultato klasė turi būti "(\w*)"/ do |class_name|
25
- @result.class.name.should == class_name
26
- end
27
-
28
- Given /turi lyti (\w+)/ do |day|
29
- @calc.rain?(day).should == true
30
- end
31
-
@@ -1,22 +1,17 @@
1
- require 'spec'
2
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
- require 'kalkulator'
1
+ # encoding: utf-8
4
2
 
5
3
  Before do
6
4
  @calc = Kalkulator.new
7
5
  end
8
6
 
9
- After do
10
- end
11
-
12
- Given /at jeg har tastet inn (\d+)/ do |n|
7
+ Gitt /at jeg har tastet inn (\d+)/ do |n|
13
8
  @calc.push n.to_i
14
9
  end
15
10
 
16
- When 'jeg summerer' do
11
+ Når 'jeg summerer' do
17
12
  @result = @calc.add
18
13
  end
19
14
 
20
- Then /skal resultatet være (\d*)/ do |result|
15
+ /skal resultatet være (\d*)/ do |result|
21
16
  @result.should == result.to_i
22
17
  end
@@ -9,6 +9,7 @@ Egenskap: Summering
9
9
  Når jeg summerer
10
10
  Så skal resultatet være 12
11
11
 
12
+ @iterasjon3
12
13
  Scenario: tre tall
13
14
  Gitt at jeg har tastet inn 5
14
15
  Og at jeg har tastet inn 7
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+ $KCODE='u' unless Cucumber::RUBY_1_9
3
+ require 'spec/expectations'
4
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
5
+ require 'cucumber/formatters/unicode'
6
+ require 'kalkulator'
@@ -1,5 +1,7 @@
1
- require 'spec'
2
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
4
+ require 'cucumber/formatters/unicode'
3
5
  require 'calculadora'
4
6
 
5
7
  Before do
@@ -1,5 +1,7 @@
1
- require 'spec'
2
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
4
+ require 'cucumber/formatters/unicode'
3
5
  require 'calculator'
4
6
 
5
7
  Before do
@@ -0,0 +1,6 @@
1
+ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
+ require 'cucumber/rake/task'
3
+
4
+ Cucumber::Rake::Task.new do |t|
5
+ t.cucumber_opts = "--language ru"
6
+ end
@@ -0,0 +1,10 @@
1
+ Функционал: Сложение чисел
2
+ Чтобы не складывать в уме
3
+ Все, у кого с этим туго
4
+ Хотят автоматическое сложение целых чисел
5
+
6
+ Сценарий: Сложение двух целых чисел
7
+ Допустим я ввожу число 50
8
+ И затем ввожу число 70
9
+ Если я нажимаю "+"
10
+ То результатом должно быть число 120
@@ -0,0 +1,16 @@
1
+ Функционал: Последовательные вычисления
2
+ Чтобы вычислять сложные выражения
3
+ Пользователи хотят проводить вычисления над результатом предыдущей операций
4
+
5
+ Предыстория:
6
+ Допустим я сложил 3 и 5
7
+
8
+ Сценарий: сложение с результатом последней операций
9
+ Если я ввожу число 4
10
+ И нажимаю "+"
11
+ То результатом должно быть число 12
12
+
13
+ Сценарий: деление результата последней операции
14
+ Если я ввожу число 2
15
+ И нажимаю "/"
16
+ То результатом должно быть число 4
@@ -0,0 +1,15 @@
1
+ Функционал: Деление чисел
2
+ Поскольку деление сложный процесс и люди часто допускают ошибки
3
+ Нужно дать им возможность делить на калькуляторе
4
+
5
+ Структура сценария: Целочисленное деление
6
+ Допустим я ввожу число <делимое>
7
+ И затем ввожу число <делитель>
8
+ Если я нажимаю "/"
9
+ То результатом должно быть число <частное>
10
+
11
+ Значения:
12
+ | делимое | делитель | частное |
13
+ | 100 | 2 | 50 |
14
+ | 28 | 7 | 4 |
15
+ | 0 | 5 | 0 |
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+
3
+ Допустим /ввожу число (\d+)/ do |число|
4
+ calc.push число.to_i
5
+ end
6
+
7
+ Если /нажимаю "(.*)"/ do |операция|
8
+ calc.send операция
9
+ end
10
+
11
+ То /результатом должно быть число (\d+)/ do |результат|
12
+ calc.result.should == результат.to_f
13
+ end
14
+
15
+ Допустим /я сложил (\d+) и (\d+)/ do |слагаемое1, слагаемое2|
16
+ Допустим %{я ввожу число #{слагаемое1}}
17
+ Допустим %{затем ввожу число #{слагаемое2}}
18
+ Допустим %{я нажимаю "+"}
19
+ end
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
4
+ require 'cucumber/formatters/unicode'
5
+ require 'calculator'
6
+ $KCODE='u' unless Cucumber::RUBY_1_9
@@ -0,0 +1,7 @@
1
+ # encoding: utf-8
2
+
3
+ World do
4
+ def calc
5
+ @calc ||= Calculator.new
6
+ end
7
+ end
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+
3
+ class Calculator
4
+ def initialize
5
+ @stack = []
6
+ end
7
+
8
+ def push(arg)
9
+ @stack.push arg
10
+ end
11
+
12
+ def result
13
+ @stack.last
14
+ end
15
+
16
+ def +
17
+ @stack.push @stack.pop + @stack.pop
18
+ end
19
+
20
+ def /
21
+ divisor, dividend = [@stack.pop, @stack.pop] # Hm, @stack.pop(2) doesn't work
22
+ @stack.push dividend / divisor
23
+ end
24
+ end
@@ -1,5 +1,7 @@
1
- require 'spec'
2
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
4
+ require 'cucumber/formatters/unicode'
3
5
  require 'kalkulator'
4
6
 
5
7
  Before do
@@ -1,5 +1,7 @@
1
- require 'spec'
2
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
1
+ # encoding: utf-8
2
+ require 'spec/expectations'
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
4
+ require 'cucumber/formatters/unicode'
3
5
  require 'calculator'
4
6
 
5
7
  Before do
@@ -9,7 +11,7 @@ end
9
11
  After do
10
12
  end
11
13
 
12
- Given "我已经在计算器里输入$n" do |n|
14
+ Given /我已经在计算器里输入(\d+)/ do |n|
13
15
  @calc.push n.to_i
14
16
  end
15
17