spec/util_serialization_spec.lua
author Kim Alvefur <zash@zash.se>
Thu, 11 Oct 2018 22:48:08 +0200
changeset 9484 f34c635c5f42
parent 9483 006a71a83e6a
child 9485 8791bfa3984a
permissions -rw-r--r--
util.serialization: Test that it rejects tables wit cycles
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9345
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     1
local serialization = require "util.serialization";
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     2
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     3
describe("util.serialization", function ()
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     4
	describe("serialize", function ()
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     5
		it("makes a string", function ()
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     6
			assert.is_string(serialization.serialize({}));
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     7
			assert.is_string(serialization.serialize(nil));
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     8
			assert.is_string(serialization.serialize(1));
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     9
			assert.is_string(serialization.serialize(true));
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    10
		end);
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    11
9483
006a71a83e6a util.serialization: Make errors fatal by default (like the previous implementation)
Kim Alvefur <zash@zash.se>
parents: 9346
diff changeset
    12
		it("rejects function by default", function ()
006a71a83e6a util.serialization: Make errors fatal by default (like the previous implementation)
Kim Alvefur <zash@zash.se>
parents: 9346
diff changeset
    13
			assert.has_error(function ()
006a71a83e6a util.serialization: Make errors fatal by default (like the previous implementation)
Kim Alvefur <zash@zash.se>
parents: 9346
diff changeset
    14
				serialization.serialize(function () end)
006a71a83e6a util.serialization: Make errors fatal by default (like the previous implementation)
Kim Alvefur <zash@zash.se>
parents: 9346
diff changeset
    15
			end);
006a71a83e6a util.serialization: Make errors fatal by default (like the previous implementation)
Kim Alvefur <zash@zash.se>
parents: 9346
diff changeset
    16
		end);
006a71a83e6a util.serialization: Make errors fatal by default (like the previous implementation)
Kim Alvefur <zash@zash.se>
parents: 9346
diff changeset
    17
006a71a83e6a util.serialization: Make errors fatal by default (like the previous implementation)
Kim Alvefur <zash@zash.se>
parents: 9346
diff changeset
    18
		it("makes a string in debug mode", function ()
006a71a83e6a util.serialization: Make errors fatal by default (like the previous implementation)
Kim Alvefur <zash@zash.se>
parents: 9346
diff changeset
    19
			assert.is_string(serialization.serialize(function () end, "debug"));
006a71a83e6a util.serialization: Make errors fatal by default (like the previous implementation)
Kim Alvefur <zash@zash.se>
parents: 9346
diff changeset
    20
		end);
006a71a83e6a util.serialization: Make errors fatal by default (like the previous implementation)
Kim Alvefur <zash@zash.se>
parents: 9346
diff changeset
    21
9484
f34c635c5f42 util.serialization: Test that it rejects tables wit cycles
Kim Alvefur <zash@zash.se>
parents: 9483
diff changeset
    22
		it("rejects cycles", function ()
f34c635c5f42 util.serialization: Test that it rejects tables wit cycles
Kim Alvefur <zash@zash.se>
parents: 9483
diff changeset
    23
			assert.has_error(function ()
f34c635c5f42 util.serialization: Test that it rejects tables wit cycles
Kim Alvefur <zash@zash.se>
parents: 9483
diff changeset
    24
				local t = {}
f34c635c5f42 util.serialization: Test that it rejects tables wit cycles
Kim Alvefur <zash@zash.se>
parents: 9483
diff changeset
    25
				t[t] = { t };
f34c635c5f42 util.serialization: Test that it rejects tables wit cycles
Kim Alvefur <zash@zash.se>
parents: 9483
diff changeset
    26
				serialization.serialize(t)
f34c635c5f42 util.serialization: Test that it rejects tables wit cycles
Kim Alvefur <zash@zash.se>
parents: 9483
diff changeset
    27
			end);
f34c635c5f42 util.serialization: Test that it rejects tables wit cycles
Kim Alvefur <zash@zash.se>
parents: 9483
diff changeset
    28
		end);
9483
006a71a83e6a util.serialization: Make errors fatal by default (like the previous implementation)
Kim Alvefur <zash@zash.se>
parents: 9346
diff changeset
    29
9345
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    30
		it("roundtrips", function ()
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    31
			local function test(data)
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    32
				local serialized = serialization.serialize(data);
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    33
				assert.is_string(serialized);
9346
e767da06399d util.serialization: Use deserialize instead of envload directly
Kim Alvefur <zash@zash.se>
parents: 9345
diff changeset
    34
				local deserialized, err = serialization.deserialize(serialized);
e767da06399d util.serialization: Use deserialize instead of envload directly
Kim Alvefur <zash@zash.se>
parents: 9345
diff changeset
    35
				assert.same(data, deserialized, err);
9345
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    36
			end
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    37
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    38
			test({});
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    39
			test({hello="world"});
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    40
			test("foobar")
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    41
			test("\0\1\2\3");
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    42
			test("nödåtgärd");
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    43
			test({1,2,3,4});
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    44
			test({foo={[100]={{"bar"},{baz=1}}}});
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    45
		end);
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    46
	end);
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    47
end);
83e4596c2824 util.serialization: Add brief initial tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    48