greenpepper-ruby 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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