1: -module(mam_jid_mini_SUITE). 2: -include_lib("eunit/include/eunit.hrl"). 3: -compile([export_all, nowarn_export_all]). 4: 5: all() -> [test_encode_decode_functionality]. 6: 7: init_per_suite(Config) -> 8: {ok, _} = application:ensure_all_started(jid), 9: Config. 10: 11: end_per_suite(Config) -> Config. 12: 13: test_encode_decode_functionality(_Config) -> 14: PossibleDomainNames = [<<"a">>, <<"b">>, <<"c">>, <<"d">>, <<"e">>, <<"f">>], 15: PossibleUserNames = [<<"">> | PossibleDomainNames], 16: PossibleResourceNames = [<<"just:some@random/text here">> | PossibleUserNames], 17: PossibleJIDs = [{U, D, R, jid:make(U, D, R)} || U <- PossibleUserNames, 18: D <- PossibleDomainNames, 19: R <- PossibleResourceNames], 20: FailedJIDs = [[{U1, D1, R1}, {U2, D2, R2}, EncodedJID, DecodedJID] 21: || {U1, D1, R1, JID1} <- PossibleJIDs, 22: {U2, D2, R2, JID2} <- PossibleJIDs, 23: EncodedJID <- [catch mam_jid_mini:encode(JID1, JID2)], 24: DecodedJID <- [catch mam_jid_mini:decode(JID1, EncodedJID)], 25: DecodedJID =/= JID2], 26: case lists:sublist(FailedJIDs, 100) of 27: [] -> ok; 28: First100FailedJIDs -> 29: [ct:log("~nJID encoding/decoding failed:~n" 30: "\tbase JID - ~p~n" 31: "\tJID to encode - ~p~n" 32: "\tencoded JID - ~p~n" 33: "\tdecoded JID - ~p~n", Params) || Params <- First100FailedJIDs], 34: ct:fail("Failed to encode/decode some of the JIDs," 35: " see test suite logs for more details", []) 36: end. 37: