rcor 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. data/Rakefile.rb +39 -0
  2. data/lib/concordion.rb +66 -0
  3. data/lib/concordion_binder.rb +24 -0
  4. data/lib/concordion_constants.rb +13 -0
  5. data/lib/concordion_css.rb +172 -0
  6. data/lib/concordion_css_decorator.rb +52 -0
  7. data/lib/concordion_environment.rb +28 -0
  8. data/lib/concordion_instrumenter.rb +30 -0
  9. data/lib/concordion_invocation_string_builder.rb +24 -0
  10. data/lib/concordion_invoker.rb +33 -0
  11. data/lib/concordion_lookahead_handler.rb +17 -0
  12. data/lib/concordion_parse_result.rb +31 -0
  13. data/lib/concordion_parser.rb +47 -0
  14. data/lib/concordion_processor.rb +24 -0
  15. data/lib/concordion_reader.rb +18 -0
  16. data/lib/concordion_string_utility.rb +63 -0
  17. data/lib/concordion_string_writer.rb +13 -0
  18. data/lib/concordion_test_case.rb +97 -0
  19. data/lib/concordion_utility.rb +70 -0
  20. data/lib/concordion_verifier.rb +50 -0
  21. data/lib/concordion_writer.rb +43 -0
  22. data/lib/goldmaster_test_case.rb +32 -0
  23. data/lib/rcor.rb +2 -0
  24. data/nbproject/private/config.properties +0 -0
  25. data/nbproject/private/private.properties +4 -0
  26. data/nbproject/private/private.xml +10 -0
  27. data/nbproject/project.properties +11 -0
  28. data/nbproject/project.xml +16 -0
  29. data/test-lib/single_row_result.rb +9 -0
  30. data/test-lib/user.rb +8 -0
  31. data/tests/attr_assert.html +5 -0
  32. data/tests/attr_assert_test.rb +13 -0
  33. data/tests/basic_assert.html +5 -0
  34. data/tests/basic_assert_test.rb +9 -0
  35. data/tests/basic_assert_true.html +6 -0
  36. data/tests/basic_assert_true_test.rb +11 -0
  37. data/tests/basic_set.html +8 -0
  38. data/tests/basic_set_test.rb +8 -0
  39. data/tests/basic_text.html +6 -0
  40. data/tests/basic_text_test.rb +12 -0
  41. data/tests/concordion.css +2 -0
  42. data/tests/concordion_css_decorator_test.rb +28 -0
  43. data/tests/concordion_environment_test.rb +44 -0
  44. data/tests/concordion_parse_result_test.rb +33 -0
  45. data/tests/concordion_test.rb +49 -0
  46. data/tests/concordion_utility_test.rb +88 -0
  47. data/tests/concordion_verifier_test.rb +38 -0
  48. data/tests/concordion_writer_test.rb +26 -0
  49. data/tests/failing.html +5 -0
  50. data/tests/failing_test.rb +15 -0
  51. data/tests/goldmaster_failing.html +5 -0
  52. data/tests/goldmaster_failing_goldmaster.html +162 -0
  53. data/tests/goldmaster_failing_test.rb +11 -0
  54. data/tests/goldmaster_passing.html +5 -0
  55. data/tests/goldmaster_passing_goldmaster.html +162 -0
  56. data/tests/goldmaster_passing_test.rb +9 -0
  57. data/tests/goldmaster_table.html +46 -0
  58. data/tests/goldmaster_table_goldmaster.html +203 -0
  59. data/tests/goldmaster_table_test.rb +17 -0
  60. data/tests/lookahead_assert_true.html +25 -0
  61. data/tests/lookahead_assert_true_test.rb +17 -0
  62. data/tests/nested_element_lookahead.html +9 -0
  63. data/tests/nested_element_lookahead_test.rb +8 -0
  64. data/tests/processes_elements_in_sorted_order.html +12 -0
  65. data/tests/processes_elements_in_sorted_order_test.rb +13 -0
  66. data/tests/return_result.html +7 -0
  67. data/tests/return_result_test.rb +17 -0
  68. data/tests/single_row_table.html +13 -0
  69. data/tests/single_row_table_test.rb +9 -0
  70. data/tests/table.html +28 -0
  71. data/tests/table_test.rb +9 -0
  72. data/tests/test_helper.rb +9 -0
  73. data/tests/verify_rows.html +46 -0
  74. data/tests/verify_rows_scsr.html +27 -0
  75. data/tests/verify_rows_scsr_test.rb +15 -0
  76. data/tests/verify_rows_test.rb +16 -0
  77. metadata +142 -0
@@ -0,0 +1,43 @@
1
+ class ConcordionWriter
2
+ @@DEFAULT = "."
3
+ def initialize(output_dir = @@DEFAULT)
4
+ @output_dir = output_dir.nil? ? @@DEFAULT : output_dir
5
+ end
6
+
7
+ def write(data, filename)
8
+ f = File.new(filename, "w")
9
+ f.puts data
10
+ f.close
11
+ end
12
+
13
+ def output_file_exists?(filename)
14
+ exists?(base_filename(filename))
15
+ end
16
+
17
+ def exists?(filename)
18
+ File.exists?(filename)
19
+ end
20
+
21
+ def delete_if_exists(filename)
22
+ if exists?(filename)
23
+ File.delete(filename)
24
+ end
25
+
26
+ end
27
+
28
+ def calculate_filename_and_overwrite(data, filename)
29
+ outfile = output_filename_for(filename)
30
+ delete_if_exists(outfile)
31
+ write(data, outfile)
32
+
33
+ outfile
34
+ end
35
+
36
+ def base_filename(filename)
37
+ File.join(@output_dir, filename)
38
+ end
39
+ def output_filename_for(name)
40
+ base_filename(name.sub(".html", "_test_output.html"))
41
+ end
42
+
43
+ end
@@ -0,0 +1,32 @@
1
+ require 'concordion_test_case'
2
+ require 'concordion_string_writer'
3
+ class GoldmasterTestCase < ConcordionTestCase
4
+
5
+
6
+ def initialize(suite, conf = {})
7
+ @writer = ConcordionStringWriter.new
8
+
9
+ config = ConcordionTestCase.default_config.merge({:writer => @writer}).merge(conf)
10
+ @write_goldmaster = config[:write_goldmaster]
11
+ super(suite, config)
12
+ end
13
+
14
+ def test_spec
15
+ trivial
16
+ end
17
+
18
+
19
+ def teardown
20
+ if @write_goldmaster
21
+ ConcordionWriter.new.write(@writer.data, snake_cased_goldmaster_name(self.class.to_s))
22
+
23
+ assert !@write_goldmaster, "Disable write to goldmaster"
24
+ end
25
+
26
+ unless is_trivial?
27
+ goldmaster = ConcordionReader.new.read(snake_cased_goldmaster_name(self.class.to_s))
28
+ assert_equal @writer.data, goldmaster
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,2 @@
1
+
2
+ require 'concordion_test_case'
File without changes
@@ -0,0 +1,4 @@
1
+ file.reference.rcor-lib=C:\\rcor\\lib
2
+ file.reference.rcor-test-lib=C:\\rcor\\test-lib
3
+ file.reference.rcor-tests=C:\\rcor\\tests
4
+ platform.active=Ruby
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project-private xmlns="http://www.netbeans.org/ns/project-private/1">
3
+ <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
4
+ <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/1">
5
+ <file>file:/home/bg/src/rcor/rcor/trunk/Rakefile.rb</file>
6
+ <file>file:/home/bg/src/rcor/rcor/trunk/lib/concordion_css_decorator.rb</file>
7
+ <file>file:/home/bg/src/rcor/rcor/trunk/lib/concordion_environment.rb</file>
8
+ <file>file:/home/bg/src/rcor/rcor/trunk/tests/concordion_environment_test.rb</file>
9
+ </open-files>
10
+ </project-private>
@@ -0,0 +1,11 @@
1
+ file.reference.rcor-lib=lib
2
+ file.reference.rcor-test-lib=test-lib
3
+ file.reference.rcor-tests=tests
4
+ javac.classpath=
5
+ main.file=
6
+ platform.active=Ruby
7
+ ruby.includejava=false
8
+ source.encoding=windows-1252
9
+ src.lib.dir=lib
10
+ src.test-lib.dir=test-lib
11
+ test.tests.dir=tests
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://www.netbeans.org/ns/project/1">
3
+ <type>org.netbeans.modules.ruby.rubyproject</type>
4
+ <configuration>
5
+ <data xmlns="http://www.netbeans.org/ns/ruby-project/1">
6
+ <name>rcor</name>
7
+ <source-roots>
8
+ <root id="src.test-lib.dir"/>
9
+ <root id="src.lib.dir"/>
10
+ </source-roots>
11
+ <test-roots>
12
+ <root id="test.tests.dir"/>
13
+ </test-roots>
14
+ </data>
15
+ </configuration>
16
+ </project>
@@ -0,0 +1,9 @@
1
+
2
+ class SingleRowResult
3
+ attr_accessor :alpha, :beta, :gamma
4
+ def initialize(args)
5
+ @alpha = args[0].upcase
6
+ @beta = args[1].upcase
7
+ @gamma = args[2].upcase
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+
2
+ class User
3
+ attr_accessor :name, :other
4
+ def initialize(name, other)
5
+ @name = name
6
+ @other = other
7
+ end
8
+ end
@@ -0,0 +1,5 @@
1
+ <html xmlns:concordion="http://www.concordion.org/2007/concordion">
2
+ <body>
3
+ <p concordion:assertEquals="greeting()">attribute based</p>
4
+ </body>
5
+ </html>
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+ require 'concordion_test_case'
3
+
4
+ class AttrAssertTest < ConcordionTestCase
5
+
6
+ attr_accessor :greeting
7
+
8
+ def initialize(arg)
9
+ super(arg)
10
+ @greeting = "attribute based"
11
+ end
12
+
13
+ end
@@ -0,0 +1,5 @@
1
+ <html xmlns:concordion="http://www.concordion.org/2007/concordion">
2
+ <body>
3
+ <b concordion:assertEquals="getGreeting()">Hello World!</b>
4
+ </body>
5
+ </html>
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+ require 'concordion_test_case'
3
+
4
+ class BasicAssertTest < ConcordionTestCase
5
+
6
+ def getGreeting
7
+ "Hello World!"
8
+ end
9
+ end
@@ -0,0 +1,6 @@
1
+ <html xmlns:concordion="http://www.concordion.org/2007/concordion">
2
+ <body>
3
+ <p concordion:assertTrue="is_boiling_point(#TEXT)">212</p>
4
+ <p concordion:assertTrue="is_boiling_point(#TEXT)">211</p>
5
+ </body>
6
+ </html>
@@ -0,0 +1,11 @@
1
+ # To change this template, choose Tools | Templates
2
+ # and open the template in the editor.
3
+
4
+ class BasicAssertTrueTest < ConcordionTestCase
5
+ def initialize(suite)
6
+ super(suite, {:expected_failure_count => 1})
7
+ end
8
+ def is_boiling_point(temperature)
9
+ 212 == temperature.to_i
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ <html xmlns:concordion="http://www.concordion.org/2007/concordion">
2
+ <body>
3
+ Here's some text
4
+ <p concordion:set="#username">Chuck Norris</p>
5
+ <p concordion:assertEquals="greetingFor(#username)">Hello Chuck Norris, you nancy-boy.</p>
6
+ it should be in the output.
7
+ </body>
8
+ </html>
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+ require 'concordion_test_case'
3
+
4
+ class BasicSetTest < ConcordionTestCase
5
+ def greetingFor(name)
6
+ "Hello #{name}, you nancy-boy."
7
+ end
8
+ end
@@ -0,0 +1,6 @@
1
+ <html xmlns:concordion="http://www.concordion.org/2007/concordion">
2
+ <body>
3
+ <p concordion:execute="set_name(#TEXT)">No</p>
4
+ <p concordion:assertEquals="double_down()">NoNo</p>
5
+ </body>
6
+ </html>
@@ -0,0 +1,12 @@
1
+ require 'test_helper'
2
+ require 'concordion_test_case'
3
+
4
+ class BasicTextTest < ConcordionTestCase
5
+ def set_name(name)
6
+ @name = name
7
+ end
8
+
9
+ def double_down
10
+ "#{@name*2}"
11
+ end
12
+ end
@@ -0,0 +1,2 @@
1
+ .concordion_failure { background-color: red }
2
+ .concordion_success { background-color: green }
@@ -0,0 +1,28 @@
1
+ require 'test_helper'
2
+ require 'concordion_css_decorator'
3
+ require 'rubygems'
4
+ require 'mocha'
5
+
6
+ class ConcordionCssDecoratorTest < Test::Unit::TestCase
7
+ def test_does_not_write_if_file_exists
8
+ writer = mock("writer")
9
+ writer.expects(:output_file_exists?).with("concordion.css").once.returns(true)
10
+
11
+ ConcordionCSSDecorator.new.add_css_file_to_output_dir(writer, :link)
12
+ end
13
+
14
+ def test_writes_if_file_does_not_exist
15
+ writer = mock("writer")
16
+ writer.expects(:output_file_exists?).with("concordion.css").once.returns(false)
17
+ writer.expects(:calculate_filename_and_overwrite).with(anything, "concordion.css").once
18
+
19
+ ConcordionCSSDecorator.new.add_css_file_to_output_dir(writer, :link)
20
+ end
21
+
22
+ def test_does_not_write_if_not_link_eg_inline
23
+ writer = mock("writer")
24
+ writer.expects(:output_file_exists?).with("concordion.css").once.returns(false)
25
+
26
+ ConcordionCSSDecorator.new.add_css_file_to_output_dir(writer, :inline)
27
+ end
28
+ end
@@ -0,0 +1,44 @@
1
+ require 'test_helper'
2
+ require 'concordion_environment'
3
+
4
+ class ConcordionEnvironmentTest < Test::Unit::TestCase
5
+
6
+ def test_output_dir
7
+ restore_env do
8
+ ENV[ConcordionEnvironment.output_dir_key] = nil
9
+ assert_equal ".", ConcordionEnvironment.output_dir
10
+ ENV[ConcordionEnvironment.output_dir_key] = "foo/bar"
11
+ assert_equal "foo/bar", ConcordionEnvironment.output_dir
12
+ end
13
+ end
14
+
15
+ def test_clean_list
16
+ restore_env do
17
+ ENV[ConcordionEnvironment.output_dir_key] = nil
18
+ assert_equal ["./*_test_output.html", "./concordion.css"], ConcordionEnvironment.clean_list
19
+ ENV[ConcordionEnvironment.output_dir_key] = "foo/bar"
20
+ assert_equal ["foo/bar/*_test_output.html", "foo/bar/concordion.css"], ConcordionEnvironment.clean_list
21
+ end
22
+
23
+ end
24
+
25
+ def test_css_type_defaults_to_inline
26
+ restore_env do
27
+ ENV[ConcordionEnvironment.css_type_key] = "link"
28
+ assert_equal :link, ConcordionEnvironment.css_type
29
+
30
+ ENV[ConcordionEnvironment.css_type_key] = nil
31
+ assert_equal :inline, ConcordionEnvironment.css_type
32
+
33
+ end
34
+
35
+ end
36
+
37
+ def restore_env
38
+ orig_dir = ENV[ConcordionEnvironment.output_dir_key]
39
+ orig_type = ENV[ConcordionEnvironment.css_type_key]
40
+ yield
41
+ ENV[ConcordionEnvironment.output_dir_key] = orig_dir
42
+ ENV[ConcordionEnvironment.css_type_key] = orig_type.to_s
43
+ end
44
+ end
@@ -0,0 +1,33 @@
1
+ require 'test_helper'
2
+ require 'concordion_parse_result'
3
+
4
+ class ConcordionParseResultTest < Test::Unit::TestCase
5
+
6
+ def test_is_set_command
7
+ assert ConcordionParseResult.new("set",nil,nil,nil).is_set_command?
8
+ assert !ConcordionParseResult.new("asdf",nil,nil,nil).is_set_command?
9
+ end
10
+
11
+ def test_is_execute_command
12
+ assert ConcordionParseResult.new("execute",nil,nil,nil).is_execute_command?
13
+ assert !ConcordionParseResult.new("asdf",nil,nil,nil).is_execute_command?
14
+ end
15
+
16
+ def test_is_verify_command
17
+ assert ConcordionParseResult.new("verifyrows",nil,nil,nil).is_verify_command?
18
+ assert !ConcordionParseResult.new("monkeys",nil,nil,nil).is_verify_command?
19
+ end
20
+
21
+ def test_assignment
22
+ assert_equal "#user", ConcordionParseResult.new("verifyrows"," #user = asdfasdf",nil,nil).assignment
23
+ assert_equal "#bob", ConcordionParseResult.new("monkeys","#bob=asdf",nil,nil).assignment
24
+ end
25
+
26
+ def test_needs_dereference
27
+ assert ConcordionParseResult.new(nil,"#asdf", nil,nil).needs_dereference?
28
+ assert !ConcordionParseResult.new(nil,"asdf", nil,nil).needs_dereference?
29
+ assert !ConcordionParseResult.new(nil,"as#df", nil,nil).needs_dereference?
30
+ assert !ConcordionParseResult.new(nil,"#asdf = foo()", nil,nil).needs_dereference?
31
+ end
32
+
33
+ end
@@ -0,0 +1,49 @@
1
+ require 'test/unit'
2
+ require 'test_helper'
3
+ require 'concordion'
4
+
5
+ class ConcordionTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @concordion = Concordion.new
9
+ @thingy = Thingy.new()
10
+ end
11
+
12
+ def test_set_variable
13
+ @concordion.set_variable("#foo", "bar")
14
+
15
+ assert_equal "bar", @concordion.get_variable("#foo")
16
+ end
17
+
18
+ def test_build_invocation_string
19
+ assert_equal "self.send('foo')", @concordion.build_invocation_string("foo()", "content")
20
+ @concordion.set_variable("#bar", "baz")
21
+ assert_equal "self.send('foo', 'baz')", @concordion.build_invocation_string("foo(#bar)", "content")
22
+
23
+ @concordion.set_variable("#purplemonkey", "dishwasher")
24
+ assert_equal "self.send('other', 'baz', 'dishwasher')", @concordion.build_invocation_string("other(#bar, #purplemonkey)", "content")
25
+ end
26
+
27
+ def test_build_invocation_string_replaces_text
28
+ assert_equal "self.send('foo', 'ASDF')", @concordion.build_invocation_string("foo(#TEXT)", "ASDF")
29
+
30
+ end
31
+
32
+ def test_dereference
33
+ @concordion.set_variable("#result", @thingy)
34
+
35
+ assert_same @thingy, @concordion.dereference("#result")
36
+ end
37
+ def test_dereference_with_property
38
+ @concordion.set_variable("#result", @thingy)
39
+
40
+ assert_equal "bleh", @concordion.dereference("#result.prop")
41
+ end
42
+
43
+ class Thingy
44
+ attr_accessor :prop
45
+ def initialize
46
+ @prop = "bleh"
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,88 @@
1
+ require 'test_helper'
2
+ require 'concordion_utility'
3
+
4
+ class ConcordionUtilityTest < Test::Unit::TestCase
5
+ include ConcordionUtility
6
+
7
+ def test_supported
8
+ assert supported?('p')
9
+ assert supported?("p")
10
+ assert supported?("P")
11
+ assert !supported?("R")
12
+ end
13
+
14
+ def test_snakeCase
15
+ assert_equal "bob", snake_case("bob")
16
+ assert_equal "bob", snake_case("Bob")
17
+ assert_equal "camel_case", snake_case("CamelCase")
18
+ assert_equal "camel_case_var", snake_case("camelCaseVar")
19
+ end
20
+
21
+
22
+ def test_snake_cased_test_name
23
+ assert_equal "bob.html", snake_cased_test_name("bob")
24
+ assert_equal "bob.html", snake_cased_test_name("Bob")
25
+ assert_equal "bob.html", snake_cased_test_name("BobTest")
26
+ assert_equal "bob_case.html", snake_cased_test_name("BobCaseTest")
27
+ end
28
+
29
+ def test_snake_cased_goldmaster_name
30
+ assert_equal "bob_goldmaster.html", snake_cased_goldmaster_name("bob")
31
+ assert_equal "bob_goldmaster.html", snake_cased_goldmaster_name("Bob")
32
+ assert_equal "bob_goldmaster.html", snake_cased_goldmaster_name("BobTest")
33
+ assert_equal "bob_case_goldmaster.html", snake_cased_goldmaster_name("BobCaseTest")
34
+ end
35
+
36
+
37
+ def test_conc_method_name
38
+ assert_equal "invoke", concordion_method_name("invoke()")
39
+ assert_equal "invoke", concordion_method_name("invoke(")
40
+ assert_equal "invoke", concordion_method_name("invoke")
41
+ assert_equal "bleh", concordion_method_name("bleh(foo,bar)")
42
+ assert_equal "bleh", concordion_method_name("bleh ( foo , bar)")
43
+ assert_equal "foo", concordion_method_name("#baz = foo ( #asdf, #fdsa)")
44
+ end
45
+
46
+ def test_conc_var_name
47
+ assert_equal "#result", concordion_variable_name("#result.first()")
48
+ assert_equal "#res", concordion_variable_name(" #res ")
49
+
50
+ end
51
+
52
+ def test_has_args
53
+ assert has_arguments?("invoke(#foo,#bar)")
54
+ assert !has_arguments?("invoke()")
55
+ end
56
+
57
+ def test_conc_args
58
+ assert_equal [], concordion_arguments("invoke()")
59
+ assert_equal ["#foo","#bar"], concordion_arguments("bleh(#foo,#bar)")
60
+ assert_equal ["#foo","#bar"], concordion_arguments("bleh ( #foo , #bar )")
61
+ end
62
+
63
+ def test_conc_assignment
64
+ assert_equal "#foo", concordion_assignment(" #foo = getResult() ")
65
+ assert_equal "#for", concordion_assignment("#for=")
66
+ end
67
+ def test_has_assignment
68
+ assert has_assignment?("=")
69
+ assert !has_assignment?("")
70
+ end
71
+
72
+ def test_has_property_ref
73
+ assert has_property_reference?("#res.foo")
74
+ assert !has_property_reference?("#res")
75
+
76
+ end
77
+
78
+ def test_property_ref
79
+ assert_equal "bar", concordion_property_reference(" #foo.bar ")
80
+ assert_equal "bar.baz", concordion_property_reference("#for.bar.baz")
81
+
82
+ end
83
+
84
+ def test_singular
85
+ assert_equal "bar", singular("bars")
86
+ assert_equal "foo", singular("foo")
87
+ end
88
+ end