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.
- data/bin/greenpepperize +71 -0
- data/bin/greenpepperrails +33 -0
- data/bin/greenpepperruby +15 -0
- data/data/greenpepper.rake +37 -0
- data/data/helper.rb +32 -0
- data/data/tags +6 -0
- data/lib/greenpepper/argumentparser.rb +161 -0
- data/lib/greenpepper/common/loadpath.rb +7 -0
- data/lib/greenpepper/context/htmlcontext.rb +26 -0
- data/lib/greenpepper/converter.rb +347 -0
- data/lib/greenpepper/core.rb +152 -0
- data/lib/greenpepper/example/collectionexample.rb +305 -0
- data/lib/greenpepper/example/dowithexample.rb +192 -0
- data/lib/greenpepper/example/exampleheader.rb +41 -0
- data/lib/greenpepper/example/examplewithfixture.rb +73 -0
- data/lib/greenpepper/example/executionresults.rb +160 -0
- data/lib/greenpepper/example/fieldaccessor.rb +36 -0
- data/lib/greenpepper/example/freetextexample.rb +51 -0
- data/lib/greenpepper/example/importexample.rb +39 -0
- data/lib/greenpepper/example/nameresolver.rb +69 -0
- data/lib/greenpepper/example/ruleforexample.rb +117 -0
- data/lib/greenpepper/example/setupexample.rb +79 -0
- data/lib/greenpepper/example/silentexample.rb +14 -0
- data/lib/greenpepper/example/unknownexample.rb +17 -0
- data/lib/greenpepper/exception/greenpepperexception.rb +57 -0
- data/lib/greenpepper/executionunit.rb +39 -0
- data/lib/greenpepper/factory/collectionexamplefactory.rb +59 -0
- data/lib/greenpepper/factory/dowithexamplefactory.rb +71 -0
- data/lib/greenpepper/factory/examplefactory.rb +14 -0
- data/lib/greenpepper/factory/freetextexamplefactory.rb +29 -0
- data/lib/greenpepper/factory/htmlexamplefactory.rb +49 -0
- data/lib/greenpepper/factory/importexamplefactory.rb +27 -0
- data/lib/greenpepper/factory/ruleforexamplefactory.rb +46 -0
- data/lib/greenpepper/factory/setupexamplefactory.rb +31 -0
- data/lib/greenpepper/factory/silentexamplefactory.rb +21 -0
- data/lib/greenpepper/factory/unknownexamplefactory.rb +16 -0
- data/lib/greenpepper/freetext.rb +164 -0
- data/lib/greenpepper/grammar/array.treetop +51 -0
- data/lib/greenpepper/grammar/arrayparser.rb +14 -0
- data/lib/greenpepper/greenpepperconfig.rb +19 -0
- data/lib/greenpepper/greenpeppertask.rb +60 -0
- data/lib/greenpepper/logger.rb +45 -0
- data/lib/greenpepper/parser/freetextparser.rb +96 -0
- data/lib/greenpepper/parser/htmlparser.rb +70 -0
- data/lib/greenpepper/parser/scenario.rb +25 -0
- data/lib/greenpepper/parser/table.rb +37 -0
- data/lib/greenpepper/parser/wikiparser.rb +26 -0
- data/lib/greenpepper/pass/freetextpass.rb +24 -0
- data/lib/greenpepper/pass/greenpepperpass.rb +92 -0
- data/lib/greenpepper/pass/tablepass.rb +38 -0
- data/lib/greenpepper/railsargumentparser.rb +46 -0
- data/lib/greenpepper/redpeppertask.rb +89 -0
- data/lib/greenpepper/repository/atlassianrepository.rb +100 -0
- data/lib/greenpepper/writer/consolewriter.rb +21 -0
- data/lib/greenpepper/writer/freetextresult.rb +233 -0
- data/lib/greenpepper/writer/freetextwriter.rb +44 -0
- data/lib/greenpepper/writer/html.rb +14 -0
- data/lib/greenpepper/writer/htmldocwriter.rb +82 -0
- data/lib/greenpepper/writer/htmlresult.rb +192 -0
- data/lib/greenpepper/writer/htmlwriter.rb +112 -0
- data/lib/greenpepper/writer/output.rb +26 -0
- data/lib/greenpepper/writer/result.rb +35 -0
- data/lib/greenpepper/writer/xmlwriter.rb +32 -0
- data/test/coreseedstest.rb +39 -0
- data/test/greenpepper/argumentparsertest.rb +162 -0
- data/test/greenpepper/common/loadpathtest.rb +24 -0
- data/test/greenpepper/common/stattest.rb +186 -0
- data/test/greenpepper/convertertest.rb +371 -0
- data/test/greenpepper/coretest.rb +159 -0
- data/test/greenpepper/example/collectionexampletest.rb +484 -0
- data/test/greenpepper/example/dowithexampletest.rb +148 -0
- data/test/greenpepper/example/exampletest.rb +28 -0
- data/test/greenpepper/example/freetextexampletest.rb +151 -0
- data/test/greenpepper/example/importexampletest.rb +79 -0
- data/test/greenpepper/example/nameresolvertest.rb +56 -0
- data/test/greenpepper/example/ruleforexampletest.rb +225 -0
- data/test/greenpepper/example/setupexampletest.rb +140 -0
- data/test/greenpepper/example/silentexampletest.rb +17 -0
- data/test/greenpepper/example/unknownexampletest.rb +17 -0
- data/test/greenpepper/factory/collectionexamplefactorytest.rb +51 -0
- data/test/greenpepper/factory/dowithexamplefactorytest.rb +48 -0
- data/test/greenpepper/factory/examplefactorytest.rb +88 -0
- data/test/greenpepper/factory/freetextexamplefactorytest.rb +54 -0
- data/test/greenpepper/factory/importexamplefactorytest.rb +40 -0
- data/test/greenpepper/factory/ruleforexamplefactorytest.rb +55 -0
- data/test/greenpepper/factory/setupexamplefactorytest.rb +29 -0
- data/test/greenpepper/factory/silentexamplefactorytest.rb +38 -0
- data/test/greenpepper/freetexttest.rb +222 -0
- data/test/greenpepper/grammar/arrayparsertest.rb +45 -0
- data/test/greenpepper/loggertest.rb +26 -0
- data/test/greenpepper/parser/freetextparsertest.rb +124 -0
- data/test/greenpepper/parser/htmlparsertest.rb +77 -0
- data/test/greenpepper/parser/wikiparsertest.rb +21 -0
- data/test/greenpepper/pass/freetextpasstest.rb +54 -0
- data/test/greenpepper/pass/greenpepperpasstest.rb +47 -0
- data/test/greenpepper/pass/tablepasstest.rb +23 -0
- data/test/greenpepper/repository/atlassionrepositorytest.rb +85 -0
- data/test/greenpepper/writer/freetextwritertest.rb +301 -0
- data/test/greenpepper/writer/htmlcollectionwritertest.rb +145 -0
- data/test/greenpepper/writer/htmldowithwritertest.rb +87 -0
- data/test/greenpepper/writer/htmlruleforwritertest.rb +147 -0
- data/test/greenpepper/writer/htmlsetupwritertest.rb +107 -0
- data/test/greenpepper/writer/htmlstatresulttest.rb +118 -0
- data/test/greenpepper/writer/htmlwriterpositiontest.rb +53 -0
- data/test/greenpepper/writer/writertest.rb +33 -0
- data/test/greenpepper/writer/xmlwritertest.rb +34 -0
- data/test/integration/collectionexampleintegrationtest.rb +64 -0
- data/test/integration/errorhandlingintegrationtest.rb +68 -0
- data/test/integration/freetextexampleintegrationtest.rb +75 -0
- data/test/integration/greenpepperexecutableintegrationtest.rb +22 -0
- data/test/integration/importexampleintegrationtest.rb +41 -0
- data/test/integration/interpretationordertest.rb +48 -0
- data/test/integration/ruleforexampleintegrationtest.rb +102 -0
- data/test/integration/securityintegrationtest.rb +30 -0
- data/test/integration/setupexampleintegrationtest.rb +31 -0
- data/test/integration/silentexampleintegrationtest.rb +29 -0
- data/test/task/greenpeppertasktest.rb +96 -0
- data/test/task/redpeppertasktest.rb +120 -0
- data/vendor/accents.rb +85 -0
- 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
|