diff --git a/apps/emqx/test/emqx_topic_SUITE.erl b/apps/emqx/test/emqx_topic_SUITE.erl index 5993fbc40..af61c497d 100644 --- a/apps/emqx/test/emqx_topic_SUITE.erl +++ b/apps/emqx/test/emqx_topic_SUITE.erl @@ -138,6 +138,48 @@ t_intersect(_) -> false = intersection(<<"t/global/#">>, <<"t/local/+">>), false = intersection(<<"t/local/1/+">>, <<"t/local/+">>). +t_intersect_topic_wildcard(_) -> + <<"t/test/1">> = intersection(<<"t/test/#">>, <<"t/test/1">>), + <<"t/test/1/1">> = intersection(<<"t/test/1/1">>, <<"t/test/#">>), + false = intersection(<<"t/test/1/1">>, <<"t/test/+">>), + <<"t/test/1/1">> = intersection(<<"t/test/1/1">>, <<"t/test/1/1">>), + false = intersection(<<"t/test/1">>, <<"t/test/2">>), + false = intersection(<<"t/test/1">>, <<"t/test/1/2">>). + +t_intersect_commutes(_) -> + ?assertEqual( + intersection(<<"t/+/1/+">>, <<"t/global/#">>), + intersection(<<"t/global/#">>, <<"t/+/1/+">>) + ), + ?assertEqual( + intersection(<<"#">>, <<"t/global/#">>), + intersection(<<"t/global/#">>, <<"#">>) + ), + ?assertEqual( + intersection(<<"+/2/+/4/+">>, <<"1/+/3/+/5/#">>), + intersection(<<"1/+/3/+/5/#">>, <<"+/2/+/4/+">>) + ), + ?assertEqual( + intersection(<<"t/local/+">>, <<"t/local/1/#">>), + intersection(<<"t/local/1/#">>, <<"t/local/+">>) + ), + ?assertEqual( + intersection(<<"t/local/+">>, <<"t/global/#">>), + intersection(<<"t/global/#">>, <<"t/local/+">>) + ), + ?assertEqual( + intersection(<<"t/local/+">>, <<"t/local/1/+">>), + intersection(<<"t/local/1/+">>, <<"t/local/+">>) + ), + ?assertEqual( + intersection(<<"t/test/#">>, <<"t/test/1/1">>), + intersection(<<"t/test/1/1">>, <<"t/test/#">>) + ), + ?assertEqual( + intersection(<<"t/test/+">>, <<"t/test/1/1">>), + intersection(<<"t/test/1/1">>, <<"t/test/+">>) + ). + t_sys_intersect(_) -> <<"$SYS/broker/+">> = intersection(<<"$SYS/broker/#">>, <<"$SYS/+/+">>), <<"$SYS/broker">> = intersection(<<"$SYS/broker">>, <<"$SYS/+">>),