greenpepper-ruby 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. data/bin/greenpepperize +71 -0
  2. data/bin/greenpepperrails +33 -0
  3. data/bin/greenpepperruby +15 -0
  4. data/data/greenpepper.rake +37 -0
  5. data/data/helper.rb +32 -0
  6. data/data/tags +6 -0
  7. data/lib/greenpepper/argumentparser.rb +161 -0
  8. data/lib/greenpepper/common/loadpath.rb +7 -0
  9. data/lib/greenpepper/context/htmlcontext.rb +26 -0
  10. data/lib/greenpepper/converter.rb +347 -0
  11. data/lib/greenpepper/core.rb +152 -0
  12. data/lib/greenpepper/example/collectionexample.rb +305 -0
  13. data/lib/greenpepper/example/dowithexample.rb +192 -0
  14. data/lib/greenpepper/example/exampleheader.rb +41 -0
  15. data/lib/greenpepper/example/examplewithfixture.rb +73 -0
  16. data/lib/greenpepper/example/executionresults.rb +160 -0
  17. data/lib/greenpepper/example/fieldaccessor.rb +36 -0
  18. data/lib/greenpepper/example/freetextexample.rb +51 -0
  19. data/lib/greenpepper/example/importexample.rb +39 -0
  20. data/lib/greenpepper/example/nameresolver.rb +69 -0
  21. data/lib/greenpepper/example/ruleforexample.rb +117 -0
  22. data/lib/greenpepper/example/setupexample.rb +79 -0
  23. data/lib/greenpepper/example/silentexample.rb +14 -0
  24. data/lib/greenpepper/example/unknownexample.rb +17 -0
  25. data/lib/greenpepper/exception/greenpepperexception.rb +57 -0
  26. data/lib/greenpepper/executionunit.rb +39 -0
  27. data/lib/greenpepper/factory/collectionexamplefactory.rb +59 -0
  28. data/lib/greenpepper/factory/dowithexamplefactory.rb +71 -0
  29. data/lib/greenpepper/factory/examplefactory.rb +14 -0
  30. data/lib/greenpepper/factory/freetextexamplefactory.rb +29 -0
  31. data/lib/greenpepper/factory/htmlexamplefactory.rb +49 -0
  32. data/lib/greenpepper/factory/importexamplefactory.rb +27 -0
  33. data/lib/greenpepper/factory/ruleforexamplefactory.rb +46 -0
  34. data/lib/greenpepper/factory/setupexamplefactory.rb +31 -0
  35. data/lib/greenpepper/factory/silentexamplefactory.rb +21 -0
  36. data/lib/greenpepper/factory/unknownexamplefactory.rb +16 -0
  37. data/lib/greenpepper/freetext.rb +164 -0
  38. data/lib/greenpepper/grammar/array.treetop +51 -0
  39. data/lib/greenpepper/grammar/arrayparser.rb +14 -0
  40. data/lib/greenpepper/greenpepperconfig.rb +19 -0
  41. data/lib/greenpepper/greenpeppertask.rb +60 -0
  42. data/lib/greenpepper/logger.rb +45 -0
  43. data/lib/greenpepper/parser/freetextparser.rb +96 -0
  44. data/lib/greenpepper/parser/htmlparser.rb +70 -0
  45. data/lib/greenpepper/parser/scenario.rb +25 -0
  46. data/lib/greenpepper/parser/table.rb +37 -0
  47. data/lib/greenpepper/parser/wikiparser.rb +26 -0
  48. data/lib/greenpepper/pass/freetextpass.rb +24 -0
  49. data/lib/greenpepper/pass/greenpepperpass.rb +92 -0
  50. data/lib/greenpepper/pass/tablepass.rb +38 -0
  51. data/lib/greenpepper/railsargumentparser.rb +46 -0
  52. data/lib/greenpepper/redpeppertask.rb +89 -0
  53. data/lib/greenpepper/repository/atlassianrepository.rb +100 -0
  54. data/lib/greenpepper/writer/consolewriter.rb +21 -0
  55. data/lib/greenpepper/writer/freetextresult.rb +233 -0
  56. data/lib/greenpepper/writer/freetextwriter.rb +44 -0
  57. data/lib/greenpepper/writer/html.rb +14 -0
  58. data/lib/greenpepper/writer/htmldocwriter.rb +82 -0
  59. data/lib/greenpepper/writer/htmlresult.rb +192 -0
  60. data/lib/greenpepper/writer/htmlwriter.rb +112 -0
  61. data/lib/greenpepper/writer/output.rb +26 -0
  62. data/lib/greenpepper/writer/result.rb +35 -0
  63. data/lib/greenpepper/writer/xmlwriter.rb +32 -0
  64. data/test/coreseedstest.rb +39 -0
  65. data/test/greenpepper/argumentparsertest.rb +162 -0
  66. data/test/greenpepper/common/loadpathtest.rb +24 -0
  67. data/test/greenpepper/common/stattest.rb +186 -0
  68. data/test/greenpepper/convertertest.rb +371 -0
  69. data/test/greenpepper/coretest.rb +159 -0
  70. data/test/greenpepper/example/collectionexampletest.rb +484 -0
  71. data/test/greenpepper/example/dowithexampletest.rb +148 -0
  72. data/test/greenpepper/example/exampletest.rb +28 -0
  73. data/test/greenpepper/example/freetextexampletest.rb +151 -0
  74. data/test/greenpepper/example/importexampletest.rb +79 -0
  75. data/test/greenpepper/example/nameresolvertest.rb +56 -0
  76. data/test/greenpepper/example/ruleforexampletest.rb +225 -0
  77. data/test/greenpepper/example/setupexampletest.rb +140 -0
  78. data/test/greenpepper/example/silentexampletest.rb +17 -0
  79. data/test/greenpepper/example/unknownexampletest.rb +17 -0
  80. data/test/greenpepper/factory/collectionexamplefactorytest.rb +51 -0
  81. data/test/greenpepper/factory/dowithexamplefactorytest.rb +48 -0
  82. data/test/greenpepper/factory/examplefactorytest.rb +88 -0
  83. data/test/greenpepper/factory/freetextexamplefactorytest.rb +54 -0
  84. data/test/greenpepper/factory/importexamplefactorytest.rb +40 -0
  85. data/test/greenpepper/factory/ruleforexamplefactorytest.rb +55 -0
  86. data/test/greenpepper/factory/setupexamplefactorytest.rb +29 -0
  87. data/test/greenpepper/factory/silentexamplefactorytest.rb +38 -0
  88. data/test/greenpepper/freetexttest.rb +222 -0
  89. data/test/greenpepper/grammar/arrayparsertest.rb +45 -0
  90. data/test/greenpepper/loggertest.rb +26 -0
  91. data/test/greenpepper/parser/freetextparsertest.rb +124 -0
  92. data/test/greenpepper/parser/htmlparsertest.rb +77 -0
  93. data/test/greenpepper/parser/wikiparsertest.rb +21 -0
  94. data/test/greenpepper/pass/freetextpasstest.rb +54 -0
  95. data/test/greenpepper/pass/greenpepperpasstest.rb +47 -0
  96. data/test/greenpepper/pass/tablepasstest.rb +23 -0
  97. data/test/greenpepper/repository/atlassionrepositorytest.rb +85 -0
  98. data/test/greenpepper/writer/freetextwritertest.rb +301 -0
  99. data/test/greenpepper/writer/htmlcollectionwritertest.rb +145 -0
  100. data/test/greenpepper/writer/htmldowithwritertest.rb +87 -0
  101. data/test/greenpepper/writer/htmlruleforwritertest.rb +147 -0
  102. data/test/greenpepper/writer/htmlsetupwritertest.rb +107 -0
  103. data/test/greenpepper/writer/htmlstatresulttest.rb +118 -0
  104. data/test/greenpepper/writer/htmlwriterpositiontest.rb +53 -0
  105. data/test/greenpepper/writer/writertest.rb +33 -0
  106. data/test/greenpepper/writer/xmlwritertest.rb +34 -0
  107. data/test/integration/collectionexampleintegrationtest.rb +64 -0
  108. data/test/integration/errorhandlingintegrationtest.rb +68 -0
  109. data/test/integration/freetextexampleintegrationtest.rb +75 -0
  110. data/test/integration/greenpepperexecutableintegrationtest.rb +22 -0
  111. data/test/integration/importexampleintegrationtest.rb +41 -0
  112. data/test/integration/interpretationordertest.rb +48 -0
  113. data/test/integration/ruleforexampleintegrationtest.rb +102 -0
  114. data/test/integration/securityintegrationtest.rb +30 -0
  115. data/test/integration/setupexampleintegrationtest.rb +31 -0
  116. data/test/integration/silentexampleintegrationtest.rb +29 -0
  117. data/test/task/greenpeppertasktest.rb +96 -0
  118. data/test/task/redpeppertasktest.rb +120 -0
  119. data/vendor/accents.rb +85 -0
  120. metadata +234 -0
@@ -0,0 +1,48 @@
1
+ #~ license: GPLv3 http://www.gnu.org/licenses/gpl.txt
2
+ =begin
3
+ author: Steven Denis (denis.steven@gmail.com)
4
+ date: March 22, 2009
5
+ =end
6
+
7
+ require 'test/unit'
8
+ require 'test/fixtures/dowithfixture'
9
+ require 'test/helper/assert'
10
+
11
+ require 'greenpepper/factory/dowithexamplefactory'
12
+ require 'greenpepper/parser/table'
13
+
14
+ include GreenPepper
15
+
16
+ class DowithExampleFactoryTest < Test::Unit::TestCase
17
+ def setup
18
+ @do_with_table = Table.new
19
+ @do_with_table.push_row ['do with','Bank2']
20
+ @do_with_table.push_row ['open account', '123']
21
+ @do_with_table.push_row ['check', 'that amount for account', '123', 'is', '0']
22
+ @do_with_table.push_row ['accept', 'withdraw', '150', 'from account', '123']
23
+ @do_with_table.push_row ['reject', 'withdraw', '150', 'from account', '123']
24
+
25
+ @import_table = Table.new
26
+ @import_table.push_row ['import','Module1']
27
+
28
+ @factory = DoWithExampleFactory.new
29
+ end
30
+
31
+ def test_create_dowithexample_from_do_with_table
32
+ example = @factory.create_example @do_with_table
33
+
34
+ assert example.is_a?(DoWithExample)
35
+ assert_equal "Bank2", example.fixture_name
36
+
37
+ lines = example.lines
38
+ assert lines[0].function?
39
+ assert lines[1].check?
40
+ assert lines[2].accept?
41
+ assert lines[3].reject?
42
+ end
43
+
44
+ def test_support_do_with_table
45
+ assert @factory.support?(@do_with_table)
46
+ assert_equal false, @factory.support?(@import_table)
47
+ end
48
+ end
@@ -0,0 +1,88 @@
1
+ =begin
2
+ author: Eloise Dube (eloise.dube@gmail.com)
3
+ date : September 20, 2009
4
+ =end
5
+
6
+ require 'test/unit'
7
+ require 'greenpepper/parser/htmlparser'
8
+ require 'greenpepper/factory/ruleforexamplefactory'
9
+ require 'greenpepper/factory/importexamplefactory'
10
+ require 'greenpepper/factory/dowithexamplefactory'
11
+
12
+ include GreenPepper
13
+
14
+ class ExampleFactoryTest < Test::Unit::TestCase
15
+ def test_parser_should_build_rule_for_examples_from_html_file
16
+ tables = parse_file 'test/seeds/import_and_two_rule_for.html'
17
+ factory = HtmlExampleFactory.new [RuleForExampleFactory.new]
18
+
19
+ examples = build_examples factory, tables
20
+ assert_equal RuleForExample, examples[1].class
21
+ end
22
+
23
+ def test_example_factory_should_build_import_examples_from_html_file
24
+ tables = parse_file 'test/seeds/import_and_two_rule_for.html'
25
+ factory = HtmlExampleFactory.new [ImportExampleFactory.new]
26
+
27
+ examples = build_examples factory, tables
28
+ assert_equal ImportExample, examples[0].class
29
+ end
30
+
31
+ def test_example_factory_should_build_examples_of_multiples_type
32
+ tables = parse_file 'test/seeds/import_and_two_rule_for.html'
33
+ factory = HtmlExampleFactory.new [ImportExampleFactory.new,
34
+ RuleForExampleFactory.new]
35
+
36
+ examples = build_examples factory, tables
37
+ assert_equal 3, examples.size
38
+ assert_equal ImportExample, examples[0].class
39
+ assert_equal RuleForExample, examples[1].class
40
+ assert_equal RuleForExample, examples[2].class
41
+ end
42
+
43
+ def test_example_factory_should_build_do_with_example_with_multiple_lines
44
+ factory = HtmlExampleFactory.new([ImportExampleFactory.new,
45
+ RuleForExampleFactory.new,
46
+ DoWithExampleFactory.new])
47
+
48
+ tables = parse_file 'test/seeds/dowith_multiple_tables.html'
49
+
50
+ examples = build_examples factory, tables
51
+ assert_equal 1, examples.size
52
+ assert_equal DoWithExample, examples[0].class
53
+ end
54
+
55
+ def test_example_factory_should_build_do_with_example_with_multiple_lines
56
+ factory = HtmlExampleFactory.new([ImportExampleFactory.new,
57
+ RuleForExampleFactory.new,
58
+ DoWithExampleFactory.new])
59
+
60
+ tables = parse_file 'test/seeds/dowith_single_table.html'
61
+
62
+ examples = build_examples factory, tables
63
+ assert_equal 1, examples.size
64
+ assert_equal DoWithExample, examples[0].class
65
+ end
66
+
67
+ private
68
+ def parse_file file
69
+ parser = HtmlParser.new
70
+ parser.parse_file file
71
+ end
72
+
73
+ def build_examples(factory, tables)
74
+ examples = []
75
+ i = 0
76
+ while i < tables.size
77
+ factory.push_content tables[i].content
78
+ i += 1
79
+ while factory.need_more_content?
80
+ factory.push_content tables[i].content
81
+ i += 1
82
+ end
83
+ example, new_context = factory.build_example
84
+ examples << example
85
+ end
86
+ examples
87
+ end
88
+ end
@@ -0,0 +1,54 @@
1
+ =begin
2
+ author: Simon Mathieu (simon.math@gmail.com)
3
+ date: September 30, 2009
4
+ =end
5
+
6
+ require 'test/unit'
7
+ require 'greenpepper/freetext'
8
+ require 'greenpepper/factory/freetextexamplefactory'
9
+ require 'greenpepper/parser/scenario'
10
+
11
+ include GreenPepper
12
+
13
+ class FreeTextExampleFactoryTest < Test::Unit::TestCase
14
+ def setup
15
+ @factory = FreeTextExampleFactory.new
16
+ end
17
+
18
+ def test_build_free_text_example
19
+ scenario = Scenario.new "TestFixtureFreeTextFactory"
20
+ scenario.add_line "First Line."
21
+
22
+ example = create_example scenario
23
+
24
+ assert example.is_a?(FreeTextExample)
25
+ assert_equal "TestFixtureFreeTextFactory", example.fixture_name
26
+ end
27
+
28
+ def test_build_free_text_example_with_fixture_with_multiple_words
29
+ scenario = Scenario.new "Test Fixture Free Text Factory"
30
+ scenario.add_line "First Line."
31
+
32
+ example = create_example scenario
33
+
34
+ assert_equal "Test Fixture Free Text Factory", example.fixture_name
35
+ end
36
+
37
+ def test_build_free_text_example_with_multiple_actions
38
+ scenario = Scenario.new "TestFixtureFreeTextFactory"
39
+ scenario.add_line "First Line."
40
+ scenario.add_line "Second Line."
41
+ scenario.add_line "Third Line."
42
+
43
+ example = create_example scenario
44
+
45
+ assert_equal ['First Line.', 'Second Line.', 'Third Line.'],
46
+ example.actions
47
+ end
48
+
49
+ private
50
+ def create_example content
51
+ @factory.push_content content
52
+ @factory. build_example
53
+ end
54
+ end
@@ -0,0 +1,40 @@
1
+ =begin
2
+ author: Simon Mathieu (simon.math@gmail.com)
3
+ date: September 8, 2009
4
+ =end
5
+
6
+ require 'greenpepper/example/importexample'
7
+ require 'greenpepper/factory/importexamplefactory'
8
+ require 'test/helper/assertion'
9
+
10
+ include GreenPepper
11
+
12
+ class ImportExampleFactoryTest < Test::Unit::TestCase
13
+ def setup
14
+ @simple_table = Table.new
15
+ @simple_table.push_row ['import']
16
+ @simple_table.push_row ['test/common/importtestfixture']
17
+
18
+ @complex_table = Table.new
19
+ @complex_table.push_row ['Import']
20
+ @complex_table.push_row ['test/common/importtestfixture']
21
+ @complex_table.push_row ['test/common/importtestfixture2']
22
+
23
+ @factory = ImportExampleFactory.new
24
+ end
25
+
26
+ def test_factory_should_support_import_from_table
27
+ assert @factory.support?(@simple_table)
28
+ end
29
+
30
+ def test_factory_should_build_import_example_from_table
31
+ example = @factory.create_example @simple_table
32
+ assert_equal 'test/common/importtestfixture', example.imports[0]
33
+ end
34
+
35
+ def test_factory_should_support_import_with_more_than_one_line
36
+ example = @factory.create_example @complex_table
37
+ assert_equal 'test/common/importtestfixture', example.imports[0]
38
+ assert_equal 'test/common/importtestfixture2', example.imports[1]
39
+ end
40
+ end
@@ -0,0 +1,55 @@
1
+ =begin
2
+ author: Simon Mathieu (simon.math@gmail.com)
3
+ date: March 9, 2009
4
+ =end
5
+
6
+ require 'test/unit'
7
+ require 'test/fixtures/fixture'
8
+ require 'greenpepper/factory/ruleforexamplefactory'
9
+ require 'greenpepper/parser/table'
10
+
11
+ include GreenPepper
12
+
13
+ class RuleForExampleFactoryTest < Test::Unit::TestCase
14
+ def setup
15
+ @rule_for_table = Table.new
16
+ @rule_for_table.push_row ['rule for','RuleForExampleAddSubFixture',
17
+ 'arg 1', '23', 'arg2', '1']
18
+ @rule_for_table.push_row ['operand1','operand2','sum?','operand1',
19
+ 'operand2','sub?']
20
+ @rule_for_table.push_row ["1","2","3","5","6","-1"]
21
+ @rule_for_table.push_row ["4","1","5","8","2","6"]
22
+
23
+ @factory = RuleForExampleFactory.new
24
+ end
25
+
26
+
27
+ def test_create_example_from_rule_for_table
28
+ example = @factory.create_example @rule_for_table
29
+
30
+ # Verify name of fixture
31
+ assert_equal "RuleForExampleAddSubFixture", example.fixture_name
32
+
33
+ # Verify headers
34
+ headers_array = []
35
+ example.headers.each_index {|x|
36
+ header_name = example.headers[x].name
37
+ expected_header_name = @rule_for_table[1][x].gsub /\?/, ""
38
+ assert_equal header_name, expected_header_name
39
+ }
40
+
41
+ # Verify values
42
+ assert_equal [@rule_for_table[2], @rule_for_table[3]], example.values
43
+ end
44
+
45
+ def test_support_rule_for_table
46
+ assert @factory.support?(@rule_for_table)
47
+ end
48
+
49
+ def test_support_initialize_arguments
50
+ example = @factory.create_example @rule_for_table
51
+ expected_args = [23, 1]
52
+
53
+ assert_equal expected_args, example.fixture_arguments
54
+ end
55
+ end
@@ -0,0 +1,29 @@
1
+ =begin
2
+ author: Simon Mathieu (simon.math@gmail.com)
3
+ date: March 23, 2009
4
+ =end
5
+
6
+ require 'test/unit'
7
+ require 'test/fixtures/fixture'
8
+ require 'greenpepper/factory/setupexamplefactory'
9
+
10
+ include GreenPepper
11
+
12
+ class RuleforExampleFactoryTest < Test::Unit::TestCase
13
+ def test_create_setup_example
14
+ table = Table.new
15
+ table.push_row ['setup', 'a group of customers']
16
+ table.push_row ['a', 'b']
17
+ table.push_row ['1', '2']
18
+ table.push_row ['3', '4']
19
+
20
+ factory = SetupExampleFactory.new
21
+ ex = factory.create_example table
22
+
23
+ headers = ex.headers
24
+ values = ex.values
25
+ assert_equal ['a', 'b'], headers.collect{|x| x.name}
26
+ assert_equal ['1', '2'], values[0]
27
+ assert_equal ['3', '4'], values[1]
28
+ end
29
+ end
@@ -0,0 +1,38 @@
1
+ =begin
2
+ author: Simon Mathieu (simon.math@gmail.com)
3
+ date: September 27, 2009
4
+ =end
5
+
6
+ require 'test/unit'
7
+
8
+ require 'greenpepper/factory/silentexamplefactory'
9
+ require 'greenpepper/parser/table'
10
+
11
+ include GreenPepper
12
+
13
+ class SilentExampleFactoryTest < Test::Unit::TestCase
14
+ def setup
15
+ @table = Table.new
16
+ @table.push_row ['silent']
17
+ @table.push_row ['rule for', 'dont care']
18
+ @table.push_row ['a', 'b', 'c']
19
+ @table.push_row ['1', '2', '3']
20
+
21
+ @factory = SilentExampleFactory.new
22
+ end
23
+
24
+ def test_silent_keyword_is_recognized
25
+ assert @factory.support?(@table)
26
+ end
27
+
28
+ def test_keyword_is_case_insensitive
29
+ table = Table.new
30
+ table.push_row ['SILent']
31
+ assert @factory.support?(table)
32
+ end
33
+
34
+ def test_silent_example_is_created
35
+ ex = @factory.create_example @table
36
+ assert ex.is_a?(SilentExample)
37
+ end
38
+ end
@@ -0,0 +1,222 @@
1
+ =begin
2
+ author: Simon Mathieu (simon.math@gmail.com)
3
+ date: September 12, 2009
4
+ =end
5
+
6
+ require 'test/unit'
7
+ require 'greenpepper/freetext'
8
+ require 'greenpepper/writer/freetextresult'
9
+
10
+ include GreenPepper
11
+
12
+ class FreeTextTest < Test::Unit::TestCase
13
+ def setup
14
+ @test_class = FreeTextTestFixture.new
15
+ end
16
+
17
+ def test_class_can_map_text_to_regex_and_execute_block
18
+ @test_class.greenpepper_map_action "Some Action"
19
+
20
+ assert @test_class.function_called
21
+ end
22
+
23
+ def test_mapped_function_can_be_called_with_args
24
+ @test_class.greenpepper_map_action "Some Action With Args 1 and 2"
25
+ assert @test_class.function_called
26
+ assert_equal 1, @test_class.arg1
27
+ assert_equal 2, @test_class.arg2
28
+ end
29
+
30
+ def test_args_are_converted_with_action_converted_keyword
31
+ @test_class.greenpepper_map_action "Some Action With Args [1] and foo"
32
+ assert_equal [1], @test_class.arg1
33
+ assert_equal "foo", @test_class.arg2
34
+ assert_equal Array, @test_class.arg1.class
35
+ assert_equal String, @test_class.arg2.class
36
+ end
37
+
38
+ def test_args_are_return_like_string_action_keyword
39
+ @test_class.greenpepper_map_action "Some Action [1] Without Convertion"
40
+ assert_equal "[1]", @test_class.arg1
41
+ assert_equal String, @test_class.arg1.class
42
+ end
43
+ end
44
+
45
+ class FreeTextTestFixture
46
+ include FreeText
47
+ attr_reader :function_called, :arg1, :arg2
48
+
49
+ def initialize
50
+ @function_called = false
51
+ end
52
+
53
+ Given /^Some Action$/ do
54
+ @function_called = true
55
+ end
56
+
57
+ GivenVanilla /^Some Action (.*) Without Convertion$/ do |arg1|
58
+ @function_called = true
59
+ @arg1 = arg1
60
+ end
61
+
62
+ Given /^Some Action With Args (.*) and (.*)$/ do |arg1, arg2|
63
+ @function_called = true
64
+ @arg1, @arg2 = arg1, arg2
65
+ end
66
+
67
+ end
68
+
69
+ class FreeTextExampleKeywordsTest < Test::Unit::TestCase
70
+ def setup
71
+ @test_class = FreeTextKeywordsFixture.new
72
+ end
73
+
74
+ def test_given_keyword
75
+ keyword = @test_class.greenpepper_map_action "given [1]"
76
+ assert_equal "given", @test_class.call
77
+ assert_equal [1], @test_class.arg1
78
+ assert_equal GivenSuccess, keyword.get_result.class
79
+ end
80
+
81
+ def test_given_vanilla_keyword
82
+ keyword = @test_class.greenpepper_map_action "givenvanilla [1]"
83
+ assert_equal "givenvanilla", @test_class.call
84
+ assert_equal "[1]", @test_class.arg1
85
+ assert_equal GivenSuccess, keyword.get_result.class
86
+ end
87
+
88
+ def test_when_keyword
89
+ keyword = @test_class.greenpepper_map_action "when [1]"
90
+ assert_equal "when", @test_class.call
91
+ assert_equal [1], @test_class.arg1
92
+ assert_equal WhenSuccess, keyword.get_result.class
93
+ end
94
+
95
+ def test_when_vanilla_keyword
96
+ keyword = @test_class.greenpepper_map_action "whenvanilla [1]"
97
+ assert_equal "whenvanilla", @test_class.call
98
+ assert_equal "[1]", @test_class.arg1
99
+ assert_equal WhenSuccess, keyword.get_result.class
100
+ end
101
+
102
+ def test_ask_keyword
103
+ keyword = @test_class.greenpepper_map_action("ask value")
104
+ result = keyword.get_result
105
+ assert_equal "ask", @test_class.call
106
+ assert_equal "value", @test_class.arg1
107
+ assert_equal AskSuccess, result.class
108
+ assert_equal [2], result.answer
109
+ end
110
+
111
+ def test_ask_vanilla_keyword
112
+ keyword = @test_class.greenpepper_map_action("askvanilla for 123")
113
+ result = keyword.get_result
114
+ assert_equal "askvanilla for", @test_class.call
115
+ assert_equal "123", @test_class.arg1
116
+ assert_equal AskSuccess, result.class
117
+ assert_equal "123", result.answer
118
+ end
119
+
120
+ def test_check_keyword
121
+ keyword = @test_class.greenpepper_map_action("check 2 is a number")
122
+ assert_equal "check is a number", @test_class.call
123
+ assert_equal 2, @test_class.arg1
124
+ assert_equal CheckSuccess, keyword.get_result.class
125
+ end
126
+
127
+ def test_check_vanilla_keyword
128
+ keyword = @test_class.greenpepper_map_action("checkvanilla 2 is a number")
129
+ assert_equal "checkvanilla is a number", @test_class.call
130
+ assert_equal "2", @test_class.arg1
131
+ assert_equal CheckSuccess, keyword.get_result.class
132
+ end
133
+
134
+ def test_then_keyword
135
+ action = "then 2 is a number"
136
+ keyword = @test_class.greenpepper_map_action(action)
137
+ assert_equal "then", @test_class.call
138
+ assert_equal 2, @test_class.arg1.expected
139
+ assert_equal 2, @test_class.arg1.received
140
+ assert_equal ThenResults, keyword.get_result.class
141
+ end
142
+
143
+ def test_then_vanilla_keyword
144
+ action = "thenvanilla 2 is a number"
145
+ keyword = @test_class.greenpepper_map_action(action)
146
+ assert_equal "thenvanilla", @test_class.call
147
+ assert_equal "2", @test_class.arg1.expected
148
+ assert_equal "2", @test_class.arg1.received
149
+ assert_equal ThenResults, keyword.get_result.class
150
+ end
151
+ end
152
+
153
+ class FreeTextKeywordsFixture
154
+ include FreeText
155
+ attr_accessor :call, :arg1, :arg2, :value
156
+
157
+ def initialize
158
+ @value = [2]
159
+ end
160
+
161
+ def call
162
+ @call
163
+ end
164
+
165
+ GivenVanilla /^(givenvanilla) (.*)$/ do |keyword, arg1|
166
+ @call = keyword
167
+ @arg1 = arg1
168
+ end
169
+
170
+ Given /^(given) (.*)$/ do |keyword, arg1|
171
+ @call = keyword
172
+ @arg1 = arg1
173
+ end
174
+
175
+ WhenVanilla /^(whenvanilla) (.*)$/ do |keyword, arg1|
176
+ @call = keyword
177
+ @arg1 = arg1
178
+ end
179
+
180
+ When /^(when) (.*)$/ do |keyword, arg1|
181
+ @call = keyword
182
+ @arg1 = arg1
183
+ end
184
+
185
+ AskVanilla /^(askvanilla for) (.*$)/ do |keyword, arg1|
186
+ @call = keyword
187
+ @arg1 = arg1
188
+ answer = arg1
189
+ end
190
+
191
+ Ask /^(ask) (.*$)/ do |keyword, arg1|
192
+ @call = keyword
193
+ @arg1 = arg1
194
+ self.instance_variable_get("@#{arg1}")
195
+ end
196
+
197
+ CheckVanilla /^(checkvanilla) (.*) (is a number)$/ do |startkeyword, arg1, endkeyword|
198
+ @call = startkeyword + " " + endkeyword
199
+ @arg1 = arg1
200
+ true
201
+ end
202
+
203
+ Check /^(check) (.*) (is a number)$/ do |startkeyword, arg1, endkeyword|
204
+ @call = startkeyword + " " + endkeyword
205
+ @arg1 = arg1
206
+ true
207
+ end
208
+
209
+ ThenVanilla /^(thenvanilla) (.*) (is a number)$/ do |startkeyword, arg1, endkeyword|
210
+ @call = "thenvanilla"
211
+ @arg1 = arg1
212
+ arg1.received = "2"
213
+ true
214
+ end
215
+
216
+ Then /^(then) (.*) (is a number)$/ do |startkeyword, arg1, endkeyword|
217
+ @call = "then"
218
+ @arg1 = arg1
219
+ arg1.received = 2
220
+ true
221
+ end
222
+ end