Browse Source

test: add tests for emqx_utils_binary from original site

Stefan Strigler 2 years ago
parent
commit
0f162fb50a
1 changed files with 212 additions and 0 deletions
  1. 212 0
      apps/emqx_utils/test/emqx_utils_binary_tests.erl

+ 212 - 0
apps/emqx_utils/test/emqx_utils_binary_tests.erl

@@ -0,0 +1,212 @@
+-module(emqx_utils_binary_tests).
+
+-import(emqx_utils_binary, [
+    trim/1,
+    ltrim/1,
+    rtrim/1,
+    trim/2,
+    ltrim/2,
+    rtrim/2,
+    reverse/1,
+    inverse/1,
+    join/2,
+    suffix/2,
+    prefix/2,
+    duplicate/2,
+    union/2,
+    intersection/2,
+    subtract/2,
+    optimize_patterns/1
+]).
+
+-include_lib("eunit/include/eunit.hrl").
+
+-ifdef(TEST).
+
+trim1_test_() ->
+    [
+        ?_assertEqual(trim(<<>>), <<>>),
+        ?_assertEqual(trim(<<0, 0, 0>>), <<>>),
+        ?_assertEqual(trim(<<1, 2, 3>>), <<1, 2, 3>>),
+        ?_assertEqual(trim(<<0, 1, 2>>), <<1, 2>>),
+        ?_assertEqual(trim(<<0, 0, 1, 2>>), <<1, 2>>),
+        ?_assertEqual(trim(<<1, 2, 0, 0>>), <<1, 2>>),
+        ?_assertEqual(trim(<<0, 1, 2, 0>>), <<1, 2>>),
+        ?_assertEqual(trim(<<0, 0, 0, 1, 2, 0, 0, 0>>), <<1, 2>>)
+    ].
+
+ltrim1_test_() ->
+    [
+        ?_assertEqual(ltrim(<<>>), <<>>),
+        ?_assertEqual(ltrim(<<0, 0, 0>>), <<>>),
+        ?_assertEqual(ltrim(<<1, 2, 3>>), <<1, 2, 3>>),
+        ?_assertEqual(ltrim(<<0, 1, 2>>), <<1, 2>>),
+        ?_assertEqual(ltrim(<<0, 0, 1, 2>>), <<1, 2>>),
+        ?_assertEqual(ltrim(<<1, 2, 0, 0>>), <<1, 2, 0, 0>>),
+        ?_assertEqual(ltrim(<<0, 1, 2, 0>>), <<1, 2, 0>>),
+        ?_assertEqual(ltrim(<<0, 0, 0, 1, 2, 0, 0, 0>>), <<1, 2, 0, 0, 0>>)
+    ].
+
+rtrim1_test_() ->
+    [
+        ?_assertEqual(rtrim(<<>>), <<>>),
+        ?_assertEqual(rtrim(<<1, 2, 3>>), <<1, 2, 3>>),
+        ?_assertEqual(rtrim(<<0, 0, 0>>), <<>>),
+        ?_assertEqual(rtrim(<<0, 1, 2>>), <<0, 1, 2>>),
+        ?_assertEqual(rtrim(<<0, 0, 1, 2>>), <<0, 0, 1, 2>>),
+        ?_assertEqual(rtrim(<<1, 2, 0, 0>>), <<1, 2>>),
+        ?_assertEqual(rtrim(<<0, 1, 2, 0>>), <<0, 1, 2>>),
+        ?_assertEqual(rtrim(<<0, 0, 0, 1, 2, 0, 0, 0>>), <<0, 0, 0, 1, 2>>)
+    ].
+
+trim2_test_() ->
+    [
+        ?_assertEqual(trim(<<5>>, 5), <<>>),
+        ?_assertEqual(trim(<<5, 1, 2, 5>>, 5), <<1, 2>>),
+        ?_assertEqual(trim(<<5, 5, 5, 1, 2, 0, 0, 0>>, 5), <<1, 2, 0, 0, 0>>)
+    ].
+
+ltrim2_test_() ->
+    [
+        ?_assertEqual(ltrim(<<5>>, 5), <<>>),
+        ?_assertEqual(ltrim(<<5, 1, 2, 5>>, 5), <<1, 2, 5>>),
+        ?_assertEqual(ltrim(<<5, 5, 5, 1, 2, 0, 0, 0>>, 5), <<1, 2, 0, 0, 0>>)
+    ].
+
+rtrim2_test_() ->
+    [
+        ?_assertEqual(rtrim(<<5>>, 5), <<>>),
+        ?_assertEqual(rtrim(<<5, 1, 2, 5>>, 5), <<5, 1, 2>>),
+        ?_assertEqual(rtrim(<<5, 5, 5, 1, 2, 0, 0, 0>>, 5), <<5, 5, 5, 1, 2, 0, 0, 0>>)
+    ].
+
+mtrim2_test_() ->
+    [
+        ?_assertEqual(trim(<<5>>, [1, 5]), <<>>),
+        ?_assertEqual(trim(<<5, 1, 2, 5>>, [1, 5]), <<2>>),
+        ?_assertEqual(trim(<<5, 1, 2, 5>>, [1, 2, 5]), <<>>),
+        ?_assertEqual(trim(<<5, 5, 5, 1, 2, 0, 0, 0>>, [1, 5]), <<2, 0, 0, 0>>)
+    ].
+
+mltrim2_test_() ->
+    [
+        ?_assertEqual(ltrim(<<5>>, [1, 5]), <<>>),
+        ?_assertEqual(ltrim(<<5, 1, 2, 5>>, [1, 5]), <<2, 5>>),
+        ?_assertEqual(ltrim(<<5, 1, 2, 5>>, [2, 5]), <<1, 2, 5>>),
+        ?_assertEqual(ltrim(<<5, 5, 5, 1, 2, 0, 0, 0>>, [1, 5]), <<2, 0, 0, 0>>)
+    ].
+
+mrtrim2_test_() ->
+    [
+        ?_assertEqual(rtrim(<<5>>, [1, 5]), <<>>),
+        ?_assertEqual(rtrim(<<5, 1, 2, 5>>, [1, 5]), <<5, 1, 2>>),
+        ?_assertEqual(rtrim(<<5, 1, 2, 5>>, [2, 5]), <<5, 1>>),
+        ?_assertEqual(rtrim(<<5, 5, 5, 1, 2, 0, 0, 0>>, [1, 5]), <<5, 5, 5, 1, 2, 0, 0, 0>>),
+        ?_assertEqual(rtrim(<<5, 5, 5, 1, 2, 0, 0, 0>>, [0, 5]), <<5, 5, 5, 1, 2>>)
+    ].
+
+reverse_test_() ->
+    [?_assertEqual(reverse(<<0, 1, 2>>), <<2, 1, 0>>)].
+
+join_test_() ->
+    [
+        ?_assertEqual(join([<<1, 2>>, <<3, 4>>, <<5, 6>>], <<0>>), <<1, 2, 0, 3, 4, 0, 5, 6>>),
+        ?_assertEqual(
+            join([<<"abc">>, <<"def">>, <<"xyz">>], <<"|">>),
+            <<"abc|def|xyz">>
+        ),
+        ?_assertEqual(
+            join([<<>>, <<"|">>, <<"x|z">>], <<"|">>),
+            <<"|||x|z">>
+        ),
+        ?_assertEqual(
+            join([<<"abc">>, <<"def">>, <<"xyz">>], <<>>),
+            <<"abcdefxyz">>
+        ),
+        ?_assertEqual(join([], <<"|">>), <<>>)
+    ].
+
+duplicate_test_() ->
+    [
+        ?_assertEqual(duplicate(5, <<1, 2>>), <<1, 2, 1, 2, 1, 2, 1, 2, 1, 2>>),
+        ?_assertEqual(duplicate(50, <<0>>), <<0:400>>)
+    ].
+
+suffix_test_() ->
+    [
+        ?_assertEqual(suffix(<<1, 2, 3, 4, 5>>, 2), <<4, 5>>),
+        ?_assertError(badarg, prefix(<<1, 2, 3, 4, 5>>, 25))
+    ].
+
+prefix_test_() ->
+    [
+        ?_assertEqual(prefix(<<1, 2, 3, 4, 5>>, 2), <<1, 2>>),
+        ?_assertError(badarg, prefix(<<1, 2, 3, 4, 5>>, 25))
+    ].
+
+union_test_() ->
+    [
+        ?_assertEqual(
+            union(
+                <<2#0011011:7>>,
+                <<2#1011110:7>>
+            ),
+            <<2#1011111:7>>
+        )
+    ].
+
+inverse_test_() ->
+    [
+        ?_assertEqual(inverse(inverse(<<0, 1, 2>>)), <<0, 1, 2>>),
+        ?_assertEqual(inverse(<<0>>), <<255>>),
+        ?_assertEqual(inverse(<<2#1:1>>), <<2#0:1>>),
+        ?_assertEqual(inverse(<<2#0:1>>), <<2#1:1>>),
+        ?_assertEqual(
+            inverse(<<2#01:2>>),
+            <<2#10:2>>
+        ),
+        ?_assertEqual(
+            inverse(<<2#0011011:7>>),
+            <<2#1100100:7>>
+        )
+    ].
+
+intersection_test_() ->
+    [
+        ?_assertEqual(
+            intersection(
+                <<2#0011011>>,
+                <<2#1011110>>
+            ),
+            <<2#0011010>>
+        )
+    ].
+
+subtract_test_() ->
+    [
+        ?_assertEqual(
+            subtract(
+                <<2#0011011>>,
+                <<2#1011110>>
+            ),
+            <<2#0000001>>
+        )
+    ].
+
+optimize_patterns_test_() ->
+    [
+        ?_assertEqual(
+            [<<"t">>],
+            optimize_patterns([<<"t">>, <<"test">>])
+        ),
+        ?_assertEqual(
+            [<<"t">>],
+            optimize_patterns([<<"t">>, <<"t">>, <<"test">>])
+        ),
+        ?_assertEqual(
+            [<<"t">>],
+            optimize_patterns([<<"test">>, <<"t">>, <<"t">>])
+        )
+    ].
+
+-endif.