From 181b915637caffb2a046ac70bcc36b286895dd1b 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 | 11 ++++++++++- apps/antidote_crdt/src/antidote_crdt_map_rr.erl | 10 ++++++++++ 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..dc0070a5 100644 --- a/apps/antidote_crdt/src/antidote_crdt_map_go.erl +++ b/apps/antidote_crdt/src/antidote_crdt_map_go.erl @@ -176,6 +176,15 @@ 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)). + {ok, Effect2} = downstream( + {update, [ + {{a, antidote_crdt_set_aw}, {remove, a}}, + {{a, antidote_crdt_set_aw}, {add, b}} + ]}, + Map2 + ), + {ok, Map3} = update(Effect2, Map2), + ?assertEqual([{{a, antidote_crdt_set_aw}, [a]}], value(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..722acdb8 100644 --- a/apps/antidote_crdt/src/antidote_crdt_map_rr.erl +++ b/apps/antidote_crdt/src/antidote_crdt_map_rr.erl @@ -384,6 +384,16 @@ 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), + M3 = upd( + {update, [ + {{a, antidote_crdt_set_rw}, {remove, <<"a">>}}, + {{a, antidote_crdt_set_rw}, {add, <<"b">>}} + ]}, M2), + ?assertEqual([{{a, antidote_crdt_set_rw}, [<<"b">>]}], value(M3)). + remove_test() -> M1 = new(), ?assertEqual([], value(M1)),