From 2c60d11b2013f5cc57d9abf6fef4d01788f148ab Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Sat, 1 Feb 2014 13:52:16 -0500 Subject: [PATCH] tests: adds test for the serialization phase and json service MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- tests/sav/test_serialization.res | 25 ++++++++ tests/sav/test_serialization_redef.res | 25 ++++++++ tests/sav/test_serialization_redef_alt0.res | 25 ++++++++ tests/sav/test_serialization_redef_alt1.res | 25 ++++++++ tests/sav/test_serialization_redef_alt2.res | 25 ++++++++ tests/test_serialization.nit | 89 +++++++++++++++++++++++++++ tests/test_serialization_redef.nit | 19 ++++++ 7 files changed, 233 insertions(+) create mode 100644 tests/sav/test_serialization.res create mode 100644 tests/sav/test_serialization_redef.res create mode 100644 tests/sav/test_serialization_redef_alt0.res create mode 100644 tests/sav/test_serialization_redef_alt1.res create mode 100644 tests/sav/test_serialization_redef_alt2.res create mode 100644 tests/test_serialization.nit create mode 100644 tests/test_serialization_redef.nit diff --git a/tests/sav/test_serialization.res b/tests/sav/test_serialization.res new file mode 100644 index 0000000..385bf06 --- /dev/null +++ b/tests/sav/test_serialization.res @@ -0,0 +1,25 @@ +# Nit: + + +# Json: +{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null} + +# Nit: + 1111 qwer> + +# Json: +{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "ii": 1111, "ss": "qwer"} + +# Nit: + 1111 qwer>> + +# Json: +{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "ii": 1111, "ss": "qwer"}, "aa": {"__kind": "ref", "__id": 1}} + +# Nit: + +<- false> 1111 f" \/> true> + +# Json: +{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "ii": 1111, "ss": "\tf\"\r\\\/", "d": {"__kind": "ref", "__id": 0}} + diff --git a/tests/sav/test_serialization_redef.res b/tests/sav/test_serialization_redef.res new file mode 100644 index 0000000..385bf06 --- /dev/null +++ b/tests/sav/test_serialization_redef.res @@ -0,0 +1,25 @@ +# Nit: + + +# Json: +{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null} + +# Nit: + 1111 qwer> + +# Json: +{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "ii": 1111, "ss": "qwer"} + +# Nit: + 1111 qwer>> + +# Json: +{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "ii": 1111, "ss": "qwer"}, "aa": {"__kind": "ref", "__id": 1}} + +# Nit: + +<- false> 1111 f" \/> true> + +# Json: +{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "ii": 1111, "ss": "\tf\"\r\\\/", "d": {"__kind": "ref", "__id": 0}} + diff --git a/tests/sav/test_serialization_redef_alt0.res b/tests/sav/test_serialization_redef_alt0.res new file mode 100644 index 0000000..bce0ed3 --- /dev/null +++ b/tests/sav/test_serialization_redef_alt0.res @@ -0,0 +1,25 @@ +# Nit: + + +# Json: +{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "iii": 6789, "sss": "redef"} + +# Nit: + 1111 qwer> + +# Json: +{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "iii": 6789, "sss": "redef", "ii": 1111, "ss": "qwer"} + +# Nit: + 1111 qwer>> + +# Json: +{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "iii": 6789, "sss": "redef"}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "iii": 6789, "sss": "redef", "ii": 1111, "ss": "qwer"}, "aa": {"__kind": "ref", "__id": 1}} + +# Nit: + +<- false> 1111 f" \/> true> + +# Json: +{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "iii": 6789, "sss": "redef", "ii": 1111, "ss": "\tf\"\r\\\/", "d": {"__kind": "ref", "__id": 0}} + diff --git a/tests/sav/test_serialization_redef_alt1.res b/tests/sav/test_serialization_redef_alt1.res new file mode 100644 index 0000000..88e1d45 --- /dev/null +++ b/tests/sav/test_serialization_redef_alt1.res @@ -0,0 +1,25 @@ +# Nit: + + +# Json: +{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null} + +# Nit: + 1111 qwer> + +# Json: +{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "ii": 1111, "ss": "qwer", "ffff": 6.789, "bbbb": false} + +# Nit: + 1111 qwer>> + +# Json: +{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "ii": 1111, "ss": "qwer", "ffff": 6.789, "bbbb": false}, "aa": {"__kind": "ref", "__id": 1}} + +# Nit: + +<- false> 1111 f" \/> true> + +# Json: +{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "ii": 1111, "ss": "\tf\"\r\\\/", "ffff": 6.789, "bbbb": false, "d": {"__kind": "ref", "__id": 0}} + diff --git a/tests/sav/test_serialization_redef_alt2.res b/tests/sav/test_serialization_redef_alt2.res new file mode 100644 index 0000000..ae013db --- /dev/null +++ b/tests/sav/test_serialization_redef_alt2.res @@ -0,0 +1,25 @@ +# Nit: + + +# Json: +{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "iii": 6789, "sss": "redef"} + +# Nit: + 1111 qwer> + +# Json: +{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "iii": 6789, "sss": "redef", "ii": 1111, "ss": "qwer", "ffff": 6.789, "bbbb": false} + +# Nit: + 1111 qwer>> + +# Json: +{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "iii": 6789, "sss": "redef"}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "iii": 6789, "sss": "redef", "ii": 1111, "ss": "qwer", "ffff": 6.789, "bbbb": false}, "aa": {"__kind": "ref", "__id": 1}} + +# Nit: + +<- false> 1111 f" \/> true> + +# Json: +{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "iii": 6789, "sss": "redef", "ii": 1111, "ss": "\tf\"\r\\\/", "ffff": 6.789, "bbbb": false, "d": {"__kind": "ref", "__id": 0}} + diff --git a/tests/test_serialization.nit b/tests/test_serialization.nit new file mode 100644 index 0000000..e9c8bdd --- /dev/null +++ b/tests/test_serialization.nit @@ -0,0 +1,89 @@ +import serialization +import json_serialization + +# Simple class +class A + auto_serializable + super Serializable + + var b: Bool + var c: Char + var f: Float + var i: Int + var s: String + var n: nullable Int + + init(b: Bool, c: Char, f: Float, i: Int, s: String, n: nullable Int) + do + self.b = b + self.c = c + self.f = f + self.i = i + self.s = s + end + + redef fun to_s do return "" +end + +# Sub-class of A +class B + auto_serializable + super A + + var ii: Int + var ss: String + + init(b: Bool, c: Char, f: Float, i: Int, s: String, n: nullable Int, ii: Int, ss: String) + do + super(b, c, f, i, s, n) + + self.ii = ii + self.ss = ss + end + + redef fun to_s do return "" +end + +# Composed of an A and a B +class C + auto_serializable + super Serializable + + var a: A + var b: B + var aa: A + + init(a: A, b: B) + do + self.a = a + self.b = b + self.aa = a + end + + redef fun to_s do return "" +end + +# Class with cyclic reference +class D + auto_serializable + super B + + var d: nullable D = null + + 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 + +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) + + print "# Nit:\n{o}\n" + print "# Json:\n{stream}\n" +end diff --git a/tests/test_serialization_redef.nit b/tests/test_serialization_redef.nit new file mode 100644 index 0000000..d159cfd --- /dev/null +++ b/tests/test_serialization_redef.nit @@ -0,0 +1,19 @@ +import test_serialization + +redef class A +#alt0# auto_serializable +#alt2# auto_serializable + + var iii = 6789 + var sss = "redef" +end + +redef class B +#alt1# auto_serializable +#alt2# auto_serializable + + var ffff = 6.789 + var bbbb = false +end + +super -- 1.7.9.5