Packages

A simple bencode encoder and decoder writen in pure Erlang

Current section

Files

Jump to
erl_bencode src test encode_test.erl
Raw

src/test/encode_test.erl

-module(encode_test).
-include_lib("eunit/include/eunit.hrl").
-ifdef(TEST).
%% ----------------------------------
%% Unit tests
%% ----------------------------------
start_encode_test() ->
?assert(encode:start_encode(["test", 23, "warden", #{"clyffe" => 43}], []) =:= {ok, "l4:testi23e6:wardend6:clyffei43eee"}),
?assert(encode:start_encode(atom, []) =:= {ok, "a4:atom"}),
?assert(encode:start_encode("warden",[]) =:= {ok, "6:warden"}),
?assert(encode:start_encode(23, []) =:= {ok, "i23e"}),
?assert(encode:start_encode(#{}, []) =:= {ok, "de"}).
determ_list_or_string_test() ->
?assert(encode:determ_list_or_string("Warden", []) =:= {ok, "6:Warden"}),
?assert(encode:determ_list_or_string(["Warden"], []) =:= {ok, "l6:Wardene"}),
?assert(encode:determ_list_or_string(23, []) =:= {error, not_list}),
?assert(encode:determ_list_or_string("", []) =:= {ok, "le"}).
encode_list_test() ->
?assert(encode:encode_list([23,43,54], []) =:= {ok, "li23ei43ei54ee"}),
?assert(encode:encode_list([],[]) =:= {ok, "le"}),
?assert(encode:encode_list(#{23=> 32}, []) =:= {error, not_list}).
encode_map_test() ->
?assert(encode:encode_map(#{}, []) =:= {ok, "de"}),
?assert(encode:encode_map(#{23 => "23"}, []) =:= {ok, "di23e2:23e"}),
?assert(encode:encode_map("Warden", []) =:= {error, not_map}).
encode_int_test() ->
?assert(encode:encode_int(23, []) =:= {ok, "i23e"}),
?assert(encode:encode_int("23", []) =:= {error, not_number}),
?assert(encode:encode_int(3125452313, "l3:hej") =:= {ok, "l3:heji3125452313e"}).
encode_string_test() ->
?assert(encode:encode_string("hej", []) =:= {ok, "3:hej"}),
?assert(encode:encode_string("", []) =:= {error, zero_length}),
?assert(encode:encode_string("23", []) =:= {ok, "2:23"}),
?assert(encode:encode_string(#{}, []) =:= {error, not_list}).
-endif.