167 lines
5.3 KiB
Erlang
167 lines
5.3 KiB
Erlang
%%
|
|
%% Licensed to the Apache Software Foundation (ASF) under one
|
|
%% or more contributor license agreements. See the NOTICE file
|
|
%% distributed with this work for additional information
|
|
%% regarding copyright ownership. The ASF licenses this file
|
|
%% to you under the Apache License, Version 2.0 (the
|
|
%% "License"); you may not use this file except in compliance
|
|
%% with the License. You may obtain a copy of the License at
|
|
%%
|
|
%% http://www.apache.org/licenses/LICENSE-2.0
|
|
%%
|
|
%% Unless required by applicable law or agreed to in writing,
|
|
%% software distributed under the License is distributed on an
|
|
%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
%% KIND, either express or implied. See the License for the
|
|
%% specific language governing permissions and limitations
|
|
%% under the License.
|
|
%%
|
|
|
|
-module(test_thrift_membuffer_transport).
|
|
-include_lib("eunit/include/eunit.hrl").
|
|
|
|
|
|
new() -> thrift_membuffer_transport:new().
|
|
new(Data) -> thrift_membuffer_transport:new(Data).
|
|
|
|
new_test_() ->
|
|
[
|
|
{"new empty membuffer", ?_assertMatch(
|
|
{ok, {_, _, {t_membuffer, []}}},
|
|
new()
|
|
)},
|
|
{"new membuffer with <<>>", ?_assertMatch(
|
|
{ok, {_, _, {t_membuffer, [<<>>]}}},
|
|
new(<<>>)
|
|
)},
|
|
{"new membuffer with []", ?_assertMatch(
|
|
{ok, {_, _, {t_membuffer, []}}},
|
|
new([])
|
|
)},
|
|
{"new membuffer with <<\"hallo world\">>", ?_assertMatch(
|
|
{ok, {_, _, {t_membuffer, [<<"hallo world">>]}}},
|
|
new(<<"hallo world">>)
|
|
)},
|
|
{"new membuffer with \"hallo world\"", ?_assertMatch(
|
|
{ok, {_, _, {t_membuffer, "hallo world"}}},
|
|
new("hallo world")
|
|
)}
|
|
].
|
|
|
|
|
|
read(Membuffer, Bytes) -> thrift_membuffer_transport:read(Membuffer, Bytes).
|
|
|
|
read_test_() ->
|
|
[
|
|
{"read zero bytes from an empty membuffer", ?_assertMatch(
|
|
{_, {ok, <<>>}},
|
|
read({t_membuffer, []}, 0)
|
|
)},
|
|
{"read 1 byte from an empty membuffer", ?_assertMatch(
|
|
{_, {ok, <<>>}},
|
|
read({t_membuffer, []}, 1)
|
|
)},
|
|
{"read zero bytes from nonempty membuffer", ?_assertMatch(
|
|
{{t_membuffer, <<"hallo world">>}, {ok, <<>>}},
|
|
read({t_membuffer, [["hallo", " "], "world"]}, 0)
|
|
)},
|
|
{"read 1 byte from nonempty membuffer", ?_assertMatch(
|
|
{{t_membuffer, <<"allo world">>}, {ok, <<"h">>}},
|
|
read({t_membuffer, [["hallo", " "], "world"]}, 1)
|
|
)},
|
|
{"read a zillion bytes from nonempty buffer", ?_assertMatch(
|
|
{{t_membuffer, <<>>}, {ok, <<"hallo world">>}},
|
|
read({t_membuffer, [["hallo", " "], "world"]}, 65536)
|
|
)}
|
|
].
|
|
|
|
|
|
read_exact(Membuffer, Bytes) ->
|
|
thrift_membuffer_transport:read_exact(Membuffer, Bytes).
|
|
|
|
read_exact_test_() ->
|
|
[
|
|
{"read exactly zero bytes from an empty membuffer", ?_assertMatch(
|
|
{_, {ok, <<>>}},
|
|
read_exact({t_membuffer, []}, 0)
|
|
)},
|
|
{"read exactly 1 byte from an empty membuffer", ?_assertMatch(
|
|
{_, {error, eof}},
|
|
read_exact({t_membuffer, []}, 1)
|
|
)},
|
|
{"read exactly zero bytes from nonempty membuffer", ?_assertMatch(
|
|
{{t_membuffer, <<"hallo world">>}, {ok, <<>>}},
|
|
read_exact({t_membuffer, [["hallo", " "], "world"]}, 0)
|
|
)},
|
|
{"read exactly 1 byte from nonempty membuffer", ?_assertMatch(
|
|
{{t_membuffer, <<"allo world">>}, {ok, <<"h">>}},
|
|
read_exact({t_membuffer, [["hallo", " "], "world"]}, 1)
|
|
)},
|
|
{"read exactly a zillion bytes from nonempty buffer", ?_assertMatch(
|
|
{{t_membuffer, [["hallo", " "], "world"]}, {error, eof}},
|
|
read_exact({t_membuffer, [["hallo", " "], "world"]}, 65536)
|
|
)}
|
|
].
|
|
|
|
|
|
write(Membuffer, Data) -> thrift_membuffer_transport:write(Membuffer, Data).
|
|
|
|
write_test_() ->
|
|
[
|
|
{"write empty list to empty membuffer", ?_assertMatch(
|
|
{{t_membuffer, [[], []]}, ok},
|
|
write({t_membuffer, []}, [])
|
|
)},
|
|
{"write empty list to nonempty membuffer", ?_assertMatch(
|
|
{{t_membuffer, ["hallo world", []]}, ok},
|
|
write({t_membuffer, "hallo world"}, [])
|
|
)},
|
|
{"write empty binary to empty membuffer", ?_assertMatch(
|
|
{{t_membuffer, [[], <<>>]}, ok},
|
|
write({t_membuffer, []}, <<>>)
|
|
)},
|
|
{"write empty binary to nonempty membuffer", ?_assertMatch(
|
|
{{t_membuffer, ["hallo world", <<>>]}, ok},
|
|
write({t_membuffer, "hallo world"}, <<>>)
|
|
)},
|
|
{"write a list to empty membuffer", ?_assertMatch(
|
|
{{t_membuffer, [[], "hallo world"]}, ok},
|
|
write({t_membuffer, []}, "hallo world")
|
|
)},
|
|
{"write a list to nonempty membuffer", ?_assertMatch(
|
|
{{t_membuffer, [["hallo", " "], "world"]}, ok},
|
|
write({t_membuffer, ["hallo", " "]}, "world")
|
|
)},
|
|
{"write a binary to empty membuffer", ?_assertMatch(
|
|
{{t_membuffer, [[], <<"hallo world">>]}, ok},
|
|
write({t_membuffer, []}, <<"hallo world">>)
|
|
)},
|
|
{"write a binary to nonempty membuffer", ?_assertMatch(
|
|
{{t_membuffer, [["hallo", " "], <<"world">>]}, ok},
|
|
write({t_membuffer, ["hallo", " "]}, <<"world">>)
|
|
)}
|
|
].
|
|
|
|
|
|
flush(Transport) -> thrift_membuffer_transport:flush(Transport).
|
|
|
|
flush_test_() ->
|
|
[
|
|
{"flush empty membuffer", ?_assertMatch(
|
|
{{t_membuffer, []}, ok},
|
|
flush({t_membuffer, []})
|
|
)},
|
|
{"flush nonempty membuffer", ?_assertMatch(
|
|
{{t_membuffer, [<<"hallo world">>]}, ok},
|
|
flush({t_membuffer, [<<"hallo world">>]})
|
|
)}
|
|
].
|
|
|
|
|
|
close(Transport) -> thrift_membuffer_transport:close(Transport).
|
|
|
|
close_test_() ->
|
|
{"close membuffer", ?_assertMatch(
|
|
{{t_membuffer, _}, ok},
|
|
close({t_membuffer, []})
|
|
)}. |