gherkin 2.4.21-x86-mswin32 → 2.5.0-x86-mswin32
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +5 -6
- data/History.md +71 -0
- data/features/json_formatter.feature +134 -80
- data/features/json_parser.feature +8 -12
- data/gherkin.gemspec +2 -2
- data/lib/1.8/gherkin_lexer_ar.so +0 -0
- data/lib/1.8/gherkin_lexer_bg.so +0 -0
- data/lib/1.8/gherkin_lexer_ca.so +0 -0
- data/lib/1.8/gherkin_lexer_cs.so +0 -0
- data/lib/1.8/gherkin_lexer_cy_gb.so +0 -0
- data/lib/1.8/gherkin_lexer_da.so +0 -0
- data/lib/1.8/gherkin_lexer_de.so +0 -0
- data/lib/1.8/gherkin_lexer_en.so +0 -0
- data/lib/1.8/gherkin_lexer_en_au.so +0 -0
- data/lib/1.8/gherkin_lexer_en_lol.so +0 -0
- data/lib/1.8/gherkin_lexer_en_pirate.so +0 -0
- data/lib/1.8/gherkin_lexer_en_scouse.so +0 -0
- data/lib/1.8/gherkin_lexer_en_tx.so +0 -0
- data/lib/1.8/gherkin_lexer_eo.so +0 -0
- data/lib/1.8/gherkin_lexer_es.so +0 -0
- data/lib/1.8/gherkin_lexer_et.so +0 -0
- data/lib/1.8/gherkin_lexer_fi.so +0 -0
- data/lib/1.8/gherkin_lexer_fr.so +0 -0
- data/lib/1.8/gherkin_lexer_he.so +0 -0
- data/lib/1.8/gherkin_lexer_hr.so +0 -0
- data/lib/1.8/gherkin_lexer_hu.so +0 -0
- data/lib/1.8/gherkin_lexer_id.so +0 -0
- data/lib/1.8/gherkin_lexer_is.so +0 -0
- data/lib/1.8/gherkin_lexer_it.so +0 -0
- data/lib/1.8/gherkin_lexer_ja.so +0 -0
- data/lib/1.8/gherkin_lexer_ko.so +0 -0
- data/lib/1.8/gherkin_lexer_lt.so +0 -0
- data/lib/1.8/gherkin_lexer_lu.so +0 -0
- data/lib/1.8/gherkin_lexer_lv.so +0 -0
- data/lib/1.8/gherkin_lexer_nl.so +0 -0
- data/lib/1.8/gherkin_lexer_no.so +0 -0
- data/lib/1.8/gherkin_lexer_pl.so +0 -0
- data/lib/1.8/gherkin_lexer_pt.so +0 -0
- data/lib/1.8/gherkin_lexer_ro.so +0 -0
- data/lib/1.8/gherkin_lexer_ru.so +0 -0
- data/lib/1.8/gherkin_lexer_sk.so +0 -0
- data/lib/1.8/gherkin_lexer_sr_cyrl.so +0 -0
- data/lib/1.8/gherkin_lexer_sr_latn.so +0 -0
- data/lib/1.8/gherkin_lexer_sv.so +0 -0
- data/lib/1.8/gherkin_lexer_tr.so +0 -0
- data/lib/1.8/gherkin_lexer_uk.so +0 -0
- data/lib/1.8/gherkin_lexer_uz.so +0 -0
- data/lib/1.8/gherkin_lexer_vi.so +0 -0
- data/lib/1.8/gherkin_lexer_zh_cn.so +0 -0
- data/lib/1.8/gherkin_lexer_zh_tw.so +0 -0
- data/lib/1.9/gherkin_lexer_ar.so +0 -0
- data/lib/1.9/gherkin_lexer_bg.so +0 -0
- data/lib/1.9/gherkin_lexer_ca.so +0 -0
- data/lib/1.9/gherkin_lexer_cs.so +0 -0
- data/lib/1.9/gherkin_lexer_cy_gb.so +0 -0
- data/lib/1.9/gherkin_lexer_da.so +0 -0
- data/lib/1.9/gherkin_lexer_de.so +0 -0
- data/lib/1.9/gherkin_lexer_en.so +0 -0
- data/lib/1.9/gherkin_lexer_en_au.so +0 -0
- data/lib/1.9/gherkin_lexer_en_lol.so +0 -0
- data/lib/1.9/gherkin_lexer_en_pirate.so +0 -0
- data/lib/1.9/gherkin_lexer_en_scouse.so +0 -0
- data/lib/1.9/gherkin_lexer_en_tx.so +0 -0
- data/lib/1.9/gherkin_lexer_eo.so +0 -0
- data/lib/1.9/gherkin_lexer_es.so +0 -0
- data/lib/1.9/gherkin_lexer_et.so +0 -0
- data/lib/1.9/gherkin_lexer_fi.so +0 -0
- data/lib/1.9/gherkin_lexer_fr.so +0 -0
- data/lib/1.9/gherkin_lexer_he.so +0 -0
- data/lib/1.9/gherkin_lexer_hr.so +0 -0
- data/lib/1.9/gherkin_lexer_hu.so +0 -0
- data/lib/1.9/gherkin_lexer_id.so +0 -0
- data/lib/1.9/gherkin_lexer_is.so +0 -0
- data/lib/1.9/gherkin_lexer_it.so +0 -0
- data/lib/1.9/gherkin_lexer_ja.so +0 -0
- data/lib/1.9/gherkin_lexer_ko.so +0 -0
- data/lib/1.9/gherkin_lexer_lt.so +0 -0
- data/lib/1.9/gherkin_lexer_lu.so +0 -0
- data/lib/1.9/gherkin_lexer_lv.so +0 -0
- data/lib/1.9/gherkin_lexer_nl.so +0 -0
- data/lib/1.9/gherkin_lexer_no.so +0 -0
- data/lib/1.9/gherkin_lexer_pl.so +0 -0
- data/lib/1.9/gherkin_lexer_pt.so +0 -0
- data/lib/1.9/gherkin_lexer_ro.so +0 -0
- data/lib/1.9/gherkin_lexer_ru.so +0 -0
- data/lib/1.9/gherkin_lexer_sk.so +0 -0
- data/lib/1.9/gherkin_lexer_sr_cyrl.so +0 -0
- data/lib/1.9/gherkin_lexer_sr_latn.so +0 -0
- data/lib/1.9/gherkin_lexer_sv.so +0 -0
- data/lib/1.9/gherkin_lexer_tr.so +0 -0
- data/lib/1.9/gherkin_lexer_uk.so +0 -0
- data/lib/1.9/gherkin_lexer_uz.so +0 -0
- data/lib/1.9/gherkin_lexer_vi.so +0 -0
- data/lib/1.9/gherkin_lexer_zh_cn.so +0 -0
- data/lib/1.9/gherkin_lexer_zh_tw.so +0 -0
- data/lib/gherkin/formatter/json_formatter.rb +10 -6
- data/lib/gherkin/formatter/model.rb +6 -20
- data/lib/gherkin/formatter/pretty_formatter.rb +3 -6
- data/lib/gherkin/json_parser.rb +5 -6
- data/lib/gherkin/listener/formatter_listener.rb +5 -1
- data/spec/gherkin/fixtures/complex.json +30 -42
- data/spec/gherkin/formatter/json_formatter_spec.rb +74 -0
- data/spec/gherkin/json_parser_spec.rb +5 -8
- data/tasks/cucumber.rake +1 -0
- metadata +26 -24
data/lib/1.8/gherkin_lexer_ar.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_bg.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_ca.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_cs.so
CHANGED
Binary file
|
Binary file
|
data/lib/1.8/gherkin_lexer_da.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_de.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_en.so
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/1.8/gherkin_lexer_eo.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_es.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_et.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_fi.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_fr.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_he.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_hr.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_hu.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_id.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_is.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_it.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_ja.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_ko.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_lt.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_lu.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_lv.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_nl.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_no.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_pl.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_pt.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_ro.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_ru.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_sk.so
CHANGED
Binary file
|
Binary file
|
Binary file
|
data/lib/1.8/gherkin_lexer_sv.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_tr.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_uk.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_uz.so
CHANGED
Binary file
|
data/lib/1.8/gherkin_lexer_vi.so
CHANGED
Binary file
|
Binary file
|
Binary file
|
data/lib/1.9/gherkin_lexer_ar.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_bg.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_ca.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_cs.so
CHANGED
Binary file
|
Binary file
|
data/lib/1.9/gherkin_lexer_da.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_de.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_en.so
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/1.9/gherkin_lexer_eo.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_es.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_et.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_fi.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_fr.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_he.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_hr.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_hu.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_id.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_is.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_it.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_ja.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_ko.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_lt.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_lu.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_lv.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_nl.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_no.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_pl.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_pt.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_ro.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_ru.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_sk.so
CHANGED
Binary file
|
Binary file
|
Binary file
|
data/lib/1.9/gherkin_lexer_sv.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_tr.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_uk.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_uz.so
CHANGED
Binary file
|
data/lib/1.9/gherkin_lexer_vi.so
CHANGED
Binary file
|
Binary file
|
Binary file
|
@@ -29,14 +29,17 @@ module Gherkin
|
|
29
29
|
|
30
30
|
def background(background)
|
31
31
|
feature_elements << background.to_hash
|
32
|
+
@step_index = 0
|
32
33
|
end
|
33
34
|
|
34
35
|
def scenario(scenario)
|
35
36
|
feature_elements << scenario.to_hash
|
37
|
+
@step_index = 0
|
36
38
|
end
|
37
39
|
|
38
40
|
def scenario_outline(scenario_outline)
|
39
41
|
feature_elements << scenario_outline.to_hash
|
42
|
+
@step_index = 0
|
40
43
|
end
|
41
44
|
|
42
45
|
def examples(examples)
|
@@ -48,11 +51,16 @@ module Gherkin
|
|
48
51
|
end
|
49
52
|
|
50
53
|
def match(match)
|
51
|
-
|
54
|
+
current_steps[@step_index]['match'] = match.to_hash
|
52
55
|
end
|
53
56
|
|
54
57
|
def result(result)
|
55
|
-
|
58
|
+
current_steps[@step_index]['result'] = result.to_hash
|
59
|
+
@step_index += 1
|
60
|
+
end
|
61
|
+
|
62
|
+
def last_step
|
63
|
+
current_steps[-1]
|
56
64
|
end
|
57
65
|
|
58
66
|
def embedding(mime_type, data)
|
@@ -81,10 +89,6 @@ module Gherkin
|
|
81
89
|
feature_element['steps'] ||= []
|
82
90
|
end
|
83
91
|
|
84
|
-
def last_step
|
85
|
-
current_steps[-1]
|
86
|
-
end
|
87
|
-
|
88
92
|
def embeddings
|
89
93
|
last_step['embeddings'] ||= []
|
90
94
|
end
|
@@ -112,15 +112,15 @@ module Gherkin
|
|
112
112
|
class Step < BasicStatement
|
113
113
|
native_impl('gherkin')
|
114
114
|
|
115
|
-
attr_accessor :
|
115
|
+
attr_accessor :rows
|
116
|
+
attr_accessor :doc_string
|
116
117
|
|
117
118
|
def line_range
|
118
119
|
range = super
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
range = range.first..multiline_arg.line_range.last
|
120
|
+
if(rows)
|
121
|
+
range = range.first..rows[-1].line
|
122
|
+
elsif(doc_string)
|
123
|
+
range = range.first..doc_string.line_range.last
|
124
124
|
end
|
125
125
|
range
|
126
126
|
end
|
@@ -136,20 +136,6 @@ module Gherkin
|
|
136
136
|
Argument.new(offset, val)
|
137
137
|
end
|
138
138
|
end
|
139
|
-
|
140
|
-
def to_hash
|
141
|
-
hash = super
|
142
|
-
if Array === @multiline_arg
|
143
|
-
hash['multiline_arg'] = {
|
144
|
-
'type' => 'table',
|
145
|
-
'value' => hash['multiline_arg']
|
146
|
-
}
|
147
|
-
elsif DocString === @multiline_arg
|
148
|
-
hash['multiline_arg']['type'] = 'doc_string'
|
149
|
-
hash['multiline_arg']['content_type'] = @multiline_arg.content_type
|
150
|
-
end
|
151
|
-
hash
|
152
|
-
end
|
153
139
|
end
|
154
140
|
|
155
141
|
class Comment < Hashable
|
@@ -110,12 +110,9 @@ module Gherkin
|
|
110
110
|
@io.write(text_format.text(step.keyword))
|
111
111
|
@step_printer.write_step(@io, text_format, arg_format, step.name, arguments)
|
112
112
|
@io.puts(indented_location(location, proceed))
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
when Array
|
117
|
-
table(step.multiline_arg)
|
118
|
-
end
|
113
|
+
|
114
|
+
doc_string(step.doc_string) if step.doc_string
|
115
|
+
table(step.rows) if step.rows
|
119
116
|
end
|
120
117
|
|
121
118
|
class MonochromeFormat
|
data/lib/gherkin/json_parser.rb
CHANGED
@@ -53,12 +53,11 @@ module Gherkin
|
|
53
53
|
def step(o)
|
54
54
|
step = Formatter::Model::Step.new(comments(o), keyword(o), name(o), line(o))
|
55
55
|
|
56
|
-
if(
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
end
|
56
|
+
if(o['rows'])
|
57
|
+
step.rows = rows(o['rows'])
|
58
|
+
elsif(o['doc_string'])
|
59
|
+
ds = o['doc_string']
|
60
|
+
step.doc_string = Formatter::Model::DocString.new(ds['content_type'].to_s, ds['value'], ds['line'])
|
62
61
|
end
|
63
62
|
|
64
63
|
step
|
@@ -98,7 +98,11 @@ module Gherkin
|
|
98
98
|
|
99
99
|
def replay_step_or_examples
|
100
100
|
if(@step_statement)
|
101
|
-
|
101
|
+
if(doc_string = grab_doc_string!)
|
102
|
+
@step_statement.doc_string = doc_string
|
103
|
+
elsif(rows = grab_rows!)
|
104
|
+
@step_statement.rows = rows
|
105
|
+
end
|
102
106
|
@formatter.step(@step_statement)
|
103
107
|
@step_statement = nil
|
104
108
|
end
|
@@ -29,14 +29,9 @@
|
|
29
29
|
"steps": [
|
30
30
|
{ "name": "A step with a table",
|
31
31
|
"keyword": "Given ",
|
32
|
-
"
|
33
|
-
"
|
34
|
-
|
35
|
-
{"cells":
|
36
|
-
[ "a","row","for","a","step" ]
|
37
|
-
}
|
38
|
-
]
|
39
|
-
}
|
32
|
+
"rows" : [
|
33
|
+
{"cells": [ "a","row","for","a","step" ]}
|
34
|
+
]
|
40
35
|
}
|
41
36
|
],
|
42
37
|
"examples": [
|
@@ -79,41 +74,35 @@
|
|
79
74
|
"steps" : [
|
80
75
|
{ "name" : "a third step with a table",
|
81
76
|
"keyword": "Given ",
|
82
|
-
"
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
}
|
95
|
-
]
|
96
|
-
}
|
77
|
+
"rows": [
|
78
|
+
{
|
79
|
+
"cells" : [ "a","b" ],
|
80
|
+
"line" : 987
|
81
|
+
},
|
82
|
+
{ "cells" :
|
83
|
+
[ "c","d" ]
|
84
|
+
},
|
85
|
+
{ "cells" :
|
86
|
+
[ "e", "f" ]
|
87
|
+
}
|
88
|
+
]
|
97
89
|
},
|
98
90
|
{ "name" : "I am still testing things",
|
99
91
|
"keyword": "Given ",
|
100
|
-
"
|
101
|
-
"
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
}
|
115
|
-
]
|
116
|
-
}
|
92
|
+
"rows": [
|
93
|
+
{ "cells" :
|
94
|
+
[ "g","h" ]
|
95
|
+
},
|
96
|
+
{ "cells" :
|
97
|
+
[ "e","r" ]
|
98
|
+
},
|
99
|
+
{ "cells" :
|
100
|
+
[ "k", "i" ]
|
101
|
+
},
|
102
|
+
{ "cells" :
|
103
|
+
[ "n", "" ]
|
104
|
+
}
|
105
|
+
]
|
117
106
|
},
|
118
107
|
{ "name" : "I am done testing these tables",
|
119
108
|
"keyword": "Given " },
|
@@ -128,8 +117,7 @@
|
|
128
117
|
"steps" : [
|
129
118
|
{ "name" : "All work and no play",
|
130
119
|
"keyword": "Given ",
|
131
|
-
"
|
132
|
-
"type": "doc_string",
|
120
|
+
"doc_string": {
|
133
121
|
"content_type": "text",
|
134
122
|
"value": "Makes Homer something something\nAnd something else",
|
135
123
|
"line": 777
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'stringio'
|
3
|
+
require 'gherkin/formatter/json_formatter'
|
4
|
+
require 'gherkin/formatter/model'
|
5
|
+
|
6
|
+
module Gherkin
|
7
|
+
module Formatter
|
8
|
+
describe JSONFormatter do
|
9
|
+
it "renders results" do
|
10
|
+
io = StringIO.new
|
11
|
+
f = JSONFormatter.new(io)
|
12
|
+
f.uri("f.feature")
|
13
|
+
f.feature(Model::Feature.new([], [], "Feature", "f", "", 1))
|
14
|
+
f.scenario(Model::Scenario.new([], [], "Feature", "f", "", 2))
|
15
|
+
f.step(Model::Step.new([], "Given ", "g", 3))
|
16
|
+
f.step(Model::Step.new([], "When ", "w", 4))
|
17
|
+
|
18
|
+
f.match(Model::Match.new([], "def.rb:33"))
|
19
|
+
f.result(Model::Result.new(:passed, 1, nil))
|
20
|
+
|
21
|
+
f.match(Model::Match.new([], "def.rb:44"))
|
22
|
+
f.result(Model::Result.new(:passed, 1, nil))
|
23
|
+
|
24
|
+
f.eof
|
25
|
+
|
26
|
+
expected = %{
|
27
|
+
{
|
28
|
+
"keyword": "Feature",
|
29
|
+
"name": "f",
|
30
|
+
"line": 1,
|
31
|
+
"description": "",
|
32
|
+
"elements": [
|
33
|
+
{
|
34
|
+
"keyword": "Feature",
|
35
|
+
"name": "f",
|
36
|
+
"line": 2,
|
37
|
+
"description": "",
|
38
|
+
"type": "scenario",
|
39
|
+
"steps": [
|
40
|
+
{
|
41
|
+
"keyword": "Given ",
|
42
|
+
"name": "g",
|
43
|
+
"line": 3,
|
44
|
+
"match": {
|
45
|
+
"location": "def.rb:33"
|
46
|
+
},
|
47
|
+
"result": {
|
48
|
+
"status": "passed",
|
49
|
+
"duration": 1
|
50
|
+
}
|
51
|
+
},
|
52
|
+
{
|
53
|
+
"keyword": "When ",
|
54
|
+
"name": "w",
|
55
|
+
"line": 4,
|
56
|
+
"match": {
|
57
|
+
"location": "def.rb:44"
|
58
|
+
},
|
59
|
+
"result": {
|
60
|
+
"status": "passed",
|
61
|
+
"duration": 1
|
62
|
+
}
|
63
|
+
}
|
64
|
+
]
|
65
|
+
}
|
66
|
+
]
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
JSON.parse(expected).should == JSON.parse(io.string)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|