@@ -26,7 +26,9 @@ feature -- Access
|
||||
create template_content.make_empty
|
||||
l_file.read_stream (l_file.count)
|
||||
l_last_string := l_file.last_string
|
||||
check l_last_string /= Void end -- implied by postcondition of `l_file.read_stream'
|
||||
check
|
||||
l_last_string /= Void
|
||||
end -- implied by postcondition of `l_file.read_stream'
|
||||
template_content.append (l_last_string.string)
|
||||
Result := template_content
|
||||
l_file.close
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
note
|
||||
description:
|
||||
|
||||
"JSON Iterator"
|
||||
|
||||
description: "JSON Iterator"
|
||||
pattern: "Iterator visitor"
|
||||
author: "Jocelyn Fiat"
|
||||
license:"MIT (see http://www.opensource.org/licenses/mit-license.php)"
|
||||
license: "MIT (see http://www.opensource.org/licenses/mit-license.php)"
|
||||
date: "2013/08/01"
|
||||
revision: "Revision 0.1"
|
||||
|
||||
@@ -13,6 +10,7 @@ deferred class
|
||||
JSON_ITERATOR
|
||||
|
||||
inherit
|
||||
|
||||
JSON_VISITOR
|
||||
|
||||
feature -- Visitor Pattern
|
||||
|
||||
@@ -6,11 +6,11 @@ class
|
||||
JSON_PRETTY_STRING_VISITOR
|
||||
|
||||
inherit
|
||||
|
||||
JSON_VISITOR
|
||||
|
||||
create
|
||||
make,
|
||||
make_custom
|
||||
make, make_custom
|
||||
|
||||
feature -- Initialization
|
||||
|
||||
@@ -26,7 +26,6 @@ feature -- Initialization
|
||||
output := a_output
|
||||
create indentation.make_empty
|
||||
indentation_step := "%T"
|
||||
|
||||
object_count_inlining := a_object_count_inlining
|
||||
array_count_inlining := a_array_count_inlining
|
||||
end
|
||||
@@ -60,6 +59,7 @@ feature -- Access
|
||||
end
|
||||
|
||||
object_count_inlining: INTEGER
|
||||
|
||||
array_count_inlining: INTEGER
|
||||
|
||||
feature -- Visitor Pattern
|
||||
@@ -82,10 +82,7 @@ feature -- Visitor Pattern
|
||||
until
|
||||
l_json_array.off
|
||||
loop
|
||||
if
|
||||
line_number > l_line or
|
||||
l_multiple_lines
|
||||
then
|
||||
if line_number > l_line or l_multiple_lines then
|
||||
new_line
|
||||
end
|
||||
value := l_json_array.item
|
||||
@@ -96,10 +93,7 @@ feature -- Visitor Pattern
|
||||
end
|
||||
end
|
||||
exdent
|
||||
if
|
||||
line_number > l_line or
|
||||
l_json_array.count >= array_count_inlining
|
||||
then
|
||||
if line_number > l_line or l_json_array.count >= array_count_inlining then
|
||||
new_line
|
||||
end
|
||||
output.append ("]")
|
||||
@@ -140,10 +134,7 @@ feature -- Visitor Pattern
|
||||
until
|
||||
l_pairs.off
|
||||
loop
|
||||
if
|
||||
line_number > l_line or
|
||||
l_multiple_lines
|
||||
then
|
||||
if line_number > l_line or l_multiple_lines then
|
||||
new_line
|
||||
end
|
||||
l_pairs.key_for_iteration.accept (Current)
|
||||
@@ -155,10 +146,7 @@ feature -- Visitor Pattern
|
||||
end
|
||||
end
|
||||
exdent
|
||||
if
|
||||
line_number > l_line or
|
||||
l_pairs.count >= object_count_inlining
|
||||
then
|
||||
if line_number > l_line or l_pairs.count >= object_count_inlining then
|
||||
new_line
|
||||
end
|
||||
output.append ("}")
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
note
|
||||
description:
|
||||
|
||||
"JSON Visitor"
|
||||
|
||||
description: "JSON Visitor"
|
||||
pattern: "Visitor"
|
||||
author: "Javier Velilla"
|
||||
license:"MIT (see http://www.opensource.org/licenses/mit-license.php)"
|
||||
license: "MIT (see http://www.opensource.org/licenses/mit-license.php)"
|
||||
date: "2008/08/24"
|
||||
revision: "Revision 0.1"
|
||||
|
||||
|
||||
@@ -8,9 +8,11 @@ class
|
||||
PRINT_JSON_VISITOR
|
||||
|
||||
inherit
|
||||
|
||||
JSON_VISITOR
|
||||
|
||||
create make
|
||||
create
|
||||
make
|
||||
|
||||
feature -- Initialization
|
||||
|
||||
@@ -33,7 +35,7 @@ feature -- Visitor Pattern
|
||||
value: JSON_VALUE
|
||||
l_json_array: ARRAYED_LIST [JSON_VALUE]
|
||||
do
|
||||
l_json_array:=a_json_array.array_representation
|
||||
l_json_array := a_json_array.array_representation
|
||||
to_json.append ("[")
|
||||
from
|
||||
l_json_array.start
|
||||
@@ -44,7 +46,7 @@ feature -- Visitor Pattern
|
||||
value.accept (Current)
|
||||
l_json_array.forth
|
||||
if not l_json_array.after then
|
||||
to_json.append(",")
|
||||
to_json.append (",")
|
||||
end
|
||||
end
|
||||
to_json.append ("]")
|
||||
@@ -71,7 +73,7 @@ feature -- Visitor Pattern
|
||||
visit_json_object (a_json_object: JSON_OBJECT)
|
||||
-- Visit `a_json_object'.
|
||||
local
|
||||
l_pairs: HASH_TABLE[JSON_VALUE,JSON_STRING]
|
||||
l_pairs: HASH_TABLE [JSON_VALUE, JSON_STRING]
|
||||
do
|
||||
l_pairs := a_json_object.map_representation
|
||||
to_json.append ("{")
|
||||
|
||||
@@ -5,9 +5,11 @@ note
|
||||
revision: "$Revision$"
|
||||
file: "$HeadURL: $"
|
||||
|
||||
class JSON_ARRAYED_LIST_CONVERTER
|
||||
class
|
||||
JSON_ARRAYED_LIST_CONVERTER
|
||||
|
||||
inherit
|
||||
|
||||
JSON_LIST_CONVERTER
|
||||
redefine
|
||||
object
|
||||
|
||||
@@ -5,9 +5,11 @@ note
|
||||
revision: "$Revision$"
|
||||
file: "$HeadURL: $"
|
||||
|
||||
deferred class JSON_CONVERTER
|
||||
deferred class
|
||||
JSON_CONVERTER
|
||||
|
||||
inherit
|
||||
|
||||
SHARED_EJSON
|
||||
|
||||
feature -- Access
|
||||
|
||||
@@ -5,9 +5,11 @@ note
|
||||
revision: "$Revision: 94128 $"
|
||||
file: "$HeadURL: $"
|
||||
|
||||
class JSON_HASH_TABLE_CONVERTER
|
||||
class
|
||||
JSON_HASH_TABLE_CONVERTER
|
||||
|
||||
inherit
|
||||
|
||||
JSON_CONVERTER
|
||||
|
||||
create
|
||||
@@ -36,10 +38,14 @@ feature -- Conversion
|
||||
if attached {HASHABLE} json.object (ic.key, Void) as h then
|
||||
Result.put (l_object, h)
|
||||
else
|
||||
check key_is_hashable: False end
|
||||
check
|
||||
key_is_hashable: False
|
||||
end
|
||||
end
|
||||
else
|
||||
check object_attached: False end
|
||||
check
|
||||
object_attached: False
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -5,9 +5,11 @@ note
|
||||
revision: "$Revision$"
|
||||
file: "$HeadURL: $"
|
||||
|
||||
class JSON_LINKED_LIST_CONVERTER
|
||||
class
|
||||
JSON_LINKED_LIST_CONVERTER
|
||||
|
||||
inherit
|
||||
|
||||
JSON_LIST_CONVERTER
|
||||
redefine
|
||||
object
|
||||
|
||||
@@ -5,9 +5,11 @@ note
|
||||
revision: "$Revision$"
|
||||
file: "$HeadURL: $"
|
||||
|
||||
deferred class JSON_LIST_CONVERTER
|
||||
deferred class
|
||||
JSON_LIST_CONVERTER
|
||||
|
||||
inherit
|
||||
|
||||
JSON_CONVERTER
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
@@ -5,9 +5,11 @@ note
|
||||
revision: "$Revision$"
|
||||
file: "$HeadURL: $"
|
||||
|
||||
class EJSON
|
||||
class
|
||||
EJSON
|
||||
|
||||
inherit
|
||||
|
||||
EXCEPTIONS
|
||||
|
||||
feature -- Access
|
||||
@@ -56,7 +58,9 @@ feature -- Access
|
||||
if attached value (a @ i) as v then
|
||||
ja.add (v)
|
||||
else
|
||||
check value_attached: False end
|
||||
check
|
||||
value_attached: False
|
||||
end
|
||||
end
|
||||
i := i + 1
|
||||
end
|
||||
@@ -65,13 +69,11 @@ feature -- Access
|
||||
create {JSON_STRING} Result.make_json (c8.out)
|
||||
elseif attached {CHARACTER_32} an_object as c32 then
|
||||
create {JSON_STRING} Result.make_json (c32.out)
|
||||
|
||||
elseif attached {STRING_8} an_object as s8 then
|
||||
create {JSON_STRING} Result.make_json (s8)
|
||||
elseif attached {STRING_32} an_object as s32 then
|
||||
create {JSON_STRING} Result.make_json_from_string_32 (s32)
|
||||
end
|
||||
|
||||
if Result = Void then
|
||||
-- Now check the converters
|
||||
if an_object /= Void and then attached converter_for (an_object) as jc then
|
||||
|
||||
@@ -7,7 +7,6 @@ note
|
||||
[]
|
||||
[elements]
|
||||
]"
|
||||
|
||||
author: "Javier Velilla"
|
||||
date: "2008/08/24"
|
||||
revision: "Revision 0.1"
|
||||
@@ -16,6 +15,7 @@ class
|
||||
JSON_ARRAY
|
||||
|
||||
inherit
|
||||
|
||||
JSON_VALUE
|
||||
|
||||
ITERABLE [JSON_VALUE]
|
||||
@@ -103,8 +103,7 @@ feature -- Change Element
|
||||
do
|
||||
values.put_front (v)
|
||||
ensure
|
||||
has_new_value: old values.count + 1 = values.count and
|
||||
values.first = v
|
||||
has_new_value: old values.count + 1 = values.count and values.first = v
|
||||
end
|
||||
|
||||
add, extend (v: JSON_VALUE)
|
||||
@@ -113,8 +112,7 @@ feature -- Change Element
|
||||
do
|
||||
values.extend (v)
|
||||
ensure
|
||||
has_new_value: old values.count + 1 = values.count and
|
||||
values.has (v)
|
||||
has_new_value: old values.count + 1 = values.count and values.has (v)
|
||||
end
|
||||
|
||||
prune_all (v: JSON_VALUE)
|
||||
@@ -144,7 +142,7 @@ feature -- Report
|
||||
until
|
||||
values.off
|
||||
loop
|
||||
Result:= ((Result \\ 8388593) |<< 8) + values.item.hash_code
|
||||
Result := ((Result \\ 8388593) |<< 8) + values.item.hash_code
|
||||
values.forth
|
||||
end
|
||||
Result := Result \\ values.count
|
||||
|
||||
@@ -8,6 +8,7 @@ class
|
||||
JSON_BOOLEAN
|
||||
|
||||
inherit
|
||||
|
||||
JSON_VALUE
|
||||
|
||||
create
|
||||
|
||||
@@ -8,6 +8,7 @@ class
|
||||
JSON_NULL
|
||||
|
||||
inherit
|
||||
|
||||
JSON_VALUE
|
||||
|
||||
feature --Access
|
||||
@@ -40,7 +41,7 @@ feature -- Status report
|
||||
Result := null_value
|
||||
end
|
||||
|
||||
feature {NONE}-- Implementation
|
||||
feature {NONE} -- Implementation
|
||||
|
||||
null_value: STRING = "null"
|
||||
|
||||
|
||||
@@ -1,24 +1,22 @@
|
||||
note
|
||||
|
||||
description: "JSON Numbers, octal and hexadecimal formats are not used."
|
||||
author: "Javier Velilla"
|
||||
date: "2008/08/24"
|
||||
revision: "Revision 0.1"
|
||||
license:"MIT (see http://www.opensource.org/licenses/mit-license.php)"
|
||||
license: "MIT (see http://www.opensource.org/licenses/mit-license.php)"
|
||||
|
||||
class
|
||||
JSON_NUMBER
|
||||
|
||||
inherit
|
||||
|
||||
JSON_VALUE
|
||||
redefine
|
||||
is_equal
|
||||
end
|
||||
|
||||
create
|
||||
make_integer,
|
||||
make_natural,
|
||||
make_real
|
||||
make_integer, make_natural, make_real
|
||||
|
||||
feature {NONE} -- initialization
|
||||
|
||||
@@ -88,7 +86,9 @@ feature -- Status report
|
||||
feature -- Implementation
|
||||
|
||||
INTEGER_TYPE: INTEGER = 1
|
||||
|
||||
DOUBLE_TYPE: INTEGER = 2
|
||||
|
||||
NATURAL_TYPE: INTEGER = 3
|
||||
|
||||
numeric_type: INTEGER
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
note
|
||||
|
||||
description: "[
|
||||
An JSON_OBJECT represent an object in JSON.
|
||||
An object is an unordered set of name/value pairs
|
||||
@@ -9,17 +8,17 @@ note
|
||||
object
|
||||
{}
|
||||
{"key": "value"}
|
||||
|
||||
]"
|
||||
author: "Javier Velilla"
|
||||
date: "2008/08/24"
|
||||
revision: "Revision 0.1"
|
||||
license:"MIT (see http://www.opensource.org/licenses/mit-license.php)"
|
||||
license: "MIT (see http://www.opensource.org/licenses/mit-license.php)"
|
||||
|
||||
class
|
||||
JSON_OBJECT
|
||||
|
||||
inherit
|
||||
|
||||
JSON_VALUE
|
||||
|
||||
TABLE_ITERABLE [JSON_VALUE, JSON_STRING]
|
||||
@@ -66,7 +65,6 @@ feature -- Change Element
|
||||
put (l_value, key)
|
||||
end
|
||||
|
||||
|
||||
put_integer (value: INTEGER_64; key: JSON_STRING)
|
||||
-- Assuming there is no item of key `key',
|
||||
-- insert `value' with `key'.
|
||||
|
||||
@@ -1,30 +1,26 @@
|
||||
note
|
||||
|
||||
description: "[
|
||||
A JSON_STRING represent a string in JSON.
|
||||
A string is a collection of zero or more Unicodes characters, wrapped in double
|
||||
quotes, using blackslash espaces.
|
||||
]"
|
||||
|
||||
author: "Javier Velilla"
|
||||
date: "2008/08/24"
|
||||
revision: "Revision 0.1"
|
||||
license:"MIT (see http://www.opensource.org/licenses/mit-license.php)"
|
||||
|
||||
license: "MIT (see http://www.opensource.org/licenses/mit-license.php)"
|
||||
|
||||
class
|
||||
JSON_STRING
|
||||
|
||||
inherit
|
||||
|
||||
JSON_VALUE
|
||||
redefine
|
||||
is_equal
|
||||
end
|
||||
|
||||
create
|
||||
make_json,
|
||||
make_json_from_string_32,
|
||||
make_with_escaped_json
|
||||
make_json, make_json_from_string_32, make_with_escaped_json
|
||||
|
||||
convert
|
||||
make_json ({READABLE_STRING_8, STRING_8, IMMUTABLE_STRING_8}),
|
||||
@@ -105,11 +101,15 @@ feature -- Conversion
|
||||
do
|
||||
s := item
|
||||
n := s.count
|
||||
from i := 1 until i > n loop
|
||||
c := s[i]
|
||||
from
|
||||
i := 1
|
||||
until
|
||||
i > n
|
||||
loop
|
||||
c := s [i]
|
||||
if c = '\' then
|
||||
if i < n then
|
||||
inspect s[i+1]
|
||||
inspect s [i + 1]
|
||||
when '\' then
|
||||
a_output.append_character ('\')
|
||||
i := i + 2
|
||||
@@ -163,11 +163,15 @@ feature -- Conversion
|
||||
do
|
||||
s := item
|
||||
n := s.count
|
||||
from i := 1 until i > n loop
|
||||
from
|
||||
i := 1
|
||||
until
|
||||
i > n
|
||||
loop
|
||||
ch := s.item (i)
|
||||
if ch = '\' then
|
||||
if i < n then
|
||||
inspect s[i+1]
|
||||
inspect s [i + 1]
|
||||
when '\' then
|
||||
a_output.append_character ('\')
|
||||
i := i + 2
|
||||
@@ -207,37 +211,27 @@ feature -- Conversion
|
||||
c := ch.natural_32_code
|
||||
if c <= 0x7F then
|
||||
-- 0xxxxxxx
|
||||
check ch = c.to_character_32 end
|
||||
check
|
||||
ch = c.to_character_32
|
||||
end
|
||||
a_output.append_character (ch)
|
||||
elseif c <= 0xDF then
|
||||
-- 110xxxxx 10xxxxxx
|
||||
i := i + 1
|
||||
if i <= n then
|
||||
a_output.append_code (
|
||||
((c & 0x1F) |<< 6) |
|
||||
(s.code (i) & 0x3F)
|
||||
)
|
||||
a_output.append_code (((c & 0x1F) |<< 6) | (s.code (i) & 0x3F))
|
||||
end
|
||||
elseif c <= 0xEF then
|
||||
-- 1110xxxx 10xxxxxx 10xxxxxx
|
||||
i := i + 2
|
||||
if i <= n then
|
||||
a_output.append_code (
|
||||
((c & 0xF) |<< 12) |
|
||||
((s.code (i - 1) & 0x3F) |<< 6) |
|
||||
(s.code (i) & 0x3F)
|
||||
)
|
||||
a_output.append_code (((c & 0xF) |<< 12) | ((s.code (i - 1) & 0x3F) |<< 6) | (s.code (i) & 0x3F))
|
||||
end
|
||||
elseif c <= 0xF7 then
|
||||
-- 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
|
||||
i := i + 3
|
||||
if i <= n then
|
||||
a_output.append_code (
|
||||
((c & 0x7) |<< 18) |
|
||||
((s.code (i - 2) & 0x3F) |<< 12) |
|
||||
((s.code (i - 1) & 0x3F) |<< 6) |
|
||||
(s.code (i) & 0x3F)
|
||||
)
|
||||
a_output.append_code (((c & 0x7) |<< 18) | ((s.code (i - 2) & 0x3F) |<< 12) | ((s.code (i - 1) & 0x3F) |<< 6) | (s.code (i) & 0x3F))
|
||||
end
|
||||
end
|
||||
i := i + 1
|
||||
@@ -302,7 +296,7 @@ feature {NONE} -- Implementation
|
||||
until
|
||||
i > s.count or not Result
|
||||
loop
|
||||
Result := s[i].is_hexa_digit
|
||||
Result := s [i].is_hexa_digit
|
||||
i := i + 1
|
||||
end
|
||||
end
|
||||
@@ -317,13 +311,11 @@ feature {NONE} -- Implementation
|
||||
char: CHARACTER
|
||||
do
|
||||
nb := s.count
|
||||
|
||||
if nb >= 2 and then s.item (2) = 'x' then
|
||||
i := 3
|
||||
else
|
||||
i := 1
|
||||
end
|
||||
|
||||
from
|
||||
until
|
||||
i > nb
|
||||
@@ -349,16 +341,27 @@ feature {NONE} -- Implementation
|
||||
do
|
||||
n := s.count
|
||||
create Result.make (n + n // 10)
|
||||
from i := 1 until i > n loop
|
||||
from
|
||||
i := 1
|
||||
until
|
||||
i > n
|
||||
loop
|
||||
c := s.item (i)
|
||||
inspect c
|
||||
when '%"' then Result.append_string ("\%"")
|
||||
when '\' then Result.append_string ("\\")
|
||||
when '%B' then Result.append_string ("\b")
|
||||
when '%F' then Result.append_string ("\f")
|
||||
when '%N' then Result.append_string ("\n")
|
||||
when '%R' then Result.append_string ("\r")
|
||||
when '%T' then Result.append_string ("\t")
|
||||
when '%"' then
|
||||
Result.append_string ("\%"")
|
||||
when '\' then
|
||||
Result.append_string ("\\")
|
||||
when '%B' then
|
||||
Result.append_string ("\b")
|
||||
when '%F' then
|
||||
Result.append_string ("\f")
|
||||
when '%N' then
|
||||
Result.append_string ("\n")
|
||||
when '%R' then
|
||||
Result.append_string ("\r")
|
||||
when '%T' then
|
||||
Result.append_string ("\t")
|
||||
else
|
||||
Result.extend (c)
|
||||
end
|
||||
@@ -378,18 +381,29 @@ feature {NONE} -- Implementation
|
||||
do
|
||||
n := s.count
|
||||
create Result.make (n + n // 10)
|
||||
from i := 1 until i > n loop
|
||||
from
|
||||
i := 1
|
||||
until
|
||||
i > n
|
||||
loop
|
||||
uc := s.item (i)
|
||||
if uc.is_character_8 then
|
||||
c := uc.to_character_8
|
||||
inspect c
|
||||
when '%"' then Result.append_string ("\%"")
|
||||
when '\' then Result.append_string ("\\")
|
||||
when '%B' then Result.append_string ("\b")
|
||||
when '%F' then Result.append_string ("\f")
|
||||
when '%N' then Result.append_string ("\n")
|
||||
when '%R' then Result.append_string ("\r")
|
||||
when '%T' then Result.append_string ("\t")
|
||||
when '%"' then
|
||||
Result.append_string ("\%"")
|
||||
when '\' then
|
||||
Result.append_string ("\\")
|
||||
when '%B' then
|
||||
Result.append_string ("\b")
|
||||
when '%F' then
|
||||
Result.append_string ("\f")
|
||||
when '%N' then
|
||||
Result.append_string ("\n")
|
||||
when '%R' then
|
||||
Result.append_string ("\r")
|
||||
when '%T' then
|
||||
Result.append_string ("\t")
|
||||
else
|
||||
Result.extend (c)
|
||||
end
|
||||
@@ -405,14 +419,15 @@ feature {NONE} -- Implementation
|
||||
j := j + 1
|
||||
end
|
||||
h := h.substring (j, h.count)
|
||||
|
||||
from
|
||||
until
|
||||
h.count >= 4
|
||||
loop
|
||||
h.prepend_integer (0)
|
||||
end
|
||||
check h.count = 4 end
|
||||
check
|
||||
h.count = 4
|
||||
end
|
||||
Result.append (h)
|
||||
end
|
||||
i := i + 1
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
note
|
||||
description:"[
|
||||
description: "[
|
||||
JSON_VALUE represent a value in JSON.
|
||||
A value can be
|
||||
* a string in double quotes
|
||||
@@ -12,13 +12,13 @@ note
|
||||
author: "Javier Velilla"
|
||||
date: "2008/05/19"
|
||||
revision: "Revision 0.1"
|
||||
license:"MIT (see http://www.opensource.org/licenses/mit-license.php)"
|
||||
|
||||
license: "MIT (see http://www.opensource.org/licenses/mit-license.php)"
|
||||
|
||||
deferred class
|
||||
JSON_VALUE
|
||||
|
||||
inherit
|
||||
|
||||
HASHABLE
|
||||
|
||||
DEBUG_OUTPUT
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
note
|
||||
|
||||
description: "Parse serialized JSON data"
|
||||
author: "jvelilla"
|
||||
date: "2008/08/24"
|
||||
@@ -9,7 +8,9 @@ class
|
||||
JSON_PARSER
|
||||
|
||||
inherit
|
||||
|
||||
JSON_READER
|
||||
|
||||
JSON_TOKENS
|
||||
|
||||
create
|
||||
@@ -139,7 +140,11 @@ feature -- Commands
|
||||
else
|
||||
-- a complex object {"key" : "value"}
|
||||
previous
|
||||
from has_more := True until not has_more loop
|
||||
from
|
||||
has_more := True
|
||||
until
|
||||
not has_more
|
||||
loop
|
||||
next
|
||||
skip_white_spaces
|
||||
l_json_string := parse_string
|
||||
@@ -153,7 +158,6 @@ feature -- Commands
|
||||
report_error ("%N Input string is a not well formed JSON, expected: : found: " + actual.out)
|
||||
has_more := False
|
||||
end
|
||||
|
||||
l_value := parse
|
||||
if is_parsed and then (l_value /= Void and l_json_string /= Void) then
|
||||
Result.put (l_value, l_json_string)
|
||||
@@ -286,7 +290,6 @@ feature -- Commands
|
||||
do
|
||||
create sb.make_empty
|
||||
sb.append_character (actual)
|
||||
|
||||
from
|
||||
flag := True
|
||||
until
|
||||
@@ -294,16 +297,13 @@ feature -- Commands
|
||||
loop
|
||||
next
|
||||
c := actual
|
||||
if not has_next or is_close_token (c)
|
||||
or c = ',' or c = '%N' or c = '%R'
|
||||
then
|
||||
if not has_next or is_close_token (c) or c = ',' or c = '%N' or c = '%R' then
|
||||
flag := False
|
||||
previous
|
||||
else
|
||||
sb.append_character (c)
|
||||
end
|
||||
end
|
||||
|
||||
if is_valid_number (sb) then
|
||||
if sb.is_integer then
|
||||
create Result.make_integer (sb.to_integer)
|
||||
@@ -324,7 +324,7 @@ feature -- Commands
|
||||
l_string: STRING
|
||||
do
|
||||
l_null := null_id
|
||||
l_string := json_substring (index,index + l_null.count - 1)
|
||||
l_string := json_substring (index, index + l_null.count - 1)
|
||||
if l_string.is_equal (l_null) then
|
||||
Result := True
|
||||
end
|
||||
@@ -350,7 +350,7 @@ feature -- Commands
|
||||
l_string: STRING
|
||||
do
|
||||
l_true := true_id
|
||||
l_string := json_substring (index,index + l_true.count - 1)
|
||||
l_string := json_substring (index, index + l_true.count - 1)
|
||||
if l_string.is_equal (l_true) then
|
||||
Result := True
|
||||
end
|
||||
@@ -381,7 +381,7 @@ feature {NONE} -- Implementation
|
||||
local
|
||||
s: detachable STRING
|
||||
c: CHARACTER
|
||||
i,n: INTEGER
|
||||
i, n: INTEGER
|
||||
do
|
||||
create s.make_empty
|
||||
n := a_number.count
|
||||
@@ -391,21 +391,32 @@ feature {NONE} -- Implementation
|
||||
Result := True
|
||||
i := 1
|
||||
--| "-?"
|
||||
c := a_number[i]
|
||||
c := a_number [i]
|
||||
if c = '-' then
|
||||
s.extend (c); i := i + 1; c := a_number[i]
|
||||
s.extend (c);
|
||||
i := i + 1;
|
||||
c := a_number [i]
|
||||
end
|
||||
--| "0|[1-9]\d*
|
||||
if c.is_digit then
|
||||
if c = '0' then
|
||||
--| "0"
|
||||
s.extend (c); i := i + 1; c := a_number[i]
|
||||
s.extend (c);
|
||||
i := i + 1;
|
||||
c := a_number [i]
|
||||
else
|
||||
--| "[1-9]"
|
||||
s.extend (c); i := i + 1; c := a_number[i]
|
||||
s.extend (c);
|
||||
i := i + 1;
|
||||
c := a_number [i]
|
||||
--| "\d*"
|
||||
from until i > n or not c.is_digit loop
|
||||
s.extend (c); i := i + 1; c := a_number[i]
|
||||
from
|
||||
until
|
||||
i > n or not c.is_digit
|
||||
loop
|
||||
s.extend (c);
|
||||
i := i + 1;
|
||||
c := a_number [i]
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -414,10 +425,17 @@ feature {NONE} -- Implementation
|
||||
--| "(\.\d+)?"
|
||||
if c = '.' then
|
||||
--| "\.\d+" = "\.\d\d*"
|
||||
s.extend (c); i := i + 1; c := a_number[i]
|
||||
s.extend (c);
|
||||
i := i + 1;
|
||||
c := a_number [i]
|
||||
if c.is_digit then
|
||||
from until i > n or not c.is_digit loop
|
||||
s.extend (c); i := i + 1; c := a_number[i]
|
||||
from
|
||||
until
|
||||
i > n or not c.is_digit
|
||||
loop
|
||||
s.extend (c);
|
||||
i := i + 1;
|
||||
c := a_number [i]
|
||||
end
|
||||
else
|
||||
Result := False --| expecting digit
|
||||
@@ -427,13 +445,22 @@ feature {NONE} -- Implementation
|
||||
if Result then --| "(?:[eE][+-]?\d+)?\b"
|
||||
if c = 'e' or c = 'E' then
|
||||
--| "[eE][+-]?\d+"
|
||||
s.extend (c); i := i + 1; c := a_number[i]
|
||||
s.extend (c);
|
||||
i := i + 1;
|
||||
c := a_number [i]
|
||||
if c = '+' or c = '-' then
|
||||
s.extend (c); i := i + 1; c := a_number[i]
|
||||
s.extend (c);
|
||||
i := i + 1;
|
||||
c := a_number [i]
|
||||
end
|
||||
if c.is_digit then
|
||||
from until i > n or not c.is_digit loop
|
||||
s.extend (c); i := i + 1; c := a_number[i]
|
||||
from
|
||||
until
|
||||
i > n or not c.is_digit
|
||||
loop
|
||||
s.extend (c);
|
||||
i := i + 1;
|
||||
c := a_number [i]
|
||||
end
|
||||
else
|
||||
Result := False --| expecting digit
|
||||
@@ -441,8 +468,13 @@ feature {NONE} -- Implementation
|
||||
end
|
||||
end
|
||||
if Result then --| "\b"
|
||||
from until i > n or not c.is_space loop
|
||||
s.extend (c); i := i + 1; c := a_number[i]
|
||||
from
|
||||
until
|
||||
i > n or not c.is_space
|
||||
loop
|
||||
s.extend (c);
|
||||
i := i + 1;
|
||||
c := a_number [i]
|
||||
end
|
||||
Result := i > n and then s.same_string (a_number)
|
||||
end
|
||||
@@ -454,18 +486,14 @@ feature {NONE} -- Implementation
|
||||
local
|
||||
i: INTEGER
|
||||
do
|
||||
if
|
||||
a_unicode.count = 6 and then
|
||||
a_unicode[1] = '\' and then
|
||||
a_unicode[2] = 'u'
|
||||
then
|
||||
if a_unicode.count = 6 and then a_unicode [1] = '\' and then a_unicode [2] = 'u' then
|
||||
from
|
||||
Result := True
|
||||
i := 3
|
||||
until
|
||||
i > 6 or Result = False
|
||||
loop
|
||||
inspect a_unicode[i]
|
||||
inspect a_unicode [i]
|
||||
when '0'..'9', 'a'..'f', 'A'..'F' then
|
||||
else
|
||||
Result := False
|
||||
@@ -493,11 +521,11 @@ feature {NONE} -- Implementation
|
||||
Result := has_next
|
||||
end
|
||||
|
||||
is_valid_start_symbol : BOOLEAN
|
||||
is_valid_start_symbol: BOOLEAN
|
||||
-- expecting `{' or `[' as start symbol
|
||||
do
|
||||
if attached representation as s and then s.count > 0 then
|
||||
Result := s[1] = '{' or s[1] = '['
|
||||
Result := s [1] = '{' or s [1] = '['
|
||||
end
|
||||
end
|
||||
|
||||
@@ -509,5 +537,4 @@ feature {NONE} -- Constants
|
||||
|
||||
null_id: STRING = "null"
|
||||
|
||||
|
||||
end
|
||||
|
||||
@@ -65,7 +65,7 @@ feature -- Commands
|
||||
from
|
||||
c := actual
|
||||
until
|
||||
(c /= ' ' and c /= '%N' and c /= '%R' and c /= '%U' and c /= '%T' ) or not has_next
|
||||
(c /= ' ' and c /= '%N' and c /= '%R' and c /= '%U' and c /= '%T') or not has_next
|
||||
loop
|
||||
next
|
||||
c := actual
|
||||
|
||||
@@ -10,13 +10,19 @@ class
|
||||
feature -- Access
|
||||
|
||||
j_OBJECT_OPEN: CHARACTER = '{'
|
||||
|
||||
j_ARRAY_OPEN: CHARACTER = '['
|
||||
|
||||
j_OBJECT_CLOSE: CHARACTER = '}'
|
||||
|
||||
j_ARRAY_CLOSE: CHARACTER = ']'
|
||||
|
||||
j_STRING: CHARACTER = '"'
|
||||
|
||||
j_PLUS: CHARACTER = '+'
|
||||
|
||||
j_MINUS: CHARACTER = '-'
|
||||
|
||||
j_DOT: CHARACTER = '.'
|
||||
|
||||
feature -- Status report
|
||||
@@ -28,7 +34,6 @@ feature -- Status report
|
||||
when j_OBJECT_OPEN, j_ARRAY_OPEN, j_STRING, j_PLUS, j_MINUS, j_DOT then
|
||||
Result := True
|
||||
else
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -39,7 +44,6 @@ feature -- Status report
|
||||
when j_OBJECT_CLOSE, j_ARRAY_CLOSE, j_STRING then
|
||||
Result := True
|
||||
else
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -58,7 +62,6 @@ feature -- Status report
|
||||
when '%F', '%H', '%N', '%R', '%T', '%B', '/', '"' then
|
||||
Result := True
|
||||
else
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -70,7 +73,6 @@ feature -- Status report
|
||||
when 'b', 'f', 'n', 'r', 't' then
|
||||
Result := True
|
||||
else
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -11,7 +11,8 @@ note
|
||||
revision: "$Revision: 89185 $"
|
||||
file: "$HeadURL: $"
|
||||
|
||||
class SHARED_EJSON
|
||||
class
|
||||
SHARED_EJSON
|
||||
|
||||
feature
|
||||
|
||||
@@ -24,13 +25,10 @@ feature
|
||||
jhtc: JSON_HASH_TABLE_CONVERTER
|
||||
once
|
||||
create Result
|
||||
|
||||
create jalc.make
|
||||
Result.add_converter (jalc)
|
||||
|
||||
create jllc.make
|
||||
Result.add_converter (jllc)
|
||||
|
||||
create jhtc.make
|
||||
Result.add_converter (jhtc)
|
||||
end
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
note
|
||||
description : "test_suite application root class"
|
||||
date : "$Date$"
|
||||
revision : "$Revision$"
|
||||
description: "test_suite application root class"
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
class
|
||||
APPLICATION
|
||||
|
||||
inherit
|
||||
|
||||
ARGUMENTS
|
||||
|
||||
create
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
class
|
||||
AUTHOR
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
class
|
||||
BOOK
|
||||
|
||||
@@ -9,7 +8,7 @@ feature {NONE} -- Initialization
|
||||
|
||||
make (a_title: STRING_32; a_author: AUTHOR; a_isbn: STRING_32)
|
||||
-- Create a book with `a_title' as `title',
|
||||
-- `a_author' as `author', and `a_isbn' as `isbn',
|
||||
-- `a_author' as `author', and `a_isbn' as `isbn'.
|
||||
do
|
||||
set_title (a_title)
|
||||
set_author (a_author)
|
||||
|
||||
@@ -7,7 +7,7 @@ create
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (a_name: STRING_32)
|
||||
-- Create a collection of book with `a_name' as `name'
|
||||
-- Create a book collection with `a_name' as `name'.
|
||||
do
|
||||
set_name (a_name)
|
||||
create book_index.make (10)
|
||||
@@ -24,7 +24,9 @@ feature -- Access
|
||||
-- collection of book.
|
||||
do
|
||||
create {LINKED_LIST [BOOK]} Result.make
|
||||
across book_index as it loop
|
||||
across
|
||||
book_index as it
|
||||
loop
|
||||
Result.append (it.item)
|
||||
end
|
||||
end
|
||||
@@ -54,7 +56,7 @@ feature -- Change
|
||||
local
|
||||
l: detachable LIST [BOOK]
|
||||
do
|
||||
l := book_index.at (a_book.author.name )
|
||||
l := book_index.at (a_book.author.name)
|
||||
if l = Void then
|
||||
create {LINKED_LIST [BOOK]} l.make
|
||||
book_index.put (l, a_book.author.name)
|
||||
@@ -65,7 +67,9 @@ feature -- Change
|
||||
add_books (book_list: like books)
|
||||
-- Append collection with `book_list'.
|
||||
do
|
||||
across book_list as it loop
|
||||
across
|
||||
book_list as it
|
||||
loop
|
||||
add_book (it.item)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -8,6 +8,7 @@ class
|
||||
JSON_AUTHOR_CONVERTER
|
||||
|
||||
inherit
|
||||
|
||||
JSON_CONVERTER
|
||||
|
||||
create
|
||||
|
||||
@@ -8,6 +8,7 @@ class
|
||||
JSON_BOOK_COLLECTION_CONVERTER
|
||||
|
||||
inherit
|
||||
|
||||
JSON_CONVERTER
|
||||
|
||||
create
|
||||
@@ -39,7 +40,6 @@ feature -- Conversion
|
||||
then
|
||||
create Result.make (l_name)
|
||||
create l_books.make
|
||||
|
||||
across
|
||||
l_json_array as it
|
||||
until
|
||||
@@ -52,7 +52,6 @@ feature -- Conversion
|
||||
-- Failed
|
||||
end
|
||||
end
|
||||
|
||||
if Result /= Void then
|
||||
Result.add_books (l_books)
|
||||
end
|
||||
|
||||
@@ -8,6 +8,7 @@ class
|
||||
JSON_BOOK_CONVERTER
|
||||
|
||||
inherit
|
||||
|
||||
JSON_CONVERTER
|
||||
|
||||
create
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
note
|
||||
description: "Linked list and hash table converters test."
|
||||
date: "$Date$"
|
||||
@@ -8,6 +7,7 @@ class
|
||||
TEST_DS
|
||||
|
||||
inherit
|
||||
|
||||
SHARED_EJSON
|
||||
undefine
|
||||
default_create
|
||||
@@ -27,7 +27,6 @@ feature -- Test
|
||||
create l.make
|
||||
l.force ("foo")
|
||||
l.force ("bar")
|
||||
|
||||
if attached json.value (l) as l_value then
|
||||
s := l_value.representation
|
||||
assert ("JSON array converted to LINKED_LIST", attached {LINKED_LIST [detachable ANY]} json.object (l_value, "LINKED_LIST"))
|
||||
@@ -47,18 +46,15 @@ feature -- Test
|
||||
create t.make (2)
|
||||
t.put ("foo", "1")
|
||||
t.put ("bar", "2")
|
||||
|
||||
if attached json.value (t) as l_value then
|
||||
s := l_value.representation
|
||||
if attached {HASH_TABLE [ANY, HASHABLE]} json.object (l_value, "HASH_TABLE") as t2 then
|
||||
|
||||
create l_ucs_key.make_from_string ("1")
|
||||
if attached {STRING_32} t2 [l_ucs_key] as l_ucs_value then
|
||||
assert ("ucs_value.string.is_equal (%"foo%")", l_ucs_value.string.is_equal ("foo"))
|
||||
else
|
||||
assert ("ucs_value /= Void", False)
|
||||
end
|
||||
|
||||
create l_ucs_key.make_from_string ("2")
|
||||
if attached {STRING_32} t2 [l_ucs_key] as l_ucs_value then
|
||||
assert ("ucs_value.string.is_equal (%"bar%")", l_ucs_value.string.is_equal ("bar"))
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
class
|
||||
class
|
||||
TEST_JSON_CORE
|
||||
|
||||
inherit
|
||||
|
||||
SHARED_EJSON
|
||||
undefine
|
||||
default_create
|
||||
@@ -487,7 +488,6 @@ feature -- Test
|
||||
-- Eiffel value -> JSON value -> JSON representation
|
||||
create jn
|
||||
jrep := "null"
|
||||
|
||||
assert ("jn.representation.is_equal (%"%"null%"%")", jn.representation.is_equal (jrep))
|
||||
-- Eiffel value -> JSON value -> JSON representation with factory
|
||||
if attached {JSON_NULL} json.value (Void) as l_json_null then
|
||||
@@ -515,7 +515,6 @@ feature -- Test
|
||||
c := 'a'
|
||||
-- Eiffel value -> JSON value -> JSON representation
|
||||
create js.make_json (c.out)
|
||||
|
||||
assert ("js.representation.is_equal (%"%"a%"%")", js.representation.is_equal ("%"a%""))
|
||||
-- Eiffel value -> JSON value -> JSON representation with factory
|
||||
if attached {JSON_STRING} json.value (c) as l_json_str then
|
||||
@@ -612,7 +611,6 @@ feature -- Test
|
||||
jrep := "%"foo\\bar%""
|
||||
create s.make_from_string ("foo\bar")
|
||||
create js.make_json (s)
|
||||
|
||||
assert ("js.representation.same_string (%"%"foo\\bar%"%")", js.representation.same_string (jrep))
|
||||
|
||||
-- Eiffel value -> JSON value -> JSON representation with factory
|
||||
@@ -631,8 +629,6 @@ feature -- Test
|
||||
else
|
||||
assert ("parser.parse /= Void", False)
|
||||
end
|
||||
|
||||
|
||||
jrep := "%"foo\\bar%""
|
||||
create parser.make_parser (jrep)
|
||||
if attached {JSON_STRING} parser.parse as jstring then
|
||||
@@ -640,14 +636,12 @@ feature -- Test
|
||||
else
|
||||
assert ("parser.parse /= Void", False)
|
||||
end
|
||||
|
||||
create js.make_json_from_string_32 ({STRING_32}"%/20320/%/22909/")
|
||||
create js.make_json_from_string_32 ({STRING_32} "你好")
|
||||
assert ("escaping unicode string32 %"%%/20320/%%/22909/%" %"\u4F60\u597D%"", js.item.same_string ("\u4F60\u597D"))
|
||||
|
||||
jrep := "%"\u4F60\u597D%"" --| Ni hao
|
||||
create parser.make_parser (jrep)
|
||||
if attached {JSON_STRING} parser.parse as jstring then
|
||||
assert ("same unicode string32 %"%%/20320/%%/22909/%"", jstring.unescaped_string_32.same_string ({STRING_32}"%/20320/%/22909/"))
|
||||
assert ("same unicode string32 %"%%/20320/%%/22909/%"", jstring.unescaped_string_32.same_string ({STRING_32} "你好"))
|
||||
else
|
||||
assert ("parser.parse /= Void", False)
|
||||
end
|
||||
@@ -819,7 +813,7 @@ feature -- Test
|
||||
-- Test converting from a JSON value to an Eiffel object based on a
|
||||
-- class for which no JSON converter has been registered.
|
||||
local
|
||||
gv : detachable ANY
|
||||
gv: detachable ANY
|
||||
jo: JSON_OBJECT
|
||||
exception: BOOLEAN
|
||||
do
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
note
|
||||
description: "Parsing and converter of book collection test."
|
||||
date: "$Date$"
|
||||
@@ -8,6 +7,7 @@ class
|
||||
TEST_JSON_CUSTOM_CLASSES
|
||||
|
||||
inherit
|
||||
|
||||
SHARED_EJSON
|
||||
undefine
|
||||
default_create
|
||||
@@ -34,7 +34,6 @@ feature -- Test
|
||||
json.add_converter (jac)
|
||||
jrep := "{%"name%":%"Test collection%",%"books%":[{%"title%":%"eJSON: The Definitive Guide%",%"isbn%":%"123123-413243%",%"author%":{%"name%":%"Foo Bar%"}}]}"
|
||||
create parser.make_parser (jrep)
|
||||
|
||||
if attached {JSON_OBJECT} parser.parse as l_json_object then
|
||||
if attached {BOOK_COLLECTION} json.object (l_json_object, "BOOK_COLLECTION") as l_collection then
|
||||
if attached {JSON_OBJECT} json.value (l_collection) as l_json_object_2 then
|
||||
|
||||
@@ -11,6 +11,7 @@ class
|
||||
TEST_JSON_SUITE
|
||||
|
||||
inherit
|
||||
|
||||
EQA_TEST_SET
|
||||
redefine
|
||||
on_prepare
|
||||
@@ -34,7 +35,7 @@ feature -- Tests Pass
|
||||
if attached json_file_from ("pass1.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("pass1.json",parse_json.is_parsed = True)
|
||||
assert ("pass1.json", parse_json.is_parsed = True)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -46,7 +47,7 @@ feature -- Tests Pass
|
||||
if attached json_file_from ("pass2.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("pass2.json",parse_json.is_parsed = True)
|
||||
assert ("pass2.json", parse_json.is_parsed = True)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -58,7 +59,7 @@ feature -- Tests Pass
|
||||
if attached json_file_from ("pass3.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("pass3.json",parse_json.is_parsed = True)
|
||||
assert ("pass3.json", parse_json.is_parsed = True)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -69,14 +70,10 @@ feature -- Tests Pass
|
||||
s: READABLE_STRING_32
|
||||
do
|
||||
s := {STRING_32} "{ %"nihaoma%": %"你好吗\t?%" }"
|
||||
|
||||
parse_json := new_json_parser (utf.string_32_to_utf_8_string_8 (s))
|
||||
json_value := parse_json.parse_json
|
||||
assert ("utf8.pass1.json", parse_json.is_parsed = True)
|
||||
if
|
||||
attached {JSON_OBJECT} json_value as jo and then
|
||||
attached {JSON_STRING} jo.item ("nihaoma") as js
|
||||
then
|
||||
if attached {JSON_OBJECT} json_value as jo and then attached {JSON_STRING} jo.item ("nihaoma") as js then
|
||||
assert ("utf8.nihaoma", js.unescaped_string_32.same_string ({STRING_32} "你好吗%T?"))
|
||||
else
|
||||
assert ("utf8.nihaoma", False)
|
||||
@@ -84,6 +81,7 @@ feature -- Tests Pass
|
||||
end
|
||||
|
||||
feature -- Tests Failures
|
||||
|
||||
test_json_fail1
|
||||
--
|
||||
local
|
||||
@@ -92,7 +90,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail1.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail1.json",parse_json.is_parsed = False)
|
||||
assert ("fail1.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -104,7 +102,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail2.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail2.json",parse_json.is_parsed = False)
|
||||
assert ("fail2.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -116,7 +114,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail3.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail3.json",parse_json.is_parsed = False)
|
||||
assert ("fail3.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -128,7 +126,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail4.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail4.json",parse_json.is_parsed = False)
|
||||
assert ("fail4.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -140,11 +138,10 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail5.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail5.json",parse_json.is_parsed = False)
|
||||
assert ("fail5.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
test_json_fail6
|
||||
--
|
||||
local
|
||||
@@ -153,7 +150,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail6.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail6.json",parse_json.is_parsed = False )
|
||||
assert ("fail6.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -165,7 +162,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail7.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail7.json",parse_json.is_parsed = False)
|
||||
assert ("fail7.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -177,11 +174,10 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail8.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail8.json",parse_json.is_parsed = False )
|
||||
assert ("fail8.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
test_json_fail9
|
||||
--
|
||||
local
|
||||
@@ -190,11 +186,10 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail9.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail9.json",parse_json.is_parsed = False)
|
||||
assert ("fail9.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
test_json_fail10
|
||||
--
|
||||
local
|
||||
@@ -203,7 +198,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail10.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail10.json",parse_json.is_parsed = False)
|
||||
assert ("fail10.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -215,7 +210,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail11.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail11.json",parse_json.is_parsed = False)
|
||||
assert ("fail11.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -227,7 +222,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail12.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail12.json",parse_json.is_parsed = False)
|
||||
assert ("fail12.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -239,7 +234,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail13.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail13.json",parse_json.is_parsed = False)
|
||||
assert ("fail13.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -251,7 +246,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail14.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail14.json",parse_json.is_parsed = False)
|
||||
assert ("fail14.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -263,7 +258,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail15.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail15.json",parse_json.is_parsed = False)
|
||||
assert ("fail15.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -275,7 +270,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail16.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail16.json",parse_json.is_parsed = False)
|
||||
assert ("fail16.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -287,7 +282,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail17.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail17.json",parse_json.is_parsed = False)
|
||||
assert ("fail17.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -299,7 +294,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail18.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail18.json",parse_json.is_parsed = True)
|
||||
assert ("fail18.json", parse_json.is_parsed = True)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -311,7 +306,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail19.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail19.json",parse_json.is_parsed = False)
|
||||
assert ("fail19.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -323,7 +318,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail20.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail20.json",parse_json.is_parsed = False)
|
||||
assert ("fail20.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -335,11 +330,10 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail21.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail21.json",parse_json.is_parsed = False)
|
||||
assert ("fail21.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
test_json_fail22
|
||||
--
|
||||
local
|
||||
@@ -348,7 +342,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail22.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail22.json",parse_json.is_parsed = False)
|
||||
assert ("fail22.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -360,7 +354,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail23.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail23.json",parse_json.is_parsed = False)
|
||||
assert ("fail23.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -372,7 +366,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail24.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail24.json",parse_json.is_parsed = False)
|
||||
assert ("fail24.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -384,11 +378,10 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail25.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail25.json",parse_json.is_parsed = False)
|
||||
assert ("fail25.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
test_json_fail26
|
||||
--
|
||||
local
|
||||
@@ -397,11 +390,10 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail26.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail26.json",parse_json.is_parsed = False)
|
||||
assert ("fail26.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
test_json_fail27
|
||||
--
|
||||
local
|
||||
@@ -410,11 +402,10 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail27.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail27.json",parse_json.is_parsed = False)
|
||||
assert ("fail27.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
test_json_fail28
|
||||
--
|
||||
local
|
||||
@@ -423,11 +414,10 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail28.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail28.json",parse_json.is_parsed = False)
|
||||
assert ("fail28.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
test_json_fail29
|
||||
--
|
||||
local
|
||||
@@ -436,11 +426,10 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail29.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail29.json",parse_json.is_parsed = False )
|
||||
assert ("fail29.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
test_json_fail30
|
||||
--
|
||||
local
|
||||
@@ -449,7 +438,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail30.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail30.json",parse_json.is_parsed = False)
|
||||
assert ("fail30.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -461,7 +450,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail31.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail31.json",parse_json.is_parsed = False)
|
||||
assert ("fail31.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -473,7 +462,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail32.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail32.json",parse_json.is_parsed = False)
|
||||
assert ("fail32.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -485,7 +474,7 @@ feature -- Tests Failures
|
||||
if attached json_file_from ("fail33.json") as json_file then
|
||||
parse_json := new_json_parser (json_file)
|
||||
json_value := parse_json.parse_json
|
||||
assert ("fail33.json",parse_json.is_parsed = False)
|
||||
assert ("fail33.json", parse_json.is_parsed = False)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -504,7 +493,6 @@ feature -- JSON_FROM_FILE
|
||||
do
|
||||
test_dir := (create {EXECUTION_ENVIRONMENT}).current_working_directory
|
||||
test_dir.append_character ((create {OPERATING_ENVIRONMENT}).directory_separator)
|
||||
|
||||
l_path := test_dir + fn
|
||||
create f.make_with_name (l_path)
|
||||
if f.exists then
|
||||
@@ -536,9 +524,7 @@ feature -- JSON_FROM_FILE
|
||||
create Result.make_parser (a_string)
|
||||
end
|
||||
|
||||
|
||||
invariant
|
||||
file_reader /= Void
|
||||
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user