THRIFT-1213 - make membuffer in erlang more useful
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1137121 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/test/erl/src/test_membuffer.erl b/test/erl/src/test_membuffer.erl
index 19ac527..fcf993a 100644
--- a/test/erl/src/test_membuffer.erl
+++ b/test/erl/src/test_membuffer.erl
@@ -23,74 +23,98 @@
-include("thriftTest_types.hrl").
test_data() ->
- #xtruct{string_thing = <<"foobar">>,
- byte_thing = 123,
- i32_thing = 1234567,
- i64_thing = 12345678900}.
+ #xtruct {
+ string_thing = <<"foobar">>,
+ byte_thing = 123,
+ i32_thing = 1234567,
+ i64_thing = 12345678900
+ }.
t1() ->
- {ok, Transport} = thrift_memory_buffer:new(),
- {ok, Protocol0} = thrift_binary_protocol:new(Transport),
- TestData = test_data(),
- {Protocol1, ok} = thrift_protocol:write(Protocol0,
- {{struct, element(2, thriftTest_types:struct_info('xtruct'))},
- TestData}),
- {_Protocol2, {ok, Result}} = thrift_protocol:read(Protocol1,
- {struct, element(2, thriftTest_types:struct_info('xtruct'))},
- 'xtruct'),
-
- Result = TestData.
+ {ok, Transport} = thrift_memory_buffer:new(),
+ {ok, Protocol0} = thrift_binary_protocol:new(Transport),
+ TestData = test_data(),
+ {Protocol1, ok} = thrift_protocol:write(Protocol0,
+ {{struct, element(2, thriftTest_types:struct_info('xtruct'))},
+ TestData}),
+ {_Protocol2, {ok, Result}} = thrift_protocol:read(Protocol1,
+ {struct, element(2, thriftTest_types:struct_info('xtruct'))},
+ 'xtruct'),
+ Result = TestData.
t2() ->
- {ok, Transport} = thrift_memory_buffer:new(),
- {ok, Protocol0} = thrift_binary_protocol:new(Transport),
- TestData = test_data(),
- {Protocol1, ok} = thrift_protocol:write(Protocol0,
- {{struct, element(2, thriftTest_types:struct_info('xtruct'))},
- TestData}),
- {_Protocol2, {ok, Result}} = thrift_protocol:read(Protocol1,
- {struct, element(2, thriftTest_types:struct_info('xtruct3'))},
- 'xtruct3'),
+ {ok, Transport} = thrift_memory_buffer:new(),
+ {ok, Protocol0} = thrift_binary_protocol:new(Transport),
+ TestData = test_data(),
+ {Protocol1, ok} = thrift_protocol:write(Protocol0,
+ {{struct, element(2, thriftTest_types:struct_info('xtruct'))},
+ TestData}),
+ {_Protocol2, {ok, Result}} = thrift_protocol:read(Protocol1,
+ {struct, element(2, thriftTest_types:struct_info('xtruct3'))},
+ 'xtruct3'),
- Result = #xtruct3{string_thing = TestData#xtruct.string_thing,
- changed = undefined,
- i32_thing = TestData#xtruct.i32_thing,
- i64_thing = TestData#xtruct.i64_thing}.
+ Result = #xtruct3{string_thing = TestData#xtruct.string_thing,
+ changed = undefined,
+ i32_thing = TestData#xtruct.i32_thing,
+ i64_thing = TestData#xtruct.i64_thing}.
t3() ->
- {ok, Transport} = thrift_memory_buffer:new(),
- {ok, Protocol0} = thrift_binary_protocol:new(Transport),
- TestData = #bools{im_true = true, im_false = false},
- {Protocol1, ok} = thrift_protocol:write(Protocol0,
- {{struct, element(2, thriftTest_types:struct_info('bools'))},
- TestData}),
- {_Protocol2, {ok, Result}} = thrift_protocol:read(Protocol1,
- {struct, element(2, thriftTest_types:struct_info('bools'))},
- 'bools'),
+ {ok, Transport} = thrift_memory_buffer:new(),
+ {ok, Protocol0} = thrift_binary_protocol:new(Transport),
+ TestData = #bools{im_true = true, im_false = false},
+ {Protocol1, ok} = thrift_protocol:write(Protocol0,
+ {{struct, element(2, thriftTest_types:struct_info('bools'))},
+ TestData}),
+ {_Protocol2, {ok, Result}} = thrift_protocol:read(Protocol1,
+ {struct, element(2, thriftTest_types:struct_info('bools'))},
+ 'bools'),
- true = TestData#bools.im_true =:= Result#bools.im_true,
- true = TestData#bools.im_false =:= Result#bools.im_false.
+ true = TestData#bools.im_true =:= Result#bools.im_true,
+ true = TestData#bools.im_false =:= Result#bools.im_false.
t4() ->
- {ok, Transport} = thrift_memory_buffer:new(),
- {ok, Protocol0} = thrift_binary_protocol:new(Transport),
- TestData = #insanity{xtructs=[]},
- {Protocol1, ok} = thrift_protocol:write(Protocol0,
- {{struct, element(2, thriftTest_types:struct_info('insanity'))},
- TestData}),
- {_Protocol2, {ok, Result}} = thrift_protocol:read(Protocol1,
- {struct, element(2, thriftTest_types:struct_info('insanity'))},
- 'insanity'),
+ {ok, Transport} = thrift_memory_buffer:new(),
+ {ok, Protocol0} = thrift_binary_protocol:new(Transport),
+ TestData = #insanity{xtructs=[]},
+ {Protocol1, ok} = thrift_protocol:write(Protocol0,
+ {{struct, element(2, thriftTest_types:struct_info('insanity'))},
+ TestData}),
+ {_Protocol2, {ok, Result}} = thrift_protocol:read(Protocol1,
+ {struct, element(2, thriftTest_types:struct_info('insanity'))},
+ 'insanity'),
- TestData = Result.
+ TestData = Result.
+t5() ->
+ % test writing to a buffer, getting the bytes out, putting them
+ % in a new buffer and reading them
+
+ % here's the writing part
+ {ok, Transport0} = thrift_memory_buffer:new(),
+ {ok, Protocol0} = thrift_binary_protocol:new(Transport0),
+ TestData = test_data(),
+ {Protocol1, ok} = thrift_protocol:write(Protocol0,
+ {{struct, element(2, thriftTest_types:struct_info('xtruct'))},
+ TestData}),
+ % flush now returns the buffer
+ {_Protocol2, Buf} = thrift_protocol:flush_transport (Protocol1),
+
+ % now the reading part
+ {ok, T2} = thrift_memory_buffer:new (Buf),
+ {ok, P2} = thrift_binary_protocol:new(T2),
+ {_, {ok, Result}} = thrift_protocol:read(P2,
+ {struct, element(2, thriftTest_types:struct_info('xtruct'))},
+ 'xtruct'),
+
+ Result = TestData.
t() ->
- t1(),
- t2(),
- t3(),
- t4().
+ t1(),
+ t2(),
+ t3(),
+ t4(),
+ t5().