rcor 0.8.1 → 0.9.5

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 (60) hide show
  1. data/Rakefile.rb +1 -1
  2. data/lib/concordion.rb +1 -8
  3. data/lib/concordion_constants.rb +1 -1
  4. data/lib/concordion_css.rb +8 -1
  5. data/lib/concordion_css_decorator.rb +21 -4
  6. data/lib/concordion_error_condition.rb +26 -0
  7. data/lib/concordion_invoker.rb +103 -9
  8. data/lib/concordion_parse_result.rb +19 -1
  9. data/lib/concordion_parser.rb +1 -1
  10. data/lib/concordion_processor.rb +3 -2
  11. data/lib/concordion_string_utility.rb +36 -2
  12. data/lib/concordion_test_case.rb +12 -62
  13. data/lib/concordion_test_methods.rb +127 -0
  14. data/lib/concordion_utility.rb +15 -3
  15. data/lib/goldmaster_test_case.rb +22 -5
  16. data/lib/loader_helper.rb +16 -0
  17. data/nbproject/private/private.xml +0 -6
  18. data/nbproject/private/rake-d.txt +13 -0
  19. data/tests/apostrophe.html +7 -0
  20. data/tests/apostrophe_test.rb +18 -0
  21. data/tests/ariel_example.html +13 -0
  22. data/tests/ariel_example_test.rb +36 -0
  23. data/tests/attr_assert.html +2 -0
  24. data/tests/basic_assert_true_test.rb +5 -1
  25. data/tests/basic_set.html +3 -0
  26. data/tests/basic_text.html +8 -0
  27. data/tests/basic_text_test.rb +11 -0
  28. data/tests/concordion_parse_result_test.rb +16 -1
  29. data/tests/concordion_test.rb +0 -14
  30. data/tests/concordion_utility_test.rb +44 -0
  31. data/tests/failing.html +4 -0
  32. data/tests/failing_test.rb +10 -2
  33. data/tests/goldmaster_assert_true_failing.html +5 -0
  34. data/tests/goldmaster_assert_true_failing_goldmaster.html +169 -0
  35. data/tests/goldmaster_assert_true_failing_test.rb +14 -0
  36. data/tests/goldmaster_failing.html +40 -0
  37. data/tests/goldmaster_failing_goldmaster.html +48 -1
  38. data/tests/goldmaster_failing_test.rb +28 -2
  39. data/tests/goldmaster_malformed.html +7 -0
  40. data/tests/goldmaster_malformed_goldmaster.html +171 -0
  41. data/tests/goldmaster_malformed_test.rb +11 -0
  42. data/tests/goldmaster_passing_goldmaster.html +8 -1
  43. data/tests/goldmaster_table_bug.html +12 -0
  44. data/tests/goldmaster_table_bug_goldmaster.html +176 -0
  45. data/tests/goldmaster_table_bug_test.rb +24 -0
  46. data/tests/goldmaster_table_goldmaster.html +8 -1
  47. data/tests/image.html +5 -0
  48. data/tests/image.jpg +0 -0
  49. data/tests/image_test.rb +9 -0
  50. data/tests/mixed.html +5 -0
  51. data/tests/mixed_test.rb +19 -0
  52. data/tests/no_parens.html +15 -0
  53. data/tests/no_parens_test.rb +20 -0
  54. data/tests/numbers.html +5 -0
  55. data/tests/numbers_test.rb +11 -0
  56. data/tests/verify_rows_scsr_test.rb +2 -0
  57. data/tests/verify_rows_simple.html +14 -0
  58. data/tests/verify_rows_simple_test.rb +17 -0
  59. metadata +31 -4
  60. data/lib/concordion_invocation_string_builder.rb +0 -24
@@ -33,7 +33,22 @@ class ConcordionUtilityTest < Test::Unit::TestCase
33
33
  assert_equal "bob_case_goldmaster.html", snake_cased_goldmaster_name("BobCaseTest")
34
34
  end
35
35
 
36
+ def test_conc_method_name_hard
37
+ assert_equal "greeting=", concordion_method_name("#result = greeting=(#TEXT)")
38
+ end
39
+
40
+ def test_escapes_single_quotes
41
+ assert_equal "A\\\\'s", escape_single_quotes("A's")
42
+ end
43
+
44
+ def test_conc_method_name_no_parens
45
+ assert_equal "invoke", concordion_method_name("invoke")
46
+ assert_equal "invoke", concordion_method_name("invoke #foo")
36
47
 
48
+ assert_equal "foo", concordion_method_name("#baz = foo #asdf, #fdsa")
49
+ assert_equal "greeting=", concordion_method_name("greeting= #TEXT")
50
+ end
51
+
37
52
  def test_conc_method_name
38
53
  assert_equal "invoke", concordion_method_name("invoke()")
39
54
  assert_equal "invoke", concordion_method_name("invoke(")
@@ -41,25 +56,54 @@ class ConcordionUtilityTest < Test::Unit::TestCase
41
56
  assert_equal "bleh", concordion_method_name("bleh(foo,bar)")
42
57
  assert_equal "bleh", concordion_method_name("bleh ( foo , bar)")
43
58
  assert_equal "foo", concordion_method_name("#baz = foo ( #asdf, #fdsa)")
59
+ assert_equal "greeting=", concordion_method_name("greeting=(#TEXT)")
44
60
  end
45
61
 
62
+ def test_conc_var_name_no_parens
63
+ assert_equal "#result", concordion_variable_name("#result.first")
64
+ end
46
65
  def test_conc_var_name
47
66
  assert_equal "#result", concordion_variable_name("#result.first()")
48
67
  assert_equal "#res", concordion_variable_name(" #res ")
49
68
 
50
69
  end
51
70
 
71
+ def test_is_direct_method_call
72
+ assert is_direct_method_call?("invoke")
73
+ assert !is_direct_method_call?("invoke(#foo,#bar)")
74
+
75
+ end
76
+ def test_has_args_no_parens
77
+ assert !has_arguments?("invoke")
78
+ assert has_arguments?("invoke #foo")
79
+ assert has_arguments?("invoke #foo, #bar")
80
+
81
+ end
82
+
52
83
  def test_has_args
53
84
  assert has_arguments?("invoke(#foo,#bar)")
85
+ assert has_arguments?("invoke(#foo)")
54
86
  assert !has_arguments?("invoke()")
55
87
  end
56
88
 
89
+ def test_conc_args_no_parens
90
+ assert_equal [], concordion_arguments("invoke")
91
+ assert_equal ["#foo","#bar"], concordion_arguments("bleh #foo,#bar")
92
+ assert_equal ["#foo","#bar"], concordion_arguments("bleh #foo , #bar ")
93
+ assert_equal ["#foo","#bar"], concordion_arguments("#asdf = bleh #foo , #bar ")
94
+
95
+ end
57
96
  def test_conc_args
58
97
  assert_equal [], concordion_arguments("invoke()")
59
98
  assert_equal ["#foo","#bar"], concordion_arguments("bleh(#foo,#bar)")
60
99
  assert_equal ["#foo","#bar"], concordion_arguments("bleh ( #foo , #bar )")
100
+ assert_equal ["#foo","#bar"], concordion_arguments("#asdf = bleh ( #foo , #bar )")
61
101
  end
62
102
 
103
+ def test_conc_assignment_no_parens
104
+ assert_equal "#foo", concordion_assignment(" #foo = getResult ")
105
+ end
106
+
63
107
  def test_conc_assignment
64
108
  assert_equal "#foo", concordion_assignment(" #foo = getResult() ")
65
109
  assert_equal "#for", concordion_assignment("#for=")
@@ -1,5 +1,9 @@
1
1
  <html xmlns:concordion="http://www.concordion.org/2007/concordion">
2
2
  <body>
3
3
  <p concordion:assertEquals="wrong_value()">right value</p>
4
+ <p concordion:assertEquals="wrong_value2()">right value</p>
5
+ <div>
6
+ <span concordion:assertEquals="wrong_value3()">right value</span>
7
+ </div>
4
8
  </body>
5
9
  </html>
@@ -3,10 +3,18 @@ require 'concordion_test_case'
3
3
 
4
4
  class FailingTest < ConcordionTestCase
5
5
 
6
- def initialize(suite)
7
- super(suite, {:expected_failure_count => 1})
6
+ def expected_failure_count
7
+ 3
8
8
  end
9
9
 
10
+ #TODO method_missing? => return "wrong" :)
11
+ def wrong_value4
12
+ "wrong"
13
+ end
14
+
15
+ def wrong_value2
16
+ "wrong"
17
+ end
10
18
  def wrong_value
11
19
  "wrong"
12
20
  end
@@ -0,0 +1,5 @@
1
+ <html xmlns:concordion="http://www.concordion.org/2007/concordion">
2
+ <body>
3
+ <p concordion:assertTrue="getFalse()">Uh Oh</p>
4
+ </body>
5
+ </html>
@@ -0,0 +1,169 @@
1
+ <html xmlns:concordion="http://www.concordion.org/2007/concordion"><head><style type="text/css">* {
2
+ font-family: Arial;
3
+ }
4
+ body {
5
+ padding: 32px;
6
+ }
7
+ pre {
8
+ padding: 6px 28px 6px 28px;
9
+ background-color: #E8EEF7;
10
+ }
11
+ pre, pre *, code, kbd {
12
+ font-family: Courier New, Courier;
13
+ font-size: 10pt;
14
+ }
15
+ h1, h1 * {
16
+ font-size: 24pt;
17
+ }
18
+ p, td, th, li, .breadcrumbs {
19
+ font-size: 10pt;
20
+ }
21
+ p, li {
22
+ line-height: 140%;
23
+ }
24
+ table {
25
+ border-collapse: collapse;
26
+ empty-cells: show;
27
+ margin: 8px 0px 8px 0px;
28
+ }
29
+ th, td {
30
+ border: 1px solid black;
31
+ padding: 3px;
32
+ }
33
+ td {
34
+ background-color: white;
35
+ vertical-align: top;
36
+ }
37
+ th {
38
+ background-color: #C3D9FF;
39
+ }
40
+ li {
41
+ margin-top: 6px;
42
+ margin-bottom: 6px;
43
+ }
44
+
45
+
46
+ .example {
47
+ padding: 2px 12px 6px 12px;
48
+ border: 1px solid #C3D9FF;
49
+ margin: 6px 0px 28px 0px;
50
+ background-color: #F5F9FD;
51
+ }
52
+ .example h3 {
53
+ margin-top: 8px;
54
+ margin-bottom: 8px;
55
+ font-size: 12pt;
56
+ }
57
+
58
+ p.success {
59
+ padding: 2px;
60
+ }
61
+ .concordion_success, .concordion_success * {
62
+ background-color: #afa;
63
+ }
64
+ .success pre {
65
+ background-color: #bbffbb;
66
+ }
67
+ .concordion_failure, .concordion_failure * {
68
+ background-color: #ffb0b0;
69
+ padding: 1px;
70
+ }
71
+ .concordion_failure .expected {
72
+ text-decoration: line-through;
73
+ color: #bb5050;
74
+ }
75
+
76
+ td.concordion_failure {
77
+ background-color: #ffb0b0 !important;
78
+ }
79
+ td.concordion_success {
80
+ background-color: #afa !important;
81
+ }
82
+
83
+ ins {
84
+ text-decoration: none;
85
+ }
86
+
87
+ .exceptionMessage {
88
+ background-color: #fdd;
89
+ font-family: Courier New, Courier, Monospace;
90
+ font-size: 10pt;
91
+ display: block;
92
+ font-weight: normal;
93
+ padding: 4px;
94
+ text-decoration: none !important;
95
+ }
96
+ .stackTrace, .stackTrace * {
97
+ font-weight: normal;
98
+ }
99
+ .stackTrace {
100
+ display: none;
101
+ padding: 1px 4px 4px 4px;
102
+ background-color: #fdd;
103
+ border-top: 1px dotted black;
104
+ }
105
+ .stackTraceExceptionMessage {
106
+ display: block;
107
+ font-family: Courier New, Courier, Monospace;
108
+ font-size: 8pt;
109
+ white-space: wrap;
110
+ padding: 1px 0px 1px 0px;
111
+ }
112
+ .stackTraceEntry {
113
+ white-space: nowrap;
114
+ font-family: Courier New, Courier, Monospace;
115
+ display: block;
116
+ font-size: 8pt;
117
+ padding: 1px 0px 1px 32px;
118
+ }
119
+ .stackTraceButton {
120
+ font-size: 8pt;
121
+ margin: 2px 8px 2px 0px;
122
+ font-weight: normal;
123
+ font-family: Arial;
124
+ }
125
+
126
+ .special {
127
+ font-style: italic;
128
+ }
129
+ .missing, .missing * {
130
+ background-color: #ff9999;
131
+ }
132
+ .surplus, .surplus * {
133
+ background-color: #ff9999;
134
+ }
135
+ .footer {
136
+ text-align: right;
137
+ margin-top: 40px;
138
+ font-size: 8pt;
139
+ width: 100%;
140
+ color: #999;
141
+ }
142
+ .footer .testTime {
143
+ padding: 2px 10px 0px 0px;
144
+ }
145
+
146
+ .idea {
147
+ font-size: 9pt;
148
+ color: #888;
149
+ font-style: italic;
150
+ }
151
+ .tight li {
152
+ margin-top: 1px;
153
+ margin-bottom: 1px;
154
+ }
155
+ .commentary {
156
+ float: right;
157
+ width: 200px;
158
+ background-color: #ffffd0;
159
+ padding:8px;
160
+ border: 3px solid #eeeeb0;
161
+ margin: 10px 0px 10px 10px;
162
+ }
163
+ .commentary, .commentary * {
164
+ font-size: 8pt;
165
+ }</style></head>
166
+ <body>
167
+ <p class="concordion_failure" concordion:asserttrue="getFalse()">Uh Oh: expected true but received false</p>
168
+ </body>
169
+ </html>
@@ -0,0 +1,14 @@
1
+ require 'test_helper'
2
+ require 'goldmaster_test_case'
3
+
4
+ class GoldmasterAssertTrueFailingTest < GoldmasterTestCase
5
+
6
+ def expected_failure_count
7
+ 1
8
+ end
9
+
10
+
11
+ def getFalse
12
+ false
13
+ end
14
+ end
@@ -1,5 +1,45 @@
1
1
  <html xmlns:concordion="http://www.concordion.org/2007/concordion">
2
2
  <body>
3
3
  <p concordion:assertEquals="getGreeting()">Hello World!</p>
4
+ <p concordion:assertEquals="no_such_method_in_fixture()">Thats ok, look how nice the error is.</p>
5
+ <table concordion:verifyRows="#plans = get_plans()">
6
+ <tr>
7
+ <th concordion:assertEquals="#plan.planName">Plan Name</th>
8
+ </tr>
9
+ <tr>
10
+ <td>Cunning Plan 1</td>
11
+ </tr>
12
+ <tr>
13
+ <td>Cunning Plan 2</td>
14
+ </tr>
15
+ </table>
16
+ <table concordion:verifyRows="#plans = get_3_plans()">
17
+ <tr>
18
+ <th concordion:assertEquals="#plan.planName">Plan Name</th>
19
+ </tr>
20
+ <tr>
21
+ <td>Cunning Plan A</td>
22
+ </tr>
23
+ </table>
24
+ <table concordion:verifyRows="#plans = get_plans()">
25
+ <tr>
26
+ <th concordion:assertEquals="#plan.planName">Plan Name</th>
27
+ </tr>
28
+ <tr>
29
+ <td>Cunning Plan 2</td>
30
+ </tr>
31
+ <tr>
32
+ <td>Cunning Plan 3</td>
33
+ </tr>
34
+ <tr>
35
+ <td>Cunning Plan 4</td>
36
+ </tr>
37
+ <tr>
38
+ <td>Cunning Plan 5</td>
39
+ </tr>
40
+ <tr>
41
+ <td>Cunning Plan 6</td>
42
+ </tr>
43
+ </table>
4
44
  </body>
5
45
  </html>
@@ -59,7 +59,7 @@ p.success {
59
59
  padding: 2px;
60
60
  }
61
61
  .concordion_success, .concordion_success * {
62
- background-color: #afa !important;
62
+ background-color: #afa;
63
63
  }
64
64
  .success pre {
65
65
  background-color: #bbffbb;
@@ -73,6 +73,13 @@ p.success {
73
73
  color: #bb5050;
74
74
  }
75
75
 
76
+ td.concordion_failure {
77
+ background-color: #ffb0b0 !important;
78
+ }
79
+ td.concordion_success {
80
+ background-color: #afa !important;
81
+ }
82
+
76
83
  ins {
77
84
  text-decoration: none;
78
85
  }
@@ -158,5 +165,45 @@ ins {
158
165
  }</style></head>
159
166
  <body>
160
167
  <p concordion:assertequals="getGreeting()" class="concordion_failure">Hello World! expected but received Hello World?</p>
168
+ <p concordion:assertequals="no_such_method_in_fixture()" class="concordion_failure">Thats ok, look how nice the error is. expected but received [Missing method 'no_such_method_in_fixture' in fixture GoldmasterFailingTest ]</p>
169
+ <table class="concordion_success" concordion:verifyrows="#plans = get_plans()">
170
+ <tr>
171
+ <th concordion:assertequals="#plan.planName">Plan Name</th>
172
+ </tr>
173
+ <tr>
174
+ <td concordion:assertequals="#plan.planName" class="concordion_failure">Cunning Plan 1 expected but received Cunning Plan 2</td>
175
+ </tr>
176
+ <tr>
177
+ <td concordion:assertequals="#plan.planName" class="concordion_failure">Cunning Plan 2 expected but received Cunning Plan 3</td>
178
+ </tr>
179
+ </table>
180
+ <table class="concordion_failure" concordion:verifyrows="#plans = get_3_plans()">
181
+ <tr>
182
+ <th concordion:assertequals="#plan.planName">Plan Name</th>
183
+ </tr>
184
+ <tr>
185
+ <td concordion:assertequals="#plan.planName">Cunning Plan A</td>
186
+ </tr>
187
+ <tr><td concordion:assertequals="#plan.planName">[2 Surplus Row(s) Returned By Fixture]</td></tr></table>
188
+ <table class="concordion_failure" concordion:verifyrows="#plans = get_plans()">
189
+ <tr>
190
+ <th concordion:assertequals="#plan.planName">Plan Name</th>
191
+ </tr>
192
+ <tr>
193
+ <td concordion:assertequals="#plan.planName" class="concordion_success">Cunning Plan 2</td>
194
+ </tr>
195
+ <tr>
196
+ <td concordion:assertequals="#plan.planName" class="concordion_success">Cunning Plan 3</td>
197
+ </tr>
198
+ <tr>
199
+ <td concordion:assertequals="#plan.planName" class="concordion_failure">Cunning Plan 4 expected but received [No more rows]</td>
200
+ </tr>
201
+ <tr>
202
+ <td concordion:assertequals="#plan.planName" class="concordion_failure">Cunning Plan 5 expected but received [No more rows]</td>
203
+ </tr>
204
+ <tr>
205
+ <td concordion:assertequals="#plan.planName" class="concordion_failure">Cunning Plan 6 expected but received [No more rows]</td>
206
+ </tr>
207
+ </table>
161
208
  </body>
162
209
  </html>
@@ -1,11 +1,37 @@
1
1
  require 'test_helper'
2
2
  require 'goldmaster_test_case'
3
3
 
4
+ require 'mocha'
5
+
4
6
  class GoldmasterFailingTest < GoldmasterTestCase
5
- def initialize(suite)
6
- super(suite, {:expected_failure_count => 1})
7
+ def expected_failure_count
8
+ 9
7
9
  end
10
+
8
11
  def getGreeting
9
12
  "Hello World?"
10
13
  end
14
+
15
+ def get_3_plans
16
+ plans = []
17
+ plans << mock_plan_named("Cunning Plan A")
18
+ plans << mock_plan_named("Cunning Plan B")
19
+ plans << mock_plan_named("Cunning Plan C")
20
+ plans
21
+
22
+ end
23
+
24
+ def get_plans
25
+ plans = []
26
+ plans << mock_plan_named("Cunning Plan 2")
27
+ plans << mock_plan_named("Cunning Plan 3")
28
+ plans
29
+ end
30
+
31
+ def mock_plan_named(name)
32
+ plan = mock("plan")
33
+ plan.stubs(:planName).returns name
34
+ plan
35
+ end
11
36
  end
37
+