-module(decode_test). -include_lib("eunit/include/eunit.hrl"). -ifdef(TEST). %% ---------------------------------- %% Unit tests %% ---------------------------------- read_next_test() -> ?assert(decode:read_next([]) =:= eof), ?assert(decode:read_next("i-23e") =:= {ok, -23}), ?assert(decode:read_next("i--23e") =:= {error, double_negation}), ?assert(decode:read_next("i-23-e") =:= {error, badargs}), ?assert(decode:read_next("4:2453") =:= {ok, "2453"}), ?assert(decode:read_next("de") =:= {ok, #{}}), ?assert(decode:read_next(#{}) =:= {error, badargs}). parse_result_test() -> ?assert(decode:parse_result({error, reason}) =:= {error, reason}), ?assert(decode:parse_result({[], reason}) =:= {ok, reason}), ?assert(decode:parse_result("testing") =:= "testing"). get_list_test() -> ?assert(decode:get_list("i23elel2:23ee") =:= {[], [23, [], ["23"]]}), ?assert(decode:get_list("e2:23") =:= {"2:23", []}). get_dict_test() -> ?assert(decode:get_dict("e") =:= {[], #{}}), ?assert(decode:get_dict("lee") =:= {error, list_as_key}), ?assert(decode:get_dict("dee") =:= {error, dict_as_key}), ?assert(decode:get_dict("3:heje") =:= {error, no_end}), ?assert(decode:get_dict("") =:= {error, no_end}), ?assert(decode:get_dict("i23e4:teste") =:= {[], #{23 => "test"}}), ?assert(decode:get_dict("i23e3:hay6:warden6:clyffee") =:= {[], #{23 => "hay", "warden" => "clyffe"}}). get_key_and_value_test() -> ?assert(decode:get_key_and_value({"i23ee", "test"}, #{}) =:= {[], #{"test" => 23}}), ?assert(decode:get_key_and_value({"lee", 23}, #{}) =:= {[],#{23 => []}}). read_number_test() -> ?assert(decode:read_number("2453e") =:= {[], 2453}), ?assert(decode:read_number("e") =:= {[], 0}), ?assert(decode:read_number("-2453e") =:= {[], -2453}), ?assert(decode:read_number("2-453e") =:= {error, badargs}), ?assert(decode:read_number("253") =:= {error, no_end}), ?assert(decode:read_number("25 3") =:= {error, badargs}), ?assert(decode:read_number("2d53") =:= {error, badargs}), ?assert(decode:read_number("i253e") =:= {error, badargs}). test_if_integer_test() -> ?assert(decode:test_if_integer(23) =:= false), ?assert(decode:test_if_integer("23") =:= true), ?assert(decode:test_if_integer("2he3j5") =:= false), ?assert(decode:test_if_integer("24 321") =:= false), ?assert(decode:test_if_integer(" 23") =:= false). read_string_test() -> ?assert(decode:read_string("3:heji23e", 0) =:= {"i23e", "hej"}), ?assert(decode:read_string("q6:wardeni23e", 0) =:= {error, not_a_number}), ?assert(decode:read_string("10:wardeni23e", 0) =:= {[], "wardeni23e"}). get_string_tuple_test() -> ?assert(decode:get_string_tuple("Hello World", 0) =:= {error, eof}), ?assert(decode:get_string_tuple([], 10) =:= {error, invalid_length}), ?assert(decode:get_string_tuple("Hello World", 4) =:= {"o World", "Hell"}), ?assert(decode:get_string_tuple("Hello World", 11) =:= {"", "Hello World"}). -endif.