All checks were successful
Gajumaru Serialization Tests / tests (push) Successful in -4m21s
Removed the oracle type references and updated the dependency list to point to git.qpq.swiss. Reviewed-on: #43 Co-authored-by: Craig Everett <zxq9@zxq9.com> Co-committed-by: Craig Everett <zxq9@zxq9.com>
89 lines
3.6 KiB
Erlang
89 lines
3.6 KiB
Erlang
%%% -*- erlang-indent-level:4; indent-tabs-mode: nil -*-
|
|
%%%-------------------------------------------------------------------
|
|
%%% @copyright (C) 2025, QPQ AG
|
|
%%% @copyright (C) 2018, Aeternity Anstalt
|
|
%%% @doc
|
|
%%% EUnit tests for gmser_chain_objects
|
|
%%% @end
|
|
%%%-------------------------------------------------------------------
|
|
-module(gmser_chain_objects_tests).
|
|
|
|
-include_lib("eunit/include/eunit.hrl").
|
|
|
|
-define(DEFAULT_TAG, account).
|
|
-define(DEFAULT_VERSION, 1).
|
|
|
|
basic_test() ->
|
|
Template = [{foo, int}, {bar, binary}],
|
|
Values = [{foo, 1}, {bar, <<2>>}],
|
|
?assertEqual(Values, deserialize(Template, serialize(Template, Values))).
|
|
|
|
basic_fail_test() ->
|
|
Template = [{foo, int}, {bar, binary}],
|
|
Values = [{foo, 1}, {bar, 1}],
|
|
?assertError({illegal_field, _, _, _, _, _}, serialize(Template, Values)).
|
|
|
|
list_test() ->
|
|
Template = [{foo, [int]}, {bar, [binary]}, {baz, [int]}],
|
|
Values = [{foo, [1]}, {bar, [<<2>>, <<2>>]}, {baz, []}],
|
|
?assertEqual(Values, deserialize(Template, serialize(Template, Values))).
|
|
|
|
list_fail_test() ->
|
|
Template = [{foo, [int]}, {bar, [binary]}],
|
|
Values = [{foo, [1]}, {bar, [2, <<2>>]}],
|
|
?assertError({illegal_field, _, _, _, _, _}, serialize(Template, Values)).
|
|
|
|
deep_list_test() ->
|
|
Template = [{foo, [[int]]}, {bar, [[[[[binary]]]]]}],
|
|
Values = [{foo, [[1]]}, {bar, [[[[[<<2>>]]]]]}],
|
|
?assertEqual(Values, deserialize(Template, serialize(Template, Values))).
|
|
|
|
deep_list_fail_test() ->
|
|
Template = [{foo, [[int]]}, {bar, [[[[[binary]]]]]}],
|
|
Values = [{foo, [[1]]}, {bar, [[[[[2]]]]]}],
|
|
?assertError({illegal_field, _, _, _, _, _}, serialize(Template, Values)).
|
|
|
|
array_test() ->
|
|
Template = [{foo, {int, binary}}, {bar, [{int, int}]}, {baz, {int}}],
|
|
Values = [{foo, {1, <<"foo">>}}, {bar, [{1, 2}, {3, 4}, {5, 6}]}, {baz, {1}}],
|
|
?assertEqual(Values, deserialize(Template, serialize(Template, Values))).
|
|
|
|
array_fail_test() ->
|
|
Template = [{foo, {int, binary}}, {bar, [{int, int}]}, {baz, {int}}],
|
|
Values = [{foo, {1, <<"foo">>}}, {bar, [{1, 2}, {3, 4}, {5, 6}]}, {baz, {1, 1}}],
|
|
?assertError({illegal_field, _, _, _, _, _}, serialize(Template, Values)).
|
|
|
|
deep_array_test() ->
|
|
Template = [{foo, {{int, binary}}}, {bar, [{{int}, int}]}, {baz, {{int}}}],
|
|
Values = [{foo, {{1, <<"foo">>}}}, {bar, [{{1}, 2}, {{3}, 4}, {{5}, 6}]}, {baz, {{1}}}],
|
|
?assertEqual(Values, deserialize(Template, serialize(Template, Values))).
|
|
|
|
deep_array_fail_test() ->
|
|
Template = [{foo, {{int, binary}}}, {bar, [{{int}, int}]}, {baz, {{binary}}}],
|
|
Values = [{foo, {{1, <<"foo">>}}}, {bar, [{{1}, 2}, {{3}, 4}, {{5}, 6}]}, {baz, {{1}}}],
|
|
?assertError({illegal_field, _, _, _, _, _}, serialize(Template, Values)).
|
|
|
|
tag_fail_test() ->
|
|
Template = [{foo, int}, {bar, binary}],
|
|
Values = [{foo, 1}, {bar, <<2>>}],
|
|
?assertError({illegal_serialization, _, _, _, _, _, _},
|
|
deserialize(Template, serialize(Template, Values), signed_tx, ?DEFAULT_VERSION)).
|
|
|
|
vsn_fail_test() ->
|
|
Template = [{foo, int}, {bar, binary}],
|
|
Values = [{foo, 1}, {bar, <<2>>}],
|
|
?assertError({illegal_serialization, _, _, _, _, _, _},
|
|
deserialize(Template, serialize(Template, Values), ?DEFAULT_TAG, 2)).
|
|
|
|
deserialize(Template, Bin) ->
|
|
deserialize(Template, Bin, ?DEFAULT_TAG, ?DEFAULT_VERSION).
|
|
|
|
deserialize(Template, Bin, Tag, Vsn) ->
|
|
gmser_chain_objects:deserialize(Tag, Vsn, Template, Bin).
|
|
|
|
serialize(Template, Bin) ->
|
|
serialize(Template, Bin, ?DEFAULT_TAG, ?DEFAULT_VERSION).
|
|
|
|
serialize(Template, Bin, Tag, Vsn) ->
|
|
gmser_chain_objects:serialize(Tag, Vsn, Template, Bin).
|