From 125f6f3dce56b656ab34f9ca879c17debf182144 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Sat, 16 May 2015 21:59:40 -0400 Subject: [PATCH] tests: add a serialization test with a `Set` and a `Map` MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- tests/sav/test_deserialization_serial.res | 9 +++++++++ tests/test_deserialization.nit | 30 +++++++++++++++++++++++++++-- tests/test_deserialization_serial.nit | 28 +++++++++++++++++---------- 3 files changed, 55 insertions(+), 12 deletions(-) diff --git a/tests/sav/test_deserialization_serial.res b/tests/sav/test_deserialization_serial.res index 189c39d..58293c5 100644 --- a/tests/sav/test_deserialization_serial.res +++ b/tests/sav/test_deserialization_serial.res @@ -63,3 +63,12 @@ # Back in Nit: +# Nit: + + +# Json: +{"__kind": "obj", "__id": 0, "__class": "G", "hs": {"__kind": "obj", "__id": 1, "__class": "HashSet[Int]", "__length": 2, "__items": [-1, 0]}, "s": {"__kind": "obj", "__id": 2, "__class": "ArraySet[String]", "__length": 2, "__items": ["one", "two"]}, "hm": {"__kind": "obj", "__id": 3, "__class": "HashMap[String, Int]", "__length": 2, "__keys": ["one", "two"], "__values": [1, 2]}, "am": {"__kind": "obj", "__id": 4, "__class": "ArrayMap[String, String]", "__length": 2, "__keys": ["three", "four"], "__values": ["3", "4"]}} + +# Back in Nit: + + diff --git a/tests/test_deserialization.nit b/tests/test_deserialization.nit index deb07b7..f26bcbf 100644 --- a/tests/test_deserialization.nit +++ b/tests/test_deserialization.nit @@ -98,7 +98,7 @@ class E redef fun to_s do return "" end -# Class with generics +# Parameterized class class F[N: Numeric] auto_serializable @@ -108,6 +108,31 @@ class F[N: Numeric] redef fun to_s do return "" end +# Other collections +class G + auto_serializable + + var hs = new HashSet[Int] + var s: Set[String] = new ArraySet[String] + var hm = new HashMap[String, Int] + var am = new ArrayMap[String, String] + + init + do + hs.add -1 + hs.add 0 + s.add "one" + s.add "two" + hm["one"] = 1 + hm["two"] = 2 + am["three"] = 3.to_s + am["four"] = 4.to_s + end + + redef fun to_s do return "" +end + var a = new A(true, 'a', 0.1234, 1234, "asdf", null) var b = new B(false, 'b', 123.123, 2345, "hjkl", 12, 1111, "qwer") var c = new C(a, b) @@ -116,9 +141,10 @@ d.d = d var e = new E var fi = new F[Int](2222) var ff = new F[Float](33.33) +var g = new G # Default works only with Nit serial -var tests = new Array[Serializable].with_items(a, b, c, d, e, fi, ff) +var tests = [a, b, c, d, e, fi, ff, g: Serializable] # Alt1 should work without nitserial #alt1# tests = new Array[Serializable].with_items(a, b, c, d) diff --git a/tests/test_deserialization_serial.nit b/tests/test_deserialization_serial.nit index 1279538..7d1d443 100644 --- a/tests/test_deserialization_serial.nit +++ b/tests/test_deserialization_serial.nit @@ -22,16 +22,24 @@ import serialization redef class Deserializer redef fun deserialize_class(name) do - if name == "Array[Object]" then return new Array[Object].from_deserializer(self) - if name == "Array[nullable Serializable]" then return new Array[nullable Serializable].from_deserializer(self) - if name == "F[Int]" then return new F[Int].from_deserializer(self) - if name == "F[Float]" then return new F[Float].from_deserializer(self) - if name == "Array[Serializable]" then return new Array[Serializable].from_deserializer(self) - if name == "Array[String]" then return new Array[String].from_deserializer(self) - if name == "Array[HashMap[String, nullable Object]]" then return new Array[HashMap[String, nullable Object]].from_deserializer(self) - if name == "Array[Match]" then return new Array[Match].from_deserializer(self) - if name == "Array[nullable Object]" then return new Array[nullable Object].from_deserializer(self) - if name == "Array[FlatBuffer]" then return new Array[FlatBuffer].from_deserializer(self) + # Module: test_deserialization + if name == "Array[Object]" then return new Array[Object].from_deserializer(self) + if name == "Array[nullable Serializable]" then return new Array[nullable Serializable].from_deserializer(self) + if name == "F[Int]" then return new F[Int].from_deserializer(self) + if name == "F[Float]" then return new F[Float].from_deserializer(self) + if name == "HashSet[Int]" then return new HashSet[Int].from_deserializer(self) + if name == "ArraySet[String]" then return new ArraySet[String].from_deserializer(self) + if name == "HashMap[String, Int]" then return new HashMap[String, Int].from_deserializer(self) + if name == "ArrayMap[String, String]" then return new ArrayMap[String, String].from_deserializer(self) + if name == "Array[Serializable]" then return new Array[Serializable].from_deserializer(self) + if name == "Array[String]" then return new Array[String].from_deserializer(self) + if name == "HashMap[Serializable, Int]" then return new HashMap[Serializable, Int].from_deserializer(self) + if name == "Array[JsonObject]" then return new Array[JsonObject].from_deserializer(self) + if name == "HashMap[Int, Object]" then return new HashMap[Int, Object].from_deserializer(self) + if name == "Array[Node]" then return new Array[Node].from_deserializer(self) + if name == "Array[LRState]" then return new Array[LRState].from_deserializer(self) + if name == "Array[Couple[String, String]]" then return new Array[Couple[String, String]].from_deserializer(self) + if name == "Array[nullable Jsonable]" then return new Array[nullable Jsonable].from_deserializer(self) return super end end -- 1.7.9.5