diff options
| -rw-r--r-- | src/rabbit_misc.erl | 9 | ||||
| -rw-r--r-- | test/src/rabbit_tests.erl | 7 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl index 4f65cbfd7a..a781f18895 100644 --- a/src/rabbit_misc.erl +++ b/src/rabbit_misc.erl @@ -54,7 +54,7 @@ -export([const/1]). -export([ntoa/1, ntoab/1]). -export([is_process_alive/1]). --export([pget/2, pget/3, pget_or_die/2, pset/3]). +-export([pget/2, pget/3, pget_or_die/2, pmerge/3, pset/3]). -export([format_message_queue/2]). -export([append_rpc_all_nodes/4]). -export([os_cmd/1]). @@ -227,6 +227,7 @@ -spec(pget/2 :: (term(), [term()]) -> term()). -spec(pget/3 :: (term(), [term()], term()) -> term()). -spec(pget_or_die/2 :: (term(), [term()]) -> term() | no_return()). +-spec(pmerge/3 :: (term(), term(), [term()]) -> term()). -spec(pset/3 :: (term(), term(), [term()]) -> term()). -spec(format_message_queue/2 :: (any(), priority_queue:q()) -> term()). -spec(append_rpc_all_nodes/4 :: ([node()], atom(), atom(), [any()]) -> [any()]). @@ -882,6 +883,12 @@ pget_or_die(K, P) -> V -> V end. +pmerge(Key, Val, List) -> + case proplists:is_defined(Key, List) of + true -> List; + _ -> [{Key, Val} | List] + end. + pset(Key, Value, List) -> [{Key, Value} | proplists:delete(Key, List)]. format_message_queue(_Opt, MQ) -> diff --git a/test/src/rabbit_tests.erl b/test/src/rabbit_tests.erl index 891af272fb..a7435a3860 100644 --- a/test/src/rabbit_tests.erl +++ b/test/src/rabbit_tests.erl @@ -55,6 +55,7 @@ all_tests0() -> passed = test_priority_queue(), passed = test_pg_local(), passed = test_unfold(), + passed = test_pmerge(), passed = test_supervisor_delayed_restart(), passed = test_table_codec(), passed = test_content_framing(), @@ -423,6 +424,12 @@ test_unfold() -> end, 10), passed. +test_pmerge() -> + P = [{a, 1}, {b, 2}], + P = rabbit_misc:pmerge(a, 3, P), + [{c, 3} | P] = rabbit_misc:pmerge(c, 3, P), + passed. + test_table_codec() -> %% FIXME this does not test inexact numbers (double and float) yet, %% because they won't pass the equality assertions |
