From 85982c4033da4d54937078f8ae1d9c8fde072372 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Thu, 6 Aug 2015 16:25:29 +0200 Subject: Add tlv.erl. Also, add test/check.erl for unit tests (make check). --- src/tlv.erl | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/tlv.erl (limited to 'src/tlv.erl') diff --git a/src/tlv.erl b/src/tlv.erl new file mode 100644 index 0000000..b1d3428 --- /dev/null +++ b/src/tlv.erl @@ -0,0 +1,34 @@ +%%% Copyright (c) 2015, NORDUnet A/S. +%%% See LICENSE for licensing information. + +-module(tlv). + +-export([encode/2, decode/1]). + +-spec encode(binary(), binary()) -> binary(). +encode(Type, Value) -> + 4 = byte_size(Type), % FIXME: make Type a 4 octet binary + Len = byte_size(Value) + 8, + <>. + +-spec decode(binary()) -> {binary(), binary(), binary()}. +decode(Data) -> + <> = Data, + Length = TotalLength - 8, + <> = Rest1, + <> = Rest2, + {Type, Value, Rest3}. + +%%%%%%%%%%%%%%%%%%%% + +-include_lib("eunit/include/eunit.hrl"). +-define(TESTDATA1, {<<"DATA">>, <<"some data">>}). +-define(TESTDATA2, {<<"DAT2">>, <<"some other data">>}). + +the_test_() -> + {setup, + fun() -> [?TESTDATA1, ?TESTDATA2] end, + fun(_) -> ok end, + fun(TestVectors) -> + [?_assertEqual({T, V, <<>>}, decode(encode(T, V))) || + {T, V} <- TestVectors] end}. -- cgit v1.1