Packages
mysql_client
1.2.8
MySQL native client is written in Erlang and provides API that is very close to Connector/C library.
Current section
Files
Jump to
Current section
Files
test/helper_common_eunit.erl
%%
%% Copyright (C) 2010-2014 by krasnop@bellsouth.net (Alexei Krasnopolski)
%%
%% Licensed 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.
%%
%% @hidden
%% @since 2011-05-04
%% @copyright 2010-2014 Alexei Krasnopolski
%% @author Alexei Krasnopolski <krasnop@bellsouth.net> [http://crasnopolski.com/]
%% @version {@version}
%% @doc This module is running unit tests for helper_common module.
-module(helper_common_eunit).
%%
%% Include files
%%
-include_lib("eunit/include/eunit.hrl").
-include("client_records.hrl").
-include("mysql_types.hrl").
-include("test.hrl").
%%
%% Import modules
%%
-import(helper_common, []).
%%
%% Exported Functions
%%
-export([
reverse_binary_testing/0,
parse_data_flags_testing/0,
extract_length_coded_integer_testing/0,
binary_to_datetime_testing/0,
extract_length_coded_binary_testing/0,
extract_length_coded_string_testing/0,
integer_to_length_coded_binary_testing/0,
binary_to_length_coded_binary_testing/0,
string_to_length_coded_binary_testing/0,
decimal_to_lc_binary_testing/0,
datetime_to_lc_binary_testing/0
]).
%%
%% API Functions
%%
helper_common_test_() ->
[
{"helper_common 1", ?MODULE, reverse_binary_testing},
{"helper_common 2", ?MODULE, parse_data_flags_testing},
{"helper_common 3", ?MODULE, extract_length_coded_integer_testing},
{"helper_common 4", ?MODULE, binary_to_datetime_testing},
{"helper_common 5", ?MODULE, extract_length_coded_binary_testing},
{"helper_common 6", ?MODULE, extract_length_coded_string_testing},
{"helper_common 7", ?MODULE, integer_to_length_coded_binary_testing},
{"helper_common 8", ?MODULE, binary_to_length_coded_binary_testing},
{"helper_common 9", ?MODULE, string_to_length_coded_binary_testing},
{"helper_common 10", ?MODULE, decimal_to_lc_binary_testing},
{"helper_common 11", ?MODULE, datetime_to_lc_binary_testing}
].
reverse_binary_testing() ->
% ?debug_Msg(">>> reverse_binary_test()"),
?assertEqual(<<7,6,5,4,3,2,1>>, helper_common:reverse_binary(<<1,2,3,4,5,6,7>>)).
parse_data_flags_testing() ->
% ?debug_Msg(">>> parse_data_flags_testing()"),
?assert(helper_common:parse_data_flags(<<16#80:8, 16#1:8>>) =:= [binary, enum]),
?assert(helper_common:parse_data_flags(<<16#1:8, 16#80:8>>) =:= [not_null, num]).
extract_length_coded_integer_testing() ->
% ?debug_Msg(">>> extract_length_coded_integer_test()"),
?assert(helper_common:extract_length_coded_integer(<<77:8, 1:80>>) =:= {77, <<1:80>>}),
?assert(helper_common:extract_length_coded_integer(<<250:8, 1:80>>) =:= {250, <<1:80>>}),
?assert(helper_common:extract_length_coded_integer(<<251:8, 1:80>>) =:= {null, <<1:80>>}),
?assert(helper_common:extract_length_coded_integer(<<252:8, 77:16/little-integer, 1:80>>) =:= {77, <<1:80>>}),
?assert(helper_common:extract_length_coded_integer(<<253:8, 77:24/little-integer, 1:80>>) =:= {77, <<1:80>>}),
?assert(helper_common:extract_length_coded_integer(<<254:8, 77:64/little-integer, 1:80>>) =:= {77, <<1:80>>}),
?assert(helper_common:extract_length_coded_integer(<<255:8, 1:80>>) =:= {0, <<1:80>>}).
extract_length_coded_binary_testing() ->
% ?debug_Msg(">>> extract_length_coded_binary_testing()"),
?assert(helper_common:extract_length_coded(true, <<7:8, 0:56, 77:80>>) =:= {<<0:56>>, <<77:80>>}).
extract_length_coded_string_testing() ->
% ?debug_Msg(">>> extract_length_coded_string_testing()"),
?assert(helper_common:extract_length_coded(false, <<11:8, "test string", 77:80>>) =:= {"test string", <<77:80>>}).
binary_to_datetime_testing() ->
% ?debug_Msg(">>> binary_to_datetime_test()"),
?assertEqual({#mysql_time{year=1945,month=5,day=9,hour=12,minute=33,second=57,second_part=7},<<>>},
helper_common:binary_to_datetime(<<11:8, 1945:16/little-integer, 5:8, 9:8, 12:8, 33:8, 57:8, 7:32/little-integer>>)),
?assertEqual({#mysql_time{year=1954,month=5,day=25,hour=0,minute=0,second=0,second_part=0},<<>>},
helper_common:binary_to_datetime(<<4:8, 1954:16/little-integer, 5:8, 25:8>>)),
?assertEqual({#mysql_time{year=1957,month=10,day=1,hour=23,minute=59,second=4,second_part=0},<<>>},
helper_common:binary_to_datetime(<<7:8, 1957:16/little-integer, 10:8, 1:8, 23:8, 59:8, 4:8>>)).
integer_to_length_coded_binary_testing() ->
% ?debug_Msg(">>> integer_to_length_coded_binary_testing"),
?assert(helper_common:integer_to_length_coded_binary(77) =:= <<77:8>>),
?assert(helper_common:integer_to_length_coded_binary(12753) =:= <<252:8, 12753:16/little-integer>>),
?assert(helper_common:integer_to_length_coded_binary(128345) =:= <<253:8, 128345:24/little-integer>>),
?assert(helper_common:integer_to_length_coded_binary(22378945) =:= <<254:8, 22378945:64/little-integer>>),
?assert(helper_common:integer_to_length_coded_binary(2237894500000000000000) =:=
#mysql_error{type = statement, source="helper_common:integer_to_length_coded_binary/1", message = "Parameter is too long."}).
binary_to_length_coded_binary_testing() ->
% ?debug_Msg(">>> binary_to_length_coded_binary_testing"),
?assert(helper_common:binary_to_length_coded_binary(<<22:40, 33:32, 77:24>>)
=:= <<12:8, 22:40, 33:32, 77:24>>).
string_to_length_coded_binary_testing() ->
% ?debug_Msg(">>> string_to_length_coded_binary_testing"),
?assert(helper_common:string_to_length_coded_binary("test string")
=:= <<11:8, "test string">>).
decimal_to_lc_binary_testing() ->
% ?debug_Msg(">>> decimal_to_lc_binary_testing"),
?assert(helper_common:decimal_to_lc_binary(#mysql_decimal{int = "101", fraction = "202"}) =:= <<7:8, "101.202">>).
datetime_to_lc_binary_testing() ->
% ?debug_Msg(">>> datetime_to_lc_binary_testing"),
?assertEqual(<<11:8, 2011:16/little-integer, 5:8, 4:8, 15:8, 25:8, 45:8, 22:32/little-integer>>,
helper_common:datetime_to_lc_binary(#mysql_time{year = 2011, month = 5, day = 4,
hour = 15, minute = 25, second = 45, second_part = 22})
),
?assertEqual(<<7:8, 2011:16/little-integer, 5:8, 4:8, 15:8, 25:8, 45:8>>,
helper_common:datetime_to_lc_binary(#mysql_time{year = 2011, month = 5, day = 4,
hour = 15, minute = 25, second = 45})
).