jeffrafter-cucumber 0.1.10

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 (242) hide show
  1. data/History.txt +262 -0
  2. data/License.txt +20 -0
  3. data/Manifest.txt +241 -0
  4. data/README.txt +41 -0
  5. data/Rakefile +8 -0
  6. data/TODO.txt +26 -0
  7. data/bin/cucumber +6 -0
  8. data/config/hoe.rb +69 -0
  9. data/config/requirements.rb +15 -0
  10. data/cucumber.yml +1 -0
  11. data/examples/calculator_ruby_features/Rakefile +6 -0
  12. data/examples/calculator_ruby_features/features/addition.rb +23 -0
  13. data/examples/calculator_ruby_features/features/step_definitons/calculator_steps.rb +43 -0
  14. data/examples/cs/README.textile +22 -0
  15. data/examples/cs/Rakefile +12 -0
  16. data/examples/cs/features/hello.feature +11 -0
  17. data/examples/cs/features/step_definitons/hello_steps.rb +25 -0
  18. data/examples/cs/features/step_definitons/tree_steps.rb +14 -0
  19. data/examples/cs/features/tree.feature +9 -0
  20. data/examples/cs/src/Hello.cs +18 -0
  21. data/examples/dos_line_endings/Rakefile +6 -0
  22. data/examples/dos_line_endings/features/dos_line_endings.feature +9 -0
  23. data/examples/i18n/README.textile +18 -0
  24. data/examples/i18n/Rakefile +16 -0
  25. data/examples/i18n/ar/Rakefile +6 -0
  26. data/examples/i18n/ar/features/addition.feature +17 -0
  27. data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +32 -0
  28. data/examples/i18n/ar/lib/calculator.rb +10 -0
  29. data/examples/i18n/da/Rakefile +6 -0
  30. data/examples/i18n/da/features/step_definitons/kalkulator_steps.rb +22 -0
  31. data/examples/i18n/da/features/summering.feature +17 -0
  32. data/examples/i18n/da/lib/kalkulator.rb +11 -0
  33. data/examples/i18n/de/Rakefile +6 -0
  34. data/examples/i18n/de/features/addition.feature +17 -0
  35. data/examples/i18n/de/features/division.feature +10 -0
  36. data/examples/i18n/de/features/step_definitons/calculator_steps.rb +30 -0
  37. data/examples/i18n/de/lib/calculator.rb +14 -0
  38. data/examples/i18n/en/Rakefile +6 -0
  39. data/examples/i18n/en/features/addition.feature +17 -0
  40. data/examples/i18n/en/features/division.feature +10 -0
  41. data/examples/i18n/en/features/step_definitons/calculator_steps.rb +31 -0
  42. data/examples/i18n/en/lib/calculator.rb +14 -0
  43. data/examples/i18n/es/Rakefile +6 -0
  44. data/examples/i18n/es/features/adicion.feature +17 -0
  45. data/examples/i18n/es/features/step_definitons/calculador_steps.rb +22 -0
  46. data/examples/i18n/es/lib/calculador.rb +11 -0
  47. data/examples/i18n/et/Rakefile +6 -0
  48. data/examples/i18n/et/features/liitmine.feature +17 -0
  49. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +26 -0
  50. data/examples/i18n/et/lib/kalkulaator.rb +10 -0
  51. data/examples/i18n/fr/Rakefile +6 -0
  52. data/examples/i18n/fr/features/addition.feature +13 -0
  53. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +22 -0
  54. data/examples/i18n/fr/lib/calculatrice.rb +10 -0
  55. data/examples/i18n/id/Rakefile +6 -0
  56. data/examples/i18n/id/features/addition.feature +17 -0
  57. data/examples/i18n/id/features/division.feature +10 -0
  58. data/examples/i18n/id/features/step_definitons/calculator_steps.rb +31 -0
  59. data/examples/i18n/id/lib/calculator.rb +14 -0
  60. data/examples/i18n/it/Rakefile +6 -0
  61. data/examples/i18n/it/features/somma.feature +10 -0
  62. data/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +22 -0
  63. data/examples/i18n/it/lib/calcolatrice.rb +11 -0
  64. data/examples/i18n/ja/README.txt +5 -0
  65. data/examples/i18n/ja/Rakefile +6 -0
  66. data/examples/i18n/ja/features/addition.feature +17 -0
  67. data/examples/i18n/ja/features/division.feature +10 -0
  68. data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +30 -0
  69. data/examples/i18n/ja/lib/calculator.rb +14 -0
  70. data/examples/i18n/lt/Rakefile +6 -0
  71. data/examples/i18n/lt/features/addition.feature +17 -0
  72. data/examples/i18n/lt/features/division.feature +10 -0
  73. data/examples/i18n/lt/features/step_definitons/calculator_steps.rb +31 -0
  74. data/examples/i18n/lt/lib/calculator.rb +14 -0
  75. data/examples/i18n/no/Rakefile +6 -0
  76. data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +22 -0
  77. data/examples/i18n/no/features/summering.feature +17 -0
  78. data/examples/i18n/no/lib/kalkulator.rb +11 -0
  79. data/examples/i18n/pt/Rakefile +6 -0
  80. data/examples/i18n/pt/features/adicao.feature +10 -0
  81. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +22 -0
  82. data/examples/i18n/pt/lib/calculadora.rb +10 -0
  83. data/examples/i18n/ro/Rakefile +6 -0
  84. data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +22 -0
  85. data/examples/i18n/ro/features/suma.feature +10 -0
  86. data/examples/i18n/ro/lib/calculator.rb +11 -0
  87. data/examples/i18n/se/Rakefile +6 -0
  88. data/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +22 -0
  89. data/examples/i18n/se/features/summering.feature +17 -0
  90. data/examples/i18n/se/lib/kalkulator.rb +11 -0
  91. data/examples/i18n/zh-CN/Rakefile +6 -0
  92. data/examples/i18n/zh-CN/features/addition.feature +17 -0
  93. data/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +24 -0
  94. data/examples/i18n/zh-CN/lib/calculator.rb +10 -0
  95. data/examples/java/README.textile +22 -0
  96. data/examples/java/Rakefile +12 -0
  97. data/examples/java/features/hello.feature +11 -0
  98. data/examples/java/features/step_definitons/hello_steps.rb +25 -0
  99. data/examples/java/features/step_definitons/tree_steps.rb +14 -0
  100. data/examples/java/features/tree.feature +9 -0
  101. data/examples/java/src/cucumber/demo/Hello.java +16 -0
  102. data/examples/selenium/Rakefile +6 -0
  103. data/examples/selenium/features/search.feature +9 -0
  104. data/examples/selenium/features/step_definitons/stories_steps.rb +41 -0
  105. data/examples/test_unit/Rakefile +6 -0
  106. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +26 -0
  107. data/examples/test_unit/features/test_unit.feature +9 -0
  108. data/examples/tickets/Rakefile +11 -0
  109. data/examples/tickets/cucumber.yml +2 -0
  110. data/examples/tickets/features/step_definitons/tickets_steps.rb +32 -0
  111. data/examples/tickets/features/tickets.feature +24 -0
  112. data/examples/watir/Rakefile +6 -0
  113. data/examples/watir/features/search.feature +9 -0
  114. data/examples/watir/features/step_definitons/stories_steps.rb +51 -0
  115. data/features/see_features.feature +8 -0
  116. data/features/steps/features_steps.rb +9 -0
  117. data/gem_tasks/deployment.rake +34 -0
  118. data/gem_tasks/environment.rake +7 -0
  119. data/gem_tasks/features.rake +6 -0
  120. data/gem_tasks/fix_cr_lf.rake +10 -0
  121. data/gem_tasks/flog.rake +4 -0
  122. data/gem_tasks/gemspec.rake +6 -0
  123. data/gem_tasks/rspec.rake +35 -0
  124. data/gem_tasks/treetop.rake +41 -0
  125. data/lib/autotest/cucumber.rb +6 -0
  126. data/lib/autotest/cucumber_mixin.rb +109 -0
  127. data/lib/autotest/cucumber_rails.rb +6 -0
  128. data/lib/autotest/cucumber_rails_rspec.rb +6 -0
  129. data/lib/autotest/cucumber_rspec.rb +6 -0
  130. data/lib/autotest/discover.rb +9 -0
  131. data/lib/cucumber/broadcaster.rb +20 -0
  132. data/lib/cucumber/cli.rb +303 -0
  133. data/lib/cucumber/core_ext/proc.rb +69 -0
  134. data/lib/cucumber/core_ext/string.rb +28 -0
  135. data/lib/cucumber/executor.rb +190 -0
  136. data/lib/cucumber/formatters/ansicolor.rb +109 -0
  137. data/lib/cucumber/formatters/autotest_formatter.rb +23 -0
  138. data/lib/cucumber/formatters/cucumber.css +132 -0
  139. data/lib/cucumber/formatters/cucumber.js +11 -0
  140. data/lib/cucumber/formatters/html_formatter.rb +128 -0
  141. data/lib/cucumber/formatters/jquery.js +32 -0
  142. data/lib/cucumber/formatters/pretty_formatter.rb +234 -0
  143. data/lib/cucumber/formatters/profile_formatter.rb +92 -0
  144. data/lib/cucumber/formatters/progress_formatter.rb +58 -0
  145. data/lib/cucumber/formatters.rb +1 -0
  146. data/lib/cucumber/languages.yml +258 -0
  147. data/lib/cucumber/model/table.rb +28 -0
  148. data/lib/cucumber/model.rb +1 -0
  149. data/lib/cucumber/platform.rb +12 -0
  150. data/lib/cucumber/rails/rspec.rb +12 -0
  151. data/lib/cucumber/rails/world.rb +73 -0
  152. data/lib/cucumber/rake/task.rb +101 -0
  153. data/lib/cucumber/step_methods.rb +49 -0
  154. data/lib/cucumber/step_mother.rb +95 -0
  155. data/lib/cucumber/tree/feature.rb +63 -0
  156. data/lib/cucumber/tree/features.rb +21 -0
  157. data/lib/cucumber/tree/given_scenario.rb +13 -0
  158. data/lib/cucumber/tree/scenario.rb +174 -0
  159. data/lib/cucumber/tree/step.rb +134 -0
  160. data/lib/cucumber/tree/table.rb +26 -0
  161. data/lib/cucumber/tree/top_down_visitor.rb +23 -0
  162. data/lib/cucumber/tree.rb +18 -0
  163. data/lib/cucumber/treetop_parser/feature.treetop.erb +206 -0
  164. data/lib/cucumber/treetop_parser/feature_ar.rb +1591 -0
  165. data/lib/cucumber/treetop_parser/feature_cy.rb +1591 -0
  166. data/lib/cucumber/treetop_parser/feature_da.rb +1591 -0
  167. data/lib/cucumber/treetop_parser/feature_de.rb +1591 -0
  168. data/lib/cucumber/treetop_parser/feature_en-tx.rb +1591 -0
  169. data/lib/cucumber/treetop_parser/feature_en.rb +1591 -0
  170. data/lib/cucumber/treetop_parser/feature_es.rb +1591 -0
  171. data/lib/cucumber/treetop_parser/feature_et.rb +1591 -0
  172. data/lib/cucumber/treetop_parser/feature_fr.rb +1591 -0
  173. data/lib/cucumber/treetop_parser/feature_id.rb +1591 -0
  174. data/lib/cucumber/treetop_parser/feature_it.rb +1591 -0
  175. data/lib/cucumber/treetop_parser/feature_ja.rb +1591 -0
  176. data/lib/cucumber/treetop_parser/feature_lt.rb +1591 -0
  177. data/lib/cucumber/treetop_parser/feature_nl.rb +1591 -0
  178. data/lib/cucumber/treetop_parser/feature_no.rb +1591 -0
  179. data/lib/cucumber/treetop_parser/feature_parser.rb +34 -0
  180. data/lib/cucumber/treetop_parser/feature_pl.rb +1591 -0
  181. data/lib/cucumber/treetop_parser/feature_pt.rb +1591 -0
  182. data/lib/cucumber/treetop_parser/feature_ro.rb +1591 -0
  183. data/lib/cucumber/treetop_parser/feature_ro2.rb +1591 -0
  184. data/lib/cucumber/treetop_parser/feature_ru.rb +1591 -0
  185. data/lib/cucumber/treetop_parser/feature_se.rb +1591 -0
  186. data/lib/cucumber/treetop_parser/feature_zh-CN.rb +1591 -0
  187. data/lib/cucumber/version.rb +9 -0
  188. data/lib/cucumber.rb +38 -0
  189. data/rails_generators/cucumber/USAGE +11 -0
  190. data/rails_generators/cucumber/cucumber_generator.rb +30 -0
  191. data/rails_generators/cucumber/templates/cucumber +7 -0
  192. data/rails_generators/cucumber/templates/cucumber.rake +7 -0
  193. data/rails_generators/cucumber/templates/env.rb +8 -0
  194. data/rails_generators/cucumber/templates/webrat_steps.rb +95 -0
  195. data/rails_generators/feature/USAGE +12 -0
  196. data/rails_generators/feature/feature_generator.rb +16 -0
  197. data/rails_generators/feature/templates/feature.erb +28 -0
  198. data/rails_generators/feature/templates/steps.erb +22 -0
  199. data/script/console +10 -0
  200. data/script/console.cmd +1 -0
  201. data/script/destroy +14 -0
  202. data/script/destroy.cmd +1 -0
  203. data/script/generate +14 -0
  204. data/script/generate.cmd +1 -0
  205. data/script/txt2html +74 -0
  206. data/script/txt2html.cmd +1 -0
  207. data/setup.rb +1585 -0
  208. data/spec/cucumber/broadcaster_spec.rb +27 -0
  209. data/spec/cucumber/cli_spec.rb +412 -0
  210. data/spec/cucumber/core_ext/proc_spec.rb +45 -0
  211. data/spec/cucumber/core_ext/string_spec.rb +34 -0
  212. data/spec/cucumber/executor_spec.rb +298 -0
  213. data/spec/cucumber/formatters/ansicolor_spec.rb +35 -0
  214. data/spec/cucumber/formatters/autotest_formatter_spec.rb +26 -0
  215. data/spec/cucumber/formatters/features.html +269 -0
  216. data/spec/cucumber/formatters/html_formatter_spec.rb +74 -0
  217. data/spec/cucumber/formatters/pretty_formatter_spec.rb +204 -0
  218. data/spec/cucumber/formatters/profile_formatter_spec.rb +192 -0
  219. data/spec/cucumber/formatters/progress_formatter_spec.rb +65 -0
  220. data/spec/cucumber/model/table_spec.rb +20 -0
  221. data/spec/cucumber/rails/stubs/mini_rails.rb +17 -0
  222. data/spec/cucumber/rails/stubs/test_help.rb +1 -0
  223. data/spec/cucumber/rails/world_spec.rb +11 -0
  224. data/spec/cucumber/sell_cucumbers.feature +19 -0
  225. data/spec/cucumber/step_mother_spec.rb +74 -0
  226. data/spec/cucumber/tree/feature_spec.rb +43 -0
  227. data/spec/cucumber/tree/row_scenario_spec.rb +55 -0
  228. data/spec/cucumber/tree/scenario_spec.rb +76 -0
  229. data/spec/cucumber/tree/step_spec.rb +50 -0
  230. data/spec/cucumber/treetop_parser/empty_feature.feature +4 -0
  231. data/spec/cucumber/treetop_parser/empty_scenario.feature +9 -0
  232. data/spec/cucumber/treetop_parser/feature_parser_spec.rb +98 -0
  233. data/spec/cucumber/treetop_parser/fit_scenario.feature +8 -0
  234. data/spec/cucumber/treetop_parser/given_scenario.feature +9 -0
  235. data/spec/cucumber/treetop_parser/multiline_steps.feature +17 -0
  236. data/spec/cucumber/treetop_parser/multiple_tables.feature +29 -0
  237. data/spec/cucumber/treetop_parser/spaces.feature +10 -0
  238. data/spec/cucumber/treetop_parser/test_dos.feature +25 -0
  239. data/spec/cucumber/treetop_parser/with_comments.feature +10 -0
  240. data/spec/spec.opts +2 -0
  241. data/spec/spec_helper.rb +20 -0
  242. metadata +335 -0
@@ -0,0 +1,15 @@
1
+ require 'fileutils'
2
+ include FileUtils
3
+
4
+ require 'rubygems'
5
+ %w[rake hoe].each do |req_gem|
6
+ begin
7
+ require req_gem
8
+ rescue LoadError
9
+ puts "This Rakefile requires the '#{req_gem}' RubyGem."
10
+ puts "Installation: gem install #{req_gem} -y"
11
+ exit
12
+ end
13
+ end
14
+
15
+ $:.unshift(File.join(File.dirname(__FILE__), %w[.. lib]))
data/cucumber.yml ADDED
@@ -0,0 +1 @@
1
+ default: --format progress features
@@ -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 = "--format pretty"
6
+ end
@@ -0,0 +1,23 @@
1
+ require 'cucumber/cli' # Needed in order to run the feature with ruby
2
+
3
+ Feature %|Addition
4
+ In order to avoid silly mistakes
5
+ As a math idiot
6
+ I want to be told the sum of two numbers| do
7
+
8
+ Scenario "Add two numbers" do
9
+ Given "I have entered 50 into the calculator"
10
+ And "I have entered 70 into the calculator"
11
+ When "I add"
12
+ Then "the result should be 120 on the screen"
13
+ And "the result class should be Fixnum"
14
+ end
15
+
16
+ Table do |t|
17
+ t | "input_1" | "input_2" | "output" | "class" | t
18
+ # This is kind of dumb - but it illustrates how scenarios can be "generated" in code.
19
+ 10.times do |n|
20
+ t | n | n*2 | n*3 | Fixnum | t
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec'
2
+
3
+ class Calculator
4
+ def push(n)
5
+ @args ||= []
6
+ @args << n
7
+ end
8
+
9
+ def add
10
+ @args.inject(0){|n,sum| sum+=n}
11
+ end
12
+
13
+ def divide
14
+ @args[0].to_f / @args[1].to_f
15
+ end
16
+ end
17
+
18
+ Before do
19
+ @calc = Calculator.new
20
+ end
21
+
22
+ After do
23
+ end
24
+
25
+ Given /I have entered (\d+) into the calculator/ do |n|
26
+ @calc.push n.to_i
27
+ end
28
+
29
+ When 'I add' do
30
+ @result = @calc.add
31
+ end
32
+
33
+ When 'I divide' do
34
+ @result = @calc.divide
35
+ end
36
+
37
+ Then /the result should be (\d*) on the screen/ do |result|
38
+ @result.should == result.to_i
39
+ end
40
+
41
+ Then /the result class should be (\w*)/ do |class_name|
42
+ @result.class.name.should == class_name
43
+ end
@@ -0,0 +1,22 @@
1
+ h1. Using Cucumber with Java
2
+
3
+ This directory contains code to demonstrate how Cucumber can be used to develop Java code.
4
+ You need JRuby 1.1.3 or higher installed and JRuby's bin directory on your PATH.
5
+
6
+ h2. Installing required gems
7
+
8
+ jruby -S gem install aslakhellesoy-cucumber
9
+ jruby -S gem install diff-lcs
10
+
11
+ h2. Running the scenarios
12
+
13
+ Open a shell in this directory (java) and execute the following command:
14
+
15
+ <pre><code>
16
+ jruby -S rake features
17
+ </code></pre>
18
+
19
+ This will compile the java code and package it in a jar file, and then run Cucumber against
20
+ that code.
21
+
22
+ There is a deliberate error. See if you can fix it!
@@ -0,0 +1,12 @@
1
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
2
+ require 'cucumber/rake/task'
3
+
4
+ Cucumber::Rake::Task.new(:features) do |t|
5
+ t.cucumber_opts = "--format pretty"
6
+ end
7
+
8
+ task :features => :compile
9
+
10
+ task :compile do
11
+ sh "csc /target:library /out:Cucumber.Demo.dll src\\Hello.cs"
12
+ end
@@ -0,0 +1,11 @@
1
+ Feature: Hello
2
+ In order to have more friends
3
+ I want to say hello
4
+
5
+ Scenario: Personal greeting
6
+ Given my name is Aslak
7
+ When I greet David
8
+ Then he should hear Hi, David. I'm Aslak.
9
+ And I should remember David as a friend
10
+ And I should get David's phone number
11
+
@@ -0,0 +1,25 @@
1
+ require 'spec' # so we can call .should
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../src') # so the jar is found
3
+ require 'dotnet'
4
+ loadLibrary 'Cucumber.Demo'
5
+
6
+ Given /my name is (\w+)/ do |name|
7
+ @hello = Hello.new # A .net object
8
+ @name = name
9
+ end
10
+
11
+ When /I greet (.*)/ do |someone|
12
+ @greeting = @hello.greet(someone, @name)
13
+ end
14
+
15
+ Then /he should hear (.*)\./ do |message|
16
+ @greeting.should == message
17
+ end
18
+
19
+ Then /I should remember (\w+) as a friend/ do |name|
20
+ @hello.isFriend(name).should == true
21
+ end
22
+
23
+ Then /I should get (\w+)'s phone number/ do |name|
24
+ @hello.getPhoneNumber(name).should_not == nil
25
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec'
2
+ require 'dotnet'
3
+
4
+ Given /I have an empty set/ do
5
+ @set = System.Collections.ArrayList.new
6
+ end
7
+
8
+ When /I add (\w+)/ do |s|
9
+ @set.add(s)
10
+ end
11
+
12
+ Then /the contents should be (.*)/ do |s|
13
+ @set.to_a.join(" ").should == s
14
+ end
@@ -0,0 +1,9 @@
1
+ Feature: Tree
2
+ In order to have more robust Java software
3
+ I want to use Cucumber against Java classes
4
+
5
+ Scenario: Use java.util.TreeSet
6
+ Given I have an empty set
7
+ When I add hello
8
+ And I add world
9
+ Then the contents should be hello world
@@ -0,0 +1,18 @@
1
+ using System;
2
+
3
+ namespace Cucumber.Demo {
4
+ public class Hello {
5
+ public string Greet(string who, string from) {
6
+ return "Hi, " + who + ". I'm " + from;
7
+ }
8
+
9
+ public bool IsFriend(string who) {
10
+ return true;
11
+ }
12
+
13
+ public string GetPhoneNumber(string who) {
14
+ return "99999";
15
+ //throw new Exception("My phone is secret!");
16
+ }
17
+ }
18
+ }
@@ -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 = "--format pretty"
6
+ end
@@ -0,0 +1,9 @@
1
+ Feature: DOS line endings
2
+ In order to have less bug reports
3
+ As a windows developer
4
+ I want to write features with DOS line endigs
5
+
6
+ Scenario: Just lots of DOS
7
+ Given I am on DOS
8
+ And Any version of Windows is really just DOS
9
+ Then Windows still sucks
@@ -0,0 +1,18 @@
1
+ h1. Internationalisation (i18n) examples
2
+
3
+ Under this directory you'll find examples of Cucumber features written in
4
+ many of the natural languages Cucumber supports.
5
+
6
+ For a full list of what languages Cucumber supports - run <pre>cucumber --help</pre>
7
+
8
+ h2. Running all the examples
9
+
10
+ Open a shell in this directory and run
11
+
12
+ <pre>rake i18n</pre>
13
+
14
+ h2. Running examples for a specific language
15
+
16
+ Open a shell in the directory for the specific language and run
17
+
18
+ <pre>rake features</pre>
@@ -0,0 +1,16 @@
1
+ desc 'Run features for all languages'
2
+ task :i18n do
3
+ dir = File.dirname(__FILE__)
4
+ Dir["#{dir}/*"].each do |f|
5
+ if File.directory?(f)
6
+ lang = f[dir.length+1..-1]
7
+ Dir.chdir(f) do
8
+ rake("features")
9
+ end
10
+ end
11
+ end
12
+ end
13
+
14
+ def rake(args)
15
+ ruby(File.join(Gem.bindir, 'rake'), args)
16
+ 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 ar"
6
+ end
@@ -0,0 +1,17 @@
1
+ خاصية: الجمع
2
+ من اجل تجنب الأخطاء السخيفة
3
+ كشخص غبي في الرياضيات
4
+ اريد معرفة ناتج جمع عددين
5
+
6
+ سيناريو: جمع عددين
7
+ بفرض كتابة ٥٠ في الآلة الحاسبة
8
+ و كتابة ٧٠ في الآلة الحاسبة
9
+ متى يتم الضغط على جمع
10
+ اذاً يظهر ١٢ على الشاشة
11
+ و الناتج يجب ان يكون Fixnum
12
+
13
+ امثلة اكثر:
14
+ | input_1 | input_2 | button | output | class |
15
+ | 20 | 30 | جمع | 50 | Fixnum |
16
+ | 2 | 5 | جمع | 7 | Fixnum |
17
+ | 0 | 40 | جمع | 40 | Fixnum |
@@ -0,0 +1,32 @@
1
+ $KCODE='u'
2
+ require 'spec'
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
4
+ require 'calculator'
5
+
6
+ Before do
7
+ @calc = Calculator.new
8
+ end
9
+
10
+ After do
11
+ end
12
+
13
+ Given "كتابة $n في الآلة الحاسبة" do |n|
14
+ @calc.push n.to_i
15
+ end
16
+
17
+ When /يتم الضغط على (\w+)/ do |op|
18
+ @result = @calc.send op
19
+ end
20
+
21
+ Then /يظهر (.*) على الشاشة/ do |result|
22
+ @result.should == result.to_f
23
+ end
24
+
25
+ Then /يجب ان يكون (\w*)/ do |class_name|
26
+ @result.class.name.should == class_name
27
+ end
28
+
29
+ Given /it should rain on (\w+)/ do |day|
30
+ @calc.rain?(day).should == true
31
+ end
32
+
@@ -0,0 +1,10 @@
1
+ class Calculator
2
+ def push(n)
3
+ @args ||= []
4
+ @args << n
5
+ end
6
+
7
+ def جمع
8
+ @args.inject(0){|n,sum| sum+=n}
9
+ end
10
+ 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 da"
6
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec'
2
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
+ require 'kalkulator'
4
+
5
+ Before do
6
+ @calc = Kalkulator.new
7
+ end
8
+
9
+ After do
10
+ end
11
+
12
+ Given /at jeg har indtastet (\d+)/ do |n|
13
+ @calc.push n.to_i
14
+ end
15
+
16
+ When 'jeg summerer' do
17
+ @result = @calc.add
18
+ end
19
+
20
+ Then /skal resultatet være (\d*)/ do |result|
21
+ @result.should == result.to_i
22
+ end
@@ -0,0 +1,17 @@
1
+ Egenskab: Summering
2
+ For at slippe for at lave dumme fejl
3
+ Som en regnskabsfører
4
+ Vil jeg kunne lægge sammen
5
+
6
+ Scenarie: to tal
7
+ Givet at jeg har indtastet 5
8
+ Og at jeg har indtastet 7
9
+ Når jeg summerer
10
+ Så skal resultatet være 12
11
+
12
+ Scenarie: tre tal
13
+ Givet at jeg har indtastet 5
14
+ Og at jeg har indtastet 7
15
+ Og at jeg har indtastet 1
16
+ Når jeg summerer
17
+ Så skal resultatet være 13
@@ -0,0 +1,11 @@
1
+ class Kalkulator
2
+ def push(n)
3
+ @args ||= []
4
+ @args << n
5
+ end
6
+
7
+ def add
8
+ #@args[0] + @args[1]
9
+ @args.inject(0){|n,sum| sum+=n}
10
+ end
11
+ 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 de"
6
+ end
@@ -0,0 +1,17 @@
1
+ Funktionalität: Addition
2
+ Um dumme Fehler zu vermeiden
3
+ möchte ich als Matheidiot
4
+ die Summe zweier Zahlen gesagt bekommen
5
+
6
+ Szenario: Zwei Zahlen hinzufügen
7
+ Gegeben sei ich habe 50 in den Taschenrechner eingegeben
8
+ Und ich habe 70 in den Taschenrechner eingegeben
9
+ Wenn ich add drücke
10
+ Dann sollte das Ergebniss auf dem Bildschirm 120 sein
11
+ Und die Ergebnissklasse sollte eine Fixnum sein
12
+
13
+ Mehr Beispiele:
14
+ | Eingabe_1 | Eingabe_2 | Knopf | Ausgabe | Klasse |
15
+ | 20 | 30 | add | 50 | Fixnum |
16
+ | 2 | 5 | add | 7 | Fixnum |
17
+ | 0 | 40 | add | 40 | Fixnum |
@@ -0,0 +1,10 @@
1
+ Funktionalität: Division
2
+ Um dumme Fehler zu vermeiden
3
+ müssen Kassierer in der Lage sein einen Bruchteil zu berechnen
4
+
5
+ Szenario: Normale Zahlen
6
+ Gegeben sei ich habe 3 in den Taschenrechner eingegeben
7
+ Und ich habe 2 in den Taschenrechner eingegeben
8
+ Wenn ich divide drücke
9
+ Dann sollte das Ergebniss auf dem Bildschirm 1.5 sein
10
+ Und die Ergebnissklasse sollte eine Float sein
@@ -0,0 +1,30 @@
1
+ require 'spec'
2
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
+ require 'calculator'
4
+
5
+ Before do
6
+ @calc = Calculator.new
7
+ end
8
+
9
+ After do
10
+ end
11
+
12
+ Given "ich habe $n in den Taschenrechner eingegeben" do |n|
13
+ @calc.push n.to_i
14
+ end
15
+
16
+ When /ich (\w+) drücke/ do |op|
17
+ @result = @calc.send op
18
+ end
19
+
20
+ Then /sollte das Ergebniss auf dem Bildschirm (.*) sein/ do |result|
21
+ @result.should == result.to_f
22
+ end
23
+
24
+ Then /die Ergebnissklasse sollte eine (\w*) sein/ 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,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
@@ -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 en"
6
+ end
@@ -0,0 +1,17 @@
1
+ Feature: Addition
2
+ In order to avoid silly mistakes
3
+ As a math idiot
4
+ I want to be told the sum of two numbers
5
+
6
+ Scenario: Add two numbers
7
+ Given I have entered 50 into the calculator
8
+ And I have entered 70 into the calculator
9
+ When I press add
10
+ Then the result should be 120 on the screen
11
+ And the result class should be Fixnum
12
+
13
+ More Examples:
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 |
@@ -0,0 +1,10 @@
1
+ Feature: Division
2
+ In order to avoid silly mistakes
3
+ Cashiers must be able to calculate a fraction
4
+
5
+ Scenario: Regular numbers
6
+ Given I have entered 3 into the calculator
7
+ And I have entered 2 into the calculator
8
+ When I press divide
9
+ Then the result should be 1.5 on the screen
10
+ And the result class should be Float
@@ -0,0 +1,31 @@
1
+ require 'spec'
2
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
+ require 'calculator'
4
+
5
+ Before do
6
+ @calc = Calculator.new
7
+ end
8
+
9
+ After do
10
+ end
11
+
12
+ Given "I have entered $n into the calculator" do |n|
13
+ @calc.push n.to_i
14
+ end
15
+
16
+ When /I press (\w+)/ do |op|
17
+ @result = @calc.send op
18
+ end
19
+
20
+ Then /the result should be (.*) on the screen/ do |result|
21
+ @result.should == result.to_f
22
+ end
23
+
24
+ Then /the result class should be (\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
+
@@ -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
@@ -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 es"
6
+ end
@@ -0,0 +1,17 @@
1
+ Característica: adición
2
+ Para evitar hacer errores tontos
3
+ Como contador
4
+ Quiero saber la suma de los números
5
+
6
+ Escenario: dos números
7
+ Dado que he introducido 5
8
+ Y he introducido 7
9
+ Cuando añado
10
+ Entonces el resultado debe ser 12
11
+
12
+ Escenario: tres números
13
+ Dado que he introducido 5
14
+ Y he introducido 7
15
+ Y he introducido 1
16
+ Cuando añado
17
+ Entonces el resultado debe ser 13
@@ -0,0 +1,22 @@
1
+ require 'spec'
2
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
+ require 'calculador'
4
+
5
+ Before do
6
+ @calc = Calculador.new
7
+ end
8
+
9
+ After do
10
+ end
11
+
12
+ Given /he introducido (\d+)/ do |n|
13
+ @calc.push n.to_i
14
+ end
15
+
16
+ When 'añado' do
17
+ @result = @calc.add
18
+ end
19
+
20
+ Then /el resultado debe ser (\d*)/ do |result|
21
+ @result.should == result.to_i
22
+ end
@@ -0,0 +1,11 @@
1
+ class Calculador
2
+ def push(n)
3
+ @args ||= []
4
+ @args << n
5
+ end
6
+
7
+ def add
8
+ #@args[0] + @args[1]
9
+ @args.inject(0){|n,sum| sum+=n}
10
+ end
11
+ 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 et"
6
+ end
@@ -0,0 +1,17 @@
1
+ Omadus: Liitmine
2
+ Selleks et vältida rumalaid vigu
3
+ Olles matemaatika-puupea
4
+ Tahan et mulle öeldaks kahe numbri summa
5
+
6
+ Stsenaarium: Liida kaks numbrit
7
+ Eeldades et olen sisestanud kalkulaatorisse numbri 50
8
+ Ja olen sisestanud kalkulaatorisse numbri 70
9
+ Kui ma vajutan liida
10
+ Siis vastuseks peab ekraanil kuvatama 120
11
+ Ja vastuseklass peab olema tüüpi Fixnum
12
+
13
+ More Examples:
14
+ | input_1 | input_2 | button | output | class |
15
+ | 20 | 30 | liida | 50 | Fixnum |
16
+ | 2 | 5 | liida | 7 | Fixnum |
17
+ | 0 | 40 | liida | 40 | Fixnum |