add encode&decode unit test
diff --git a/src/encode_test.erl b/src/encode_test.erl
deleted file mode 100644
index e806784..0000000
--- a/src/encode_test.erl
+++ /dev/null
@@ -1,53 +0,0 @@
-%%%-------------------------------------------------------------------
-%%% @author dlive
-%%% @copyright (C) 2016, <COMPANY>
-%%% @doc
-%%%
-%%% @end
-%%% Created : 18. 十月 2016 上午10:46
-%%%-------------------------------------------------------------------
--module(encode_test).
--author("dlive").
-
--include("hessian.hrl").
-%% API
--export([object_test/0,de_object/0]).
-
--record(de_TestReq, {name, nick,age}).
--record(de_reg2, {reqinfo,age}).
-
-object_test()->
-    ForeignTypeA = <<"com.ifcoder.demo.bean.UserInfoRequest">>,
-    TypeDefA = #type_def{foreign_type = ForeignTypeA,
-        native_type = de_TestReq,
-        fieldnames = record_info(fields,de_TestReq)},
-    EncodingState0 = type_encoding:enlist(TypeDefA),
-    io:format("state:~p~n",[EncodingState0]),
-    RequestArg0 = #de_TestReq{name = <<"nameinfo">>, nick = <<"nickname">> ,age=10 },
-%%    Object = #object{values = [RequestArg0] },
-%%    io:format("Object:~p~n",[Object]),
-    {Bin, State0} = hessianEncode:encode(RequestArg0, EncodingState0),
-    file:write_file("/tmp/object_erl.data",Bin),
-%%    ?assertMatch(Expected, Bin),
-    %% This test is asymmetric because decode($O,Rest/bin)
-    %% will only consume the outer class definition,
-    %% in normal circumstances, the calling decode/2 function will recursively
-    %% consume all object definitions.
-%%    {Rest, TypeDef, State1} = hessian:decode(Bin, DecodingState),
-%%    ?assertMatch(TypeDefA, TypeDef),
-%%    [Function|Arguments] = hessian:decode(<<99,2,0,109,0,1,97,Bin/binary>>, DecodingState),
-%%    ?assertMatch([[A]], Arguments).
-
-    ok.
-
-de_object()->
-    ForeignTypeA = <<"com.ifcoder.demo.bean.UserInfoRequest">>,
-    TypeDefA = #type_def{foreign_type = ForeignTypeA,
-        native_type = de_TestReq,
-        fieldnames = record_info(fields,de_TestReq)},
-    EncodingState0 = hessianDecode2:enlist(TypeDefA),
-    {ok,Bin} = file:read_file("/tmp/object_erl.data"), %% /tmp/objectencode.data
-    Info = hessianDecode2:decode(Bin,EncodingState0),
-    io:format("info:~p~n",[Info]),
-    ok.
-
diff --git a/test/hession_encode_tests.erl b/test/hession_encode_tests.erl
new file mode 100644
index 0000000..69922fb
--- /dev/null
+++ b/test/hession_encode_tests.erl
@@ -0,0 +1,40 @@
+%%%-------------------------------------------------------------------
+%%% @author dlive
+%%% @copyright (C) 2016, <COMPANY>
+%%% @doc
+%%%
+%%% @end
+%%% Created : 18. 十月 2016 上午10:46
+%%%-------------------------------------------------------------------
+-module(hession_encode_tests).
+-author("dlive").
+
+-include("hessian.hrl").
+-include_lib("eunit/include/eunit.hrl").
+%% API
+-export([object_test/0]).
+
+-record(de_TestReq, {name, nick,age}).
+-record(de_reg2, {reqinfo,age}).
+
+object_test()->
+    ForeignTypeA = <<"com.ifcoder.demo.bean.UserInfoRequest">>,
+    TypeDefA = #type_def{foreign_type = ForeignTypeA,
+        native_type = de_TestReq,
+        fieldnames = record_info(fields,de_TestReq)},
+    EncodingState0 = type_encoding:enlist(TypeDefA),
+%%    ?debugFmt("state:~p~n",[EncodingState0]),
+    RequestArg0 = #de_TestReq{name = <<"nameinfo">>, nick = <<"nickname">> ,age=10 },
+
+    {Bin, State0} = hessianEncode:encode(RequestArg0, EncodingState0),
+
+    type_register:init(),
+    de_type_transfer:pre_process_typedef(de_TestReq,<<"com.ifcoder.demo.bean.UserInfoRequest">>,record_info(fields,de_TestReq)),
+    {<<>>,Data,State2 } = hessianDecode2:decode(Bin,hessianDecode2:init()),
+    DecodeResult = de_type_transfer:java_to_native(Data,State2),
+    ?assert(is_record(DecodeResult,de_TestReq)),
+    ?assertEqual(DecodeResult#de_TestReq.name,<<"nameinfo">>),
+    ?assertEqual(DecodeResult#de_TestReq.nick,<<"nickname">>),
+    ?assertEqual(DecodeResult#de_TestReq.age,10),
+    ?debugFmt("get decode info ~p",[DecodeResult]),
+    ok.