kosmas58-cucumber 0.1.16.6 → 0.1.99.21

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 (248) hide show
  1. data/History.txt +126 -2
  2. data/License.txt +1 -1
  3. data/Manifest.txt +0 -270
  4. data/Rakefile +1 -1
  5. data/bin/cucumber +2 -2
  6. data/config/hoe.rb +7 -2
  7. data/examples/cs/features/step_definitons/calculator_steps.rb +1 -1
  8. data/examples/i18n/README.textile +1 -1
  9. data/examples/i18n/Rakefile +3 -3
  10. data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +1 -6
  11. data/examples/i18n/da/features/step_definitons/kalkulator_steps.rb +1 -1
  12. data/examples/i18n/de/features/addition.feature +6 -6
  13. data/examples/i18n/de/features/step_definitons/calculator_steps.rb +2 -2
  14. data/examples/i18n/en/features/addition.feature +6 -6
  15. data/examples/i18n/en/features/step_definitons/calculator_steps.rb +2 -2
  16. data/examples/i18n/es/features/adicion.feature +11 -12
  17. data/examples/i18n/es/features/step_definitons/calculador_steps.rb +7 -10
  18. data/examples/i18n/es/lib/calculador.rb +4 -1
  19. data/examples/i18n/et/features/liitmine.feature +7 -6
  20. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +1 -1
  21. data/examples/i18n/fi/features/step_definitons/laskin_steps.rb +1 -1
  22. data/examples/i18n/fi/features/yhteenlasku.feature +2 -2
  23. data/examples/i18n/fr/features/addition.feature +2 -2
  24. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +1 -1
  25. data/examples/i18n/id/features/addition.feature +6 -6
  26. data/examples/i18n/id/features/step_definitons/calculator_steps.rb +2 -2
  27. data/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +1 -1
  28. data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +2 -3
  29. data/examples/i18n/ko/features/step_definitons/calculator_steps.rb +1 -1
  30. data/examples/i18n/lt/features/addition.feature +7 -6
  31. data/examples/i18n/lt/features/step_definitons/calculator_steps.rb +2 -2
  32. data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +7 -7
  33. data/examples/i18n/no/features/summering.feature +1 -0
  34. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +1 -1
  35. data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +1 -1
  36. data/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +1 -1
  37. data/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +2 -2
  38. data/examples/java/src/cucumber/demo/Hello.java +16 -0
  39. data/examples/jbehave/README.textile +17 -0
  40. data/examples/jbehave/features/support/env.rb +7 -0
  41. data/examples/jbehave/features/trading.feature +24 -0
  42. data/examples/jbehave/pom.xml +48 -0
  43. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/converters/TraderConverter.java +32 -0
  44. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/model/Stock.java +42 -0
  45. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/model/Trader.java +29 -0
  46. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/persistence/TraderPersister.java +22 -0
  47. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/scenarios/TraderSteps.java +65 -0
  48. data/examples/self_test/README.textile +4 -1
  49. data/examples/{calculator_ruby_features → self_test}/Rakefile +3 -3
  50. data/examples/self_test/features/background/failing_background.feature +10 -0
  51. data/examples/self_test/features/background/failing_background_after_success.feature +11 -0
  52. data/examples/self_test/features/background/multiline_args_background.feature +32 -0
  53. data/examples/self_test/features/background/passing_background.feature +10 -0
  54. data/examples/self_test/features/background/pending_background.feature +10 -0
  55. data/examples/self_test/features/background/scenario_outline_failing_background.feature +16 -0
  56. data/examples/self_test/features/background/scenario_outline_passing_background.feature +16 -0
  57. data/examples/self_test/features/call_undefined_step_from_step_def.feature +7 -0
  58. data/examples/self_test/features/lots_of_undefined.feature +8 -0
  59. data/examples/self_test/features/outline_sample.feature +11 -5
  60. data/examples/self_test/features/sample.feature +8 -3
  61. data/examples/self_test/features/step_definitions/sample_steps.rb +53 -4
  62. data/examples/self_test/features/support/env.rb +1 -0
  63. data/examples/self_test/features/support/tag_count_formatter.rb +25 -0
  64. data/examples/tickets/features/172.feature +28 -0
  65. data/examples/tickets/features/177/1.feature +29 -0
  66. data/examples/tickets/features/177/2.feature +21 -0
  67. data/examples/tickets/features/177/3.feature +18 -0
  68. data/examples/tickets/features/180.feature +7 -0
  69. data/examples/tickets/features/scenario_outline.feature +6 -1
  70. data/examples/tickets/features/step_definitons/tickets_steps.rb +27 -3
  71. data/examples/tickets/features/tickets.feature +4 -0
  72. data/features/background.feature +223 -0
  73. data/features/cucumber_cli.feature +218 -98
  74. data/features/cucumber_cli_outlines.feature +54 -37
  75. data/features/custom_formatter.feature +11 -0
  76. data/features/report_called_undefined_steps.feature +32 -0
  77. data/features/step_definitions/cucumber_steps.rb +7 -3
  78. data/features/step_definitions/extra_steps.rb +1 -1
  79. data/features/support/env.rb +2 -1
  80. data/gem_tasks/flog.rake +1 -1
  81. data/gem_tasks/gemspec.rake +2 -2
  82. data/gem_tasks/jar.rake +67 -0
  83. data/lib/autotest/cucumber_mixin.rb +17 -23
  84. data/lib/cucumber.rb +63 -11
  85. data/lib/cucumber/ast.rb +29 -0
  86. data/lib/cucumber/ast/background.rb +88 -0
  87. data/lib/cucumber/ast/comment.rb +26 -0
  88. data/lib/cucumber/ast/examples.rb +26 -0
  89. data/lib/cucumber/ast/feature.rb +66 -0
  90. data/lib/cucumber/ast/features.rb +39 -0
  91. data/lib/cucumber/ast/filter.rb +22 -0
  92. data/lib/cucumber/ast/outline_table.rb +49 -0
  93. data/lib/cucumber/ast/py_string.rb +52 -0
  94. data/lib/cucumber/ast/scenario.rb +103 -0
  95. data/lib/cucumber/ast/scenario_outline.rb +92 -0
  96. data/lib/cucumber/ast/step.rb +161 -0
  97. data/lib/cucumber/ast/steps.rb +13 -0
  98. data/lib/cucumber/ast/table.rb +218 -0
  99. data/lib/cucumber/ast/tags.rb +40 -0
  100. data/lib/cucumber/ast/visitor.rb +109 -0
  101. data/lib/cucumber/broadcaster.rb +1 -6
  102. data/lib/cucumber/cli/configuration.rb +339 -0
  103. data/lib/cucumber/cli/language_help_formatter.rb +59 -0
  104. data/lib/cucumber/cli/main.rb +100 -0
  105. data/lib/cucumber/core_ext/exception.rb +41 -8
  106. data/lib/cucumber/core_ext/instance_exec.rb +54 -0
  107. data/lib/cucumber/core_ext/proc.rb +29 -65
  108. data/lib/cucumber/core_ext/string.rb +19 -0
  109. data/lib/cucumber/formatter.rb +1 -0
  110. data/lib/cucumber/{formatters → formatter}/ansicolor.rb +14 -16
  111. data/lib/cucumber/formatter/color_io.rb +17 -0
  112. data/lib/cucumber/formatter/console.rb +119 -0
  113. data/lib/cucumber/formatter/cucumber.css +55 -0
  114. data/lib/cucumber/formatter/cucumber.sass +49 -0
  115. data/lib/cucumber/formatter/html.rb +121 -0
  116. data/lib/cucumber/formatter/pretty.rb +167 -0
  117. data/lib/cucumber/formatter/profile.rb +77 -0
  118. data/lib/cucumber/formatter/progress.rb +68 -0
  119. data/lib/cucumber/formatter/rerun.rb +35 -0
  120. data/lib/cucumber/formatter/unicode.rb +35 -0
  121. data/lib/cucumber/formatters/unicode.rb +2 -35
  122. data/lib/cucumber/jbehave.rb +102 -0
  123. data/lib/cucumber/languages.yml +128 -75
  124. data/lib/cucumber/parser.rb +43 -0
  125. data/lib/cucumber/parser/basic.rb +0 -0
  126. data/lib/cucumber/parser/feature.rb +1490 -0
  127. data/lib/cucumber/parser/feature.tt +188 -0
  128. data/lib/cucumber/parser/i18n.tt +31 -0
  129. data/lib/cucumber/parser/table.rb +402 -0
  130. data/lib/cucumber/parser/table.tt +59 -0
  131. data/lib/cucumber/parser/treetop_ext.rb +75 -0
  132. data/lib/cucumber/platform.rb +3 -17
  133. data/lib/cucumber/rails/rspec.rb +5 -2
  134. data/lib/cucumber/step_definition.rb +87 -0
  135. data/lib/cucumber/step_mother.rb +151 -66
  136. data/lib/cucumber/version.rb +2 -2
  137. data/rails_generators/cucumber/USAGE +3 -2
  138. data/rails_generators/cucumber/cucumber_generator.rb +33 -23
  139. data/rails_generators/cucumber/templates/cucumber +2 -1
  140. data/rails_generators/cucumber/templates/cucumber.rake +6 -1
  141. data/rails_generators/cucumber/templates/env.rb +1 -1
  142. data/rails_generators/feature/USAGE +3 -0
  143. data/rails_generators/feature/feature_generator.rb +30 -6
  144. data/spec/cucumber/ast/background_spec.rb +58 -0
  145. data/spec/cucumber/ast/feature_factory.rb +54 -0
  146. data/spec/cucumber/ast/feature_spec.rb +60 -0
  147. data/spec/cucumber/ast/py_string_spec.rb +40 -0
  148. data/spec/cucumber/ast/scenario_outline_spec.rb +64 -0
  149. data/spec/cucumber/ast/scenario_spec.rb +82 -0
  150. data/spec/cucumber/ast/step_spec.rb +45 -0
  151. data/spec/cucumber/ast/table_spec.rb +81 -0
  152. data/spec/cucumber/ast/tags_spec.rb +23 -0
  153. data/spec/cucumber/broadcaster_spec.rb +4 -17
  154. data/spec/cucumber/cli/configuration_spec.rb +239 -0
  155. data/spec/cucumber/cli/main_spec.rb +164 -0
  156. data/spec/cucumber/core_ext/proc_spec.rb +27 -35
  157. data/spec/cucumber/core_ext/string_spec.rb +8 -0
  158. data/spec/cucumber/{formatters → formatter}/ansicolor_spec.rb +2 -2
  159. data/spec/cucumber/formatter/html/cucumber.css +37 -0
  160. data/spec/cucumber/formatter/html/cucumber.js +13 -0
  161. data/spec/cucumber/formatter/html/index.html +45 -0
  162. data/spec/cucumber/formatter/html/jquery-1.3.min.js +19 -0
  163. data/spec/cucumber/formatter/html/jquery.uitableedit.js +100 -0
  164. data/spec/cucumber/formatters/profile_formatter_spec.rb +17 -16
  165. data/spec/cucumber/parser/feature_parser_spec.rb +281 -0
  166. data/spec/cucumber/parser/table_parser_spec.rb +48 -0
  167. data/spec/cucumber/step_definition_spec.rb +62 -0
  168. data/spec/cucumber/step_mother_spec.rb +50 -51
  169. data/spec/cucumber/treetop_parser/empty_feature.feature +1 -1
  170. data/spec/cucumber/treetop_parser/scenario_outline.feature +1 -1
  171. data/spec/cucumber/treetop_parser/spaces.feature +3 -1
  172. data/spec/cucumber/treetop_parser/with_comments.feature +1 -1
  173. data/spec/cucumber/treetop_parser/with_tags.feature +18 -0
  174. data/spec/cucumber/world/pending_spec.rb +13 -12
  175. data/spec/spec_helper.rb +1 -1
  176. metadata +107 -79
  177. data/examples/calculator_ruby_features/features/addition.rb +0 -39
  178. data/examples/calculator_ruby_features/features/step_definitons/calculator_steps.rb +0 -43
  179. data/gem_tasks/treetop.rake +0 -41
  180. data/lib/cucumber/cli.rb +0 -355
  181. data/lib/cucumber/executor.rb +0 -205
  182. data/lib/cucumber/formatters.rb +0 -1
  183. data/lib/cucumber/formatters/autotest_formatter.rb +0 -23
  184. data/lib/cucumber/formatters/cucumber.css +0 -132
  185. data/lib/cucumber/formatters/cucumber.js +0 -11
  186. data/lib/cucumber/formatters/html_formatter.rb +0 -152
  187. data/lib/cucumber/formatters/jquery.js +0 -32
  188. data/lib/cucumber/formatters/pretty_formatter.rb +0 -285
  189. data/lib/cucumber/formatters/profile_formatter.rb +0 -92
  190. data/lib/cucumber/formatters/progress_formatter.rb +0 -61
  191. data/lib/cucumber/model.rb +0 -1
  192. data/lib/cucumber/model/table.rb +0 -32
  193. data/lib/cucumber/step_methods.rb +0 -49
  194. data/lib/cucumber/tree.rb +0 -16
  195. data/lib/cucumber/tree/feature.rb +0 -105
  196. data/lib/cucumber/tree/features.rb +0 -21
  197. data/lib/cucumber/tree/given_scenario.rb +0 -13
  198. data/lib/cucumber/tree/scenario.rb +0 -240
  199. data/lib/cucumber/tree/step.rb +0 -173
  200. data/lib/cucumber/tree/table.rb +0 -26
  201. data/lib/cucumber/tree/top_down_visitor.rb +0 -23
  202. data/lib/cucumber/treetop_parser/feature.treetop.erb +0 -254
  203. data/lib/cucumber/treetop_parser/feature_ar.rb +0 -1951
  204. data/lib/cucumber/treetop_parser/feature_cy.rb +0 -1951
  205. data/lib/cucumber/treetop_parser/feature_da.rb +0 -1951
  206. data/lib/cucumber/treetop_parser/feature_de.rb +0 -1951
  207. data/lib/cucumber/treetop_parser/feature_en-lol.rb +0 -1951
  208. data/lib/cucumber/treetop_parser/feature_en-tx.rb +0 -1951
  209. data/lib/cucumber/treetop_parser/feature_en.rb +0 -1951
  210. data/lib/cucumber/treetop_parser/feature_es.rb +0 -1951
  211. data/lib/cucumber/treetop_parser/feature_et.rb +0 -1951
  212. data/lib/cucumber/treetop_parser/feature_fi.rb +0 -1951
  213. data/lib/cucumber/treetop_parser/feature_fr.rb +0 -1951
  214. data/lib/cucumber/treetop_parser/feature_id.rb +0 -1951
  215. data/lib/cucumber/treetop_parser/feature_it.rb +0 -1951
  216. data/lib/cucumber/treetop_parser/feature_ja.rb +0 -1951
  217. data/lib/cucumber/treetop_parser/feature_ko.rb +0 -1951
  218. data/lib/cucumber/treetop_parser/feature_lt.rb +0 -1951
  219. data/lib/cucumber/treetop_parser/feature_nl.rb +0 -1951
  220. data/lib/cucumber/treetop_parser/feature_no.rb +0 -1951
  221. data/lib/cucumber/treetop_parser/feature_parser.rb +0 -36
  222. data/lib/cucumber/treetop_parser/feature_pl.rb +0 -1951
  223. data/lib/cucumber/treetop_parser/feature_pt.rb +0 -1951
  224. data/lib/cucumber/treetop_parser/feature_ro.rb +0 -1951
  225. data/lib/cucumber/treetop_parser/feature_ro2.rb +0 -1951
  226. data/lib/cucumber/treetop_parser/feature_ru.rb +0 -1951
  227. data/lib/cucumber/treetop_parser/feature_se.rb +0 -1951
  228. data/lib/cucumber/treetop_parser/feature_zh-CN.rb +0 -1951
  229. data/lib/cucumber/world.rb +0 -1
  230. data/lib/cucumber/world/pending.rb +0 -22
  231. data/setup.rb +0 -1585
  232. data/spec/cucumber/cli_spec.rb +0 -521
  233. data/spec/cucumber/executor_spec.rb +0 -382
  234. data/spec/cucumber/formatters/autotest_formatter_spec.rb +0 -26
  235. data/spec/cucumber/formatters/features.html +0 -269
  236. data/spec/cucumber/formatters/html_formatter_spec.rb +0 -110
  237. data/spec/cucumber/formatters/pretty_formatter_spec.rb +0 -410
  238. data/spec/cucumber/formatters/progress_formatter_spec.rb +0 -81
  239. data/spec/cucumber/model/table_spec.rb +0 -32
  240. data/spec/cucumber/tree/feature_spec.rb +0 -122
  241. data/spec/cucumber/tree/row_scenario_outline_spec.rb +0 -73
  242. data/spec/cucumber/tree/row_scenario_spec.rb +0 -55
  243. data/spec/cucumber/tree/row_step_outline_spec.rb +0 -38
  244. data/spec/cucumber/tree/scenario_outline_spec.rb +0 -50
  245. data/spec/cucumber/tree/scenario_spec.rb +0 -134
  246. data/spec/cucumber/tree/step_outline_spec.rb +0 -17
  247. data/spec/cucumber/tree/step_spec.rb +0 -59
  248. data/spec/cucumber/treetop_parser/feature_parser_spec.rb +0 -120
@@ -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
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  require 'spec/expectations'
3
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
4
4
  require 'cucumber/formatters/unicode'
5
5
  require 'calculadora'
6
6
 
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  require 'spec/expectations'
3
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
4
4
  require 'cucumber/formatters/unicode'
5
5
  require 'calculator'
6
6
 
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  require 'spec/expectations'
3
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
4
4
  require 'cucumber/formatters/unicode'
5
5
  require 'kalkulator'
6
6
 
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  require 'spec/expectations'
3
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
+ $:.unshift(File.dirname(__FILE__) + '/../../lib') # This line is not needed in your own project
4
4
  require 'cucumber/formatters/unicode'
5
5
  require 'calculator'
6
6
 
@@ -11,7 +11,7 @@ end
11
11
  After do
12
12
  end
13
13
 
14
- Given "我已经在计算器里输入$n" do |n|
14
+ Given /我已经在计算器里输入(\d+)/ do |n|
15
15
  @calc.push n.to_i
16
16
  end
17
17
 
@@ -0,0 +1,16 @@
1
+ package cucumber.demo;
2
+
3
+ public class Hello {
4
+ public String greet(String who, String from) {
5
+ return "Hi, " + who + ". I'm " + from;
6
+ }
7
+
8
+ public boolean isFriend(String who) {
9
+ return true;
10
+ }
11
+
12
+ public String getPhoneNumber(String who) {
13
+ throw new RuntimeException("NOPE");
14
+ //return "98219458";
15
+ }
16
+ }
@@ -0,0 +1,17 @@
1
+ h1. Cucumber and JBehave
2
+
3
+ Look ma - no Ruby!
4
+
5
+ h2. Running the example
6
+
7
+ First, compile the java code (and JBehave steps)
8
+
9
+ <code>mvn compile jar:jar</code>
10
+
11
+ Second, run Cucumber:
12
+
13
+ <code>jruby -S cucumber features</code>
14
+
15
+ Or if you got the source with Git:
16
+
17
+ <code>jruby ../../bin/cucumber features</code>
@@ -0,0 +1,7 @@
1
+ require 'cucumber/jbehave'
2
+
3
+ project_code = File.expand_path(File.dirname(__FILE__) + '/../../target/jbehave-example-0.2-SNAPSHOT.jar')
4
+ require project_code
5
+
6
+ import 'cukes.jbehave.examples.trader.scenarios.TraderSteps'
7
+ JBehave(TraderSteps.new)
@@ -0,0 +1,24 @@
1
+ Feature: Trading
2
+ In order to avoid lost trades
3
+ Traders should be alerted about stocks
4
+
5
+ Scenario: Status alert can be activated
6
+ Given a stock of prices 0.5,1.0 and a threshold of 10.0
7
+ When the stock is traded at 5.0
8
+ Then the alert status should be OFF
9
+ When the stock is traded at 11.0
10
+ Then the alert status should be ON
11
+
12
+ Scenario: Status alert is never activated
13
+ Given a stock of prices 0.5,1.0 and a threshold of 15.0
14
+ When the stock is traded at 5.0
15
+ Then the alert status should be OFF
16
+ When the stock is traded at 11.0
17
+ Then the alert status should be OFF
18
+
19
+ Scenario: Trader sells all stocks
20
+ Given a trader of name Mauro
21
+ Given a stock of prices 0.5,1.0 and a threshold of 1.5
22
+ When the stock is traded at 2.0
23
+ Then the trader sells all stocks
24
+ And the trader gets a bonus
@@ -0,0 +1,48 @@
1
+ <project xmlns="http://maven.apache.org/POM/4.0.0"
2
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
4
+ http://maven.apache.org/xsd/maven-4.0.0.xsd">
5
+ <modelVersion>4.0.0</modelVersion>
6
+ <groupId>cukes</groupId>
7
+ <artifactId>jbehave-example</artifactId>
8
+ <packaging>jar</packaging>
9
+ <version>0.2-SNAPSHOT</version>
10
+ <name>Cucumber JBehave Example</name>
11
+ <url>http://cukes.info/</url>
12
+
13
+ <repositories>
14
+ <repository>
15
+ <id>codehaus</id>
16
+ <url>http://repository.codehaus.org</url>
17
+ </repository>
18
+ </repositories>
19
+
20
+ <dependencies>
21
+ <dependency>
22
+ <groupId>org.jbehave</groupId>
23
+ <artifactId>jbehave-core</artifactId>
24
+ <version>2.1.1</version>
25
+ </dependency>
26
+ <dependency>
27
+ <groupId>junit</groupId>
28
+ <artifactId>junit</artifactId>
29
+ <version>4.4</version>
30
+ </dependency>
31
+ </dependencies>
32
+
33
+ <build>
34
+ <pluginManagement>
35
+ <plugins>
36
+ <plugin>
37
+ <groupId>org.apache.maven.plugins</groupId>
38
+ <artifactId>maven-compiler-plugin</artifactId>
39
+ <version>2.0.2</version>
40
+ <configuration>
41
+ <source>1.5</source>
42
+ <target>1.5</target>
43
+ </configuration>
44
+ </plugin>
45
+ </plugins>
46
+ </pluginManagement>
47
+ </build>
48
+ </project>
@@ -0,0 +1,32 @@
1
+ package cukes.jbehave.examples.trader.converters;
2
+
3
+ import java.lang.reflect.Type;
4
+
5
+ import cukes.jbehave.examples.trader.model.Trader;
6
+ import cukes.jbehave.examples.trader.persistence.TraderPersister;
7
+ import org.jbehave.scenario.steps.ParameterConverters.InvalidParameterException;
8
+ import org.jbehave.scenario.steps.ParameterConverters.ParameterConverter;
9
+
10
+ public class TraderConverter implements ParameterConverter {
11
+ private TraderPersister persister;
12
+
13
+ public TraderConverter(TraderPersister persister) {
14
+ this.persister = persister;
15
+ }
16
+
17
+ public boolean accept(Type type) {
18
+ if (type instanceof Class) {
19
+ return Trader.class.isAssignableFrom((Class<?>) type);
20
+ }
21
+ return false;
22
+ }
23
+
24
+ public Object convertValue(String value, Type type) {
25
+ Trader trader = persister.retrieveTrader(value);
26
+ if (trader == null) {
27
+ throw new InvalidParameterException("Trader not found for name " + value, null);
28
+ }
29
+ return trader;
30
+ }
31
+
32
+ }
@@ -0,0 +1,42 @@
1
+ package cukes.jbehave.examples.trader.model;
2
+
3
+ import static cukes.jbehave.examples.trader.model.Stock.AlertStatus.OFF;
4
+ import static cukes.jbehave.examples.trader.model.Stock.AlertStatus.ON;
5
+
6
+ import java.util.List;
7
+
8
+ public class Stock {
9
+
10
+ public enum AlertStatus {
11
+ ON, OFF
12
+ };
13
+
14
+ private List<Double> prices;
15
+ private double alertPrice;
16
+ private AlertStatus status = OFF;
17
+
18
+ public Stock(List<Double> prices, double alertPrice) {
19
+ this.prices = prices;
20
+ this.alertPrice = alertPrice;
21
+ }
22
+
23
+ public List<Double> getPrices() {
24
+ return prices;
25
+ }
26
+
27
+ public void tradeAt(double price) {
28
+ this.prices.add(price);
29
+ if (price > alertPrice) {
30
+ status = ON;
31
+ }
32
+ }
33
+
34
+ public void resetAlert() {
35
+ status = OFF;
36
+ }
37
+
38
+ public AlertStatus getStatus() {
39
+ return status;
40
+ }
41
+
42
+ }
@@ -0,0 +1,29 @@
1
+ package cukes.jbehave.examples.trader.model;
2
+
3
+ import static java.util.Arrays.asList;
4
+
5
+ import java.util.List;
6
+
7
+ public class Trader {
8
+
9
+ private final String name;
10
+ private List<Stock> stocks;
11
+
12
+ public Trader(String name, List<Stock> stocks) {
13
+ this.name = name;
14
+ this.stocks = stocks;
15
+ }
16
+
17
+ public String getName() {
18
+ return name;
19
+ }
20
+
21
+ public List<Stock> getStocks() {
22
+ return stocks;
23
+ }
24
+
25
+ public void sellAllStocks(){
26
+ this.stocks = asList(new Stock[]{});
27
+ }
28
+
29
+ }
@@ -0,0 +1,22 @@
1
+ package cukes.jbehave.examples.trader.persistence;
2
+
3
+ import cukes.jbehave.examples.trader.model.Trader;
4
+
5
+ public class TraderPersister {
6
+
7
+ private Trader[] traders;
8
+
9
+ public TraderPersister(Trader... traders) {
10
+ this.traders = traders;
11
+ }
12
+
13
+ public Trader retrieveTrader(String name) {
14
+ for (Trader trader : traders) {
15
+ if (trader.getName().equals(name)) {
16
+ return trader;
17
+ }
18
+ }
19
+ return null;
20
+ }
21
+
22
+ }
@@ -0,0 +1,65 @@
1
+ package cukes.jbehave.examples.trader.scenarios;
2
+
3
+ import static java.util.Arrays.asList;
4
+ import static org.hamcrest.CoreMatchers.equalTo;
5
+ import static org.jbehave.Ensure.ensureThat;
6
+
7
+ import java.util.List;
8
+
9
+ import cukes.jbehave.examples.trader.converters.TraderConverter;
10
+ import cukes.jbehave.examples.trader.model.Stock;
11
+ import cukes.jbehave.examples.trader.model.Trader;
12
+ import cukes.jbehave.examples.trader.persistence.TraderPersister;
13
+ import org.jbehave.scenario.annotations.Given;
14
+ import org.jbehave.scenario.annotations.Then;
15
+ import org.jbehave.scenario.annotations.When;
16
+ import org.jbehave.scenario.parser.PrefixCapturingPatternBuilder;
17
+ import org.jbehave.scenario.steps.ParameterConverters;
18
+ import org.jbehave.scenario.steps.SilentStepMonitor;
19
+ import org.jbehave.scenario.steps.Steps;
20
+ import org.jbehave.scenario.steps.StepsConfiguration;
21
+
22
+ public class TraderSteps extends Steps {
23
+
24
+ private static final StepsConfiguration configuration = new StepsConfiguration();
25
+ private Stock stock;
26
+ private Trader trader;
27
+
28
+ public TraderSteps() {
29
+ super(configuration);
30
+ configuration.useParameterConverters(new ParameterConverters(
31
+ new SilentStepMonitor(), new TraderConverter(mockTradePersister())));
32
+ configuration.usePatternBuilder(new PrefixCapturingPatternBuilder("%"));
33
+ }
34
+
35
+ private TraderPersister mockTradePersister() {
36
+ return new TraderPersister(new Trader("Mauro", asList(new Stock(asList(1.0d), 10.d))));
37
+ }
38
+
39
+ @Given("a trader of name %trader")
40
+ public void aTrader(Trader trader) {
41
+ this.trader = trader;
42
+ }
43
+
44
+ @Given("a stock of prices %prices and a threshold of %threshold")
45
+ public void aStockOfPrice(List<Double> prices, double threshold) {
46
+ stock = new Stock(prices, threshold);
47
+ }
48
+
49
+ @When("the stock is traded at %price")
50
+ public void theStockIsTradedAt(double price) {
51
+ stock.tradeAt(price);
52
+ }
53
+
54
+ @Then("the alert status should be %status")
55
+ public void theAlertStatusShouldBe(String status) {
56
+ ensureThat(stock.getStatus().name(), equalTo(status));
57
+ }
58
+
59
+ @Then("the trader sells all stocks")
60
+ public void theTraderSellsAllStocks() {
61
+ trader.sellAllStocks();
62
+ ensureThat(trader.getStocks().size(), equalTo(0));
63
+ }
64
+
65
+ }
@@ -1,3 +1,6 @@
1
1
  h1. Self Test
2
2
 
3
- Cucumber's own features (ROOT_DIR/features) run the features in this directory and look at the output.
3
+ Cucumber's own features (ROOT_DIR/features) run the features in this directory and look at the output.
4
+
5
+ Note that several of these fail intentionally. The purpose is to verify actual output against expected
6
+ output.
@@ -1,6 +1,6 @@
1
1
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
2
2
  require 'cucumber/rake/task'
3
3
 
4
- Cucumber::Rake::Task.new do |t|
5
- t.cucumber_opts = "--format pretty"
6
- end
4
+ Cucumber::Rake::Task.new
5
+
6
+ task :default => :features
@@ -0,0 +1,10 @@
1
+ Feature: Failing background sample
2
+
3
+ Background:
4
+ Given failing without a table
5
+
6
+ Scenario: failing background
7
+ Then I should have '10' cukes
8
+
9
+ Scenario: another failing background
10
+ Then I should have '10' cukes
@@ -0,0 +1,11 @@
1
+ Feature: Failing background after previously successful background sample
2
+
3
+ Background:
4
+ Given passing without a table
5
+ And '10' global cukes
6
+
7
+ Scenario: passing background
8
+ Then I should have '10' global cukes
9
+
10
+ Scenario: failing background
11
+ Then I should have '10' global cukes
@@ -0,0 +1,32 @@
1
+ Feature: Passing background with multiline args
2
+
3
+ Background:
4
+ Given table
5
+ |a|b|
6
+ |c|d|
7
+ And multiline string
8
+ """
9
+ I'm a cucumber and I'm okay.
10
+ I sleep all night and I test all day
11
+ """
12
+
13
+ Scenario: passing background
14
+ Then the table should be
15
+ |a|b|
16
+ |c|d|
17
+ Then the multiline string should be
18
+ """
19
+ I'm a cucumber and I'm okay.
20
+ I sleep all night and I test all day
21
+ """
22
+
23
+ Scenario: another passing background
24
+ Then the table should be
25
+ |a|b|
26
+ |c|d|
27
+ Then the multiline string should be
28
+ """
29
+ I'm a cucumber and I'm okay.
30
+ I sleep all night and I test all day
31
+ """
32
+