From e2c0646fbad9f851a0abc9c74eb7b07b00983a6f Mon Sep 17 00:00:00 2001 From: v0idpwn Date: Mon, 30 May 2022 13:08:46 +0300 Subject: [PATCH] antidote-crdt: add tests for multi ops on same key (map types) --- apps/antidote_crdt/src/antidote_crdt_map_go.erl | 10 +++++++++- apps/antidote_crdt/src/antidote_crdt_map_rr.erl | 11 +++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/apps/antidote_crdt/src/antidote_crdt_map_go.erl b/apps/antidote_crdt/src/antidote_crdt_map_go.erl index bec421df..a02a02de 100644 --- a/apps/antidote_crdt/src/antidote_crdt_map_go.erl +++ b/apps/antidote_crdt/src/antidote_crdt_map_go.erl @@ -176,6 +176,14 @@ update2_test() -> Map1 = new(), {ok, Effect1} = downstream({update, [{{a, antidote_crdt_set_aw}, {add, a}}]}, Map1), {ok, Map2} = update(Effect1, Map1), - ?assertEqual([{{a, antidote_crdt_set_aw}, [a]}], value(Map2)). + ?assertEqual([{{a, antidote_crdt_set_aw}, [a]}], value(Map2)), + Op = {update, [ + {{a, antidote_crdt_set_aw}, {remove, a}}, + {{a, antidote_crdt_set_aw}, {add, b}} + ]}, + ?assert(is_operation(Op)), + {ok, Effect2} = downstream(Op, Map2), + {ok, Map3} = update(Effect2, Map2), + ?assertEqual([{{a, antidote_crdt_set_aw}, [b]}], value(Map3)). -endif. diff --git a/apps/antidote_crdt/src/antidote_crdt_map_rr.erl b/apps/antidote_crdt/src/antidote_crdt_map_rr.erl index c27622bb..344cddef 100644 --- a/apps/antidote_crdt/src/antidote_crdt_map_rr.erl +++ b/apps/antidote_crdt/src/antidote_crdt_map_rr.erl @@ -384,6 +384,17 @@ upd(Update, State) -> {ok, Res} = update(Downstream, State), Res. +multiple_ops_on_same_key_test() -> + M1 = new(), + M2 = upd({update, {{a, antidote_crdt_set_rw}, {add, <<"a">>}}}, M1), + Op = {update, [ + {{a, antidote_crdt_set_rw}, {remove, <<"a">>}}, + {{a, antidote_crdt_set_rw}, {add, <<"b">>}} + ]}, + ?assert(is_operation(Op)), + M3 = upd(Op, M2), + ?assertEqual([{{a, antidote_crdt_set_rw}, [<<"b">>]}], value(M3)). + remove_test() -> M1 = new(), ?assertEqual([], value(M1)),