chore(emqx_trie): add test case to cover multiple levels of + wildcards

This commit is contained in:
Zaiming Shi 2021-04-26 12:10:52 +02:00 committed by Zaiming (Stone) Shi
parent eb946eb80c
commit 8d55d425dc
1 changed files with 8 additions and 1 deletions

View File

@ -141,8 +141,12 @@ compact(Words) ->
false -> Words
end.
%% join split words into compacted segments
%% each segment ends with one wildcard word
%% e.g.
%% a/b/c/+/d/# => [a/b/c/+, d/#]
%% a/+/+/b => [a/+, +, b]
%% a/+/+/+/+/b => [a/+, +, +, +, b]
do_compact(Words) ->
do_compact(Words, empty, []).
@ -317,7 +321,10 @@ do_compact_test() ->
?assertEqual([<<"/+">>], do_compact(words(<<"/+">>))),
?assertEqual([<<"/#">>], do_compact(words(<<"/#">>))),
?assertEqual([<<"a/b/+">>, <<"c">>], do_compact(words(<<"a/b/+/c">>))),
?assertEqual([<<"a/+">>, <<"+">>, <<"b">>], do_compact(words(<<"a/+/+/b">>))).
?assertEqual([<<"a/+">>, <<"+">>, <<"b">>], do_compact(words(<<"a/+/+/b">>))),
?assertEqual([<<"a/+">>, <<"+">>, <<"+">>, <<"+">>, <<"b">>],
do_compact(words(<<"a/+/+/+/+/b">>))),
ok.
clear_tables() -> mnesia:clear_table(?TRIE).