X-Git-Url: http://nitlanguage.org diff --git a/tests/test_deserialization.nit b/tests/test_deserialization.nit index d443795..deb8997 100644 --- a/tests/test_deserialization.nit +++ b/tests/test_deserialization.nit @@ -15,19 +15,18 @@ # limitations under the License. import serialization -import json_serialization # Simple class class A auto_serializable - super Serializable - var b: Bool + var b = false var c: Char var f: Float - var i: Int - var s: String + var i = 123 + var s = "asdf" var n: nullable Int + var password = "p4ssw0rd" is lazy, noserialize init(b: Bool, c: Char, f: Float, i: Int, s: String, n: nullable Int) do @@ -38,7 +37,7 @@ class A self.s = s end - redef fun to_s do return "" + redef fun to_s do return "" end # Sub-class of A @@ -63,10 +62,9 @@ end # Composed of an A and a B class C auto_serializable - super Serializable var a: A - var b: B + var b = new B(false, 'b', 123.123, 2345, "hjkl", 12, 1111, "qwer") var aa: A init(a: A, b: B) @@ -89,21 +87,67 @@ class D 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) -var d = new D(false, 'b', 123.123, 2345, "new line ->\n<-", null, 1111, "\t\f\"\r\\/") -d.d = d +# Class with generics +class E + auto_serializable + + var a = new Array[Object].with_items("hello", 1234, 123.4) + var b = new Array[nullable Serializable].with_items("hella", 2345, 234.5) + + redef fun to_s do return "" +end + +# Parameterized class +class F[N: Numeric] + auto_serializable + + var n: N + + 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] -for o in new Array[nullable Serializable].with_items(a, b, c, d) do - var stream = new StringOStream - var serializer = new JsonSerializer(stream) - serializer.serialize(o) + 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 - var deserializer = new JsonDeserializer(stream.to_s) - var deserialized = deserializer.deserialize + redef fun to_s do return "" +end - print "# Nit:\n{o}\n" - print "# Json:\n{stream}\n" - print "# Back in Nit:\n{deserialized}\n" +class TestEntities + 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) + var d = new D(false, 'b', 123.123, 2345, "new line ->\n<-", null, 1111, "\t\f\"\r\\/") + init do d.d = d + var e = new E + var fi = new F[Int](2222) + var ff = new F[Float](33.33) + var g = new G + + # should work without nitserial + var without_generics: Array[Serializable] = [a, b, c, d: Serializable] + + # Default works only with Nit serial + var with_generics: Array[Serializable] = [a, b, c, d, e, fi, ff, g: Serializable] end + +# We instanciate it here so that `nitserial` detects generic types as being alive +var entities = new TestEntities