diff --git a/test/bear_test.erl b/test/bear_test.erl
new file mode 100644
index 0000000..10d447c
--- /dev/null
+++ b/test/bear_test.erl
@@ -0,0 +1,232 @@
+%%%
+%%% Copyright 2013, Rodolphe Quiedeville <rodolphe@quiedeville.org>
+%%%
+%%% 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.
+%%%
+
+%%% ====================================================================
+%%% file : bear_test.erl
+%%% @author : Rodolphe Quiedeville <rodolphe@quiedeville.org>
+%%% @doc
+%%% Unit test for functions defined in bear.erl
+%%% @end
+%%% ====================================================================
+-module(bear_test).
+
+-compile(export_all).
+
+-record(scan_result, {n=0, sumX=0, sumXX=0, sumInv=0, sumLog, max, min}).
+-record(scan_result2, {x2=0, x3=0, x4=0}).
+
+-include_lib("eunit/include/eunit.hrl").
+
+-define(PRECISION, 1.0e15).
+
+get_statistics_1_empty_test() ->
+    %% get_statistics/1
+    %% Empty set of values
+    Percentile = [{50, 0.0},{75, 0.0},{90, 0.0},{95, 0.0},{99, 0.0},{999, 0.0}],
+    Stats = bear:get_statistics([]),
+    ?assertEqual({min, 0.0}, lists:keyfind(min, 1, Stats)),
+    ?assertEqual({max, 0.0}, lists:keyfind(max, 1, Stats)),
+    ?assertEqual({arithmetic_mean, 0.0}, lists:keyfind(arithmetic_mean, 1, Stats)),
+    ?assertEqual({geometric_mean, 0.0}, lists:keyfind(geometric_mean, 1, Stats)),
+    ?assertEqual({harmonic_mean, 0.0}, lists:keyfind(harmonic_mean, 1, Stats)),
+    ?assertEqual({median, 0.0}, lists:keyfind(median, 1, Stats)),
+    ?assertEqual({variance, 0.0}, lists:keyfind(variance, 1, Stats)),
+    ?assertEqual({standard_deviation, 0.0}, lists:keyfind(standard_deviation, 1, Stats)),
+    ?assertEqual({skewness, 0.0}, lists:keyfind(skewness, 1, Stats)),
+    ?assertEqual({kurtosis, 0.0}, lists:keyfind(kurtosis, 1, Stats)),
+    ?assertEqual({percentile, Percentile}, lists:keyfind(percentile, 1, Stats)),
+    ?assertEqual({histogram, [{0,0}]}, lists:keyfind(histogram, 1, Stats)),
+    ?assertEqual({n, 0}, lists:keyfind(n, 1, Stats)).
+
+get_statistics_1_regular_test() ->
+    %% get_statistics/1
+    %% Non empty set of values
+    Percentile = [{50, 5},{75, 8},{90, 9},{95, 10},{99, 10},{999, 10}],
+    Stats = bear:get_statistics(lists:seq(1,10)),
+
+    {geometric_mean, Geometric} = lists:keyfind(geometric_mean, 1, Stats),
+    {harmonic_mean, Harmonic} = lists:keyfind(harmonic_mean, 1, Stats),
+    {variance, Variance} = lists:keyfind(variance, 1, Stats),
+    {standard_deviation, StandardDeviation} = lists:keyfind(standard_deviation, 1, Stats),
+    {kurtosis, Kurtosis} = lists:keyfind(kurtosis, 1, Stats),
+
+    ?assertEqual({min, 1}, lists:keyfind(min, 1, Stats)),
+    ?assertEqual({max, 10}, lists:keyfind(max, 1, Stats)),
+    ?assertEqual({arithmetic_mean, 5.5}, lists:keyfind(arithmetic_mean, 1, Stats)),
+    ?assertEqual(4528728688116766, erlang:trunc(?PRECISION * Geometric)),
+    ?assertEqual(3414171521474055, erlang:trunc(?PRECISION * Harmonic)),
+    ?assertEqual({median, 5}, lists:keyfind(median, 1, Stats)),
+    ?assertEqual(9166666666666666, erlang:trunc(?PRECISION * Variance)),
+    ?assertEqual(3027650354097491, erlang:trunc(?PRECISION * StandardDeviation)),
+    ?assertEqual({skewness, 0.0}, lists:keyfind(skewness, 1, Stats)),
+    ?assertEqual(-1561636363636363, erlang:trunc(?PRECISION * Kurtosis)),
+    ?assertEqual({percentile, Percentile}, lists:keyfind(percentile, 1, Stats)),
+    ?assertEqual({histogram, [{6,6},{11,4},{16,0}]}, lists:keyfind(histogram, 1, Stats)),
+    ?assertEqual({n, 10}, lists:keyfind(n, 1, Stats)).
+
+get_statistics_2_1_test() ->
+    %% get_statistics/2
+    %% First set of values is empty
+    Stats = bear:get_statistics(lists:seq(1,10), []),
+    ?assertEqual(0.0, Stats).
+
+get_statistics_3_test() ->
+    %% get_statistics/2
+    %% Second set of values is empty
+    Stats = bear:get_statistics([], lists:seq(1,10)),
+    ?assertEqual(0.0, Stats).
+
+get_statistics_4_test() ->
+    %% get_statistics/2
+    %% Two set of values with different sizes
+    Stats = bear:get_statistics(lists:seq(1,10),lists:seq(1,20)),
+    ?assertEqual(0.0, Stats).
+
+get_statistics_5_test() ->
+    %% get_statistics/2
+    %% Two set of values are valid
+    Stats = bear:get_statistics(lists:seq(0,10),lists:seq(4,24,2)),
+    ?assertEqual({covariance, 20.0}, lists:keyfind(covariance, 1, Stats)),
+    ?assertEqual({tau, 1.0}, lists:keyfind(tau, 1, Stats)),
+    ?assertEqual({rho, 1.0}, lists:keyfind(rho, 1, Stats)),
+    ?assertEqual({r, 1.0}, lists:keyfind(r, 1, Stats)).
+
+scan_values_test() ->
+    ?assertEqual(#scan_result{n=8}, bear:scan_values([], #scan_result{n=8})),
+    ?assertEqual(#scan_result{n=1,sumX=1,sumXX=1,sumInv=1.0,sumLog=0.0,max=1,min=1}, bear:scan_values([1])),
+    ?assertEqual(#scan_result{n=4,sumX=10,sumXX=30,sumInv=2.083333333333333,sumLog=3.1780538303479453,max=4,min=1},
+                 bear:scan_values([1,3,2,4])).
+
+scan_values2_test() ->
+    ?assertEqual(#scan_result{n=8}, bear:scan_values2([], 3, #scan_result{n=8})),
+    ?assertEqual(#scan_result2{x2=6.6875,x3=-13.359375,x4=28.07421875}, bear:scan_values2([4,3,5], #scan_result{n=8,sumX=42})).
+
+revsort_test() ->
+    ?assertEqual([], bear:revsort([])),
+    ?assertEqual([4,3,2], bear:revsort([3,2,4])).
+
+arithmetic_mean_test() ->
+    ?assertEqual(10.0, bear:arithmetic_mean(#scan_result{n=4, sumX=40})).
+
+geometric_mean_test() ->
+    ?assertEqual(25.790339917193062, bear:geometric_mean(#scan_result{n=4, sumLog=13})).
+
+harmonic_mean_test() ->
+    ?assertEqual(0, bear:harmonic_mean(#scan_result{n=100, sumInv=0})),
+    ?assertEqual(10.0, bear:harmonic_mean(#scan_result{n=100, sumInv=10})).
+
+percentile_test() ->
+    ?assertEqual(3, bear:percentile([1,2,3,4,5], #scan_result{n=5},0.5)),
+    ?assertEqual(5, bear:percentile([1,2,3,4,5], #scan_result{n=5},0.95)).
+
+variance_test() ->
+    ?assertEqual(7.0, bear:variance(#scan_result{n=7},#scan_result2{x2=42})).
+
+std_deviation_test() ->
+    ?assertEqual(3.0, bear:std_deviation(#scan_result{n=10},#scan_result2{x2=81})).
+
+skewness_test() ->
+    ?assertEqual(0.0, bear:skewness(#scan_result{n=10},#scan_result2{x2=0,x3=81})),
+    ?assertEqual(3.0, bear:skewness(#scan_result{n=10},#scan_result2{x2=81,x3=810})).
+
+kurtosis_test() ->
+    ?assertEqual(0.0, bear:kurtosis(#scan_result{n=10},#scan_result2{x2=0,x4=81})),
+    ?assertEqual(-2.0, bear:kurtosis(#scan_result{n=10},#scan_result2{x2=81,x4=810})).
+
+update_bin_1_test() ->
+    %% with empty dict
+    Dict = dict:new(),
+    C = bear:update_bin(4, [4], Dict),
+    ?assertEqual(1, dict:fetch(4, C)).
+
+get_covariance_test() ->
+    %% Array 1 is too short
+    ?assertEqual(0.0, bear:get_covariance([], [2,1,2,3,4,5,6])),
+    %% Array 2 is too short
+    ?assertEqual(0.0, bear:get_covariance([1,2,3,4,5,6], [])),
+    %% diffenrent arry length
+    ?assertEqual(0.0, bear:get_covariance([1,2,3,4,5,6], [1,2,3,4,5,6,7])),
+    %% Usual case
+    ?assertEqual(-30944444444444444, erlang:trunc(?PRECISION * bear:get_covariance([11,2,3,41,5,9], [34,2,23,4,5,6]))).
+
+ranks_of_test() ->
+    ?assertEqual([4.0,3.0,1.0,2.0], bear:ranks_of([3,4,15,6])).
+
+get_pearson_correlation_test() ->
+    ?assertEqual(0.0, bear:get_pearson_correlation([], 42)),
+    ?assertEqual(0.0, bear:get_pearson_correlation(42, [])),
+    ?assertEqual(0.0, bear:get_pearson_correlation(lists:seq(1,10), lists:seq(1,11))),
+    ?assertEqual(1.0, bear:get_pearson_correlation(lists:seq(1,10), lists:seq(1,10))),
+    ?assertEqual(1.0, bear:get_pearson_correlation(lists:seq(0,10), lists:seq(5,15))),
+    ?assertEqual(1.0, bear:get_pearson_correlation(lists:seq(40,60,2), lists:seq(10,20))).
+
+
+round_bin_test() ->
+    ?assertEqual(10, bear:round_bin(10)),
+    ?assertEqual(10, bear:round_bin(10, 5)),
+    ?assertEqual(42, bear:round_bin(15, 42)),
+    ?assertEqual(45, bear:round_bin(42, 15)).
+
+get_bin_width_test() ->
+    ?assertEqual(1, bear:get_bin_width(0, 10)),
+    ?assertEqual(22, bear:get_bin_width(10.0, 4.0)).
+
+get_bin_count_test() ->
+    ?assertEqual(3, bear:get_bin_count(9, 15, 3)),
+    ?assertEqual(4, bear:get_bin_count(10.2, 20.2, 4)).
+
+get_kendall_correlation_test()->
+    ?assertEqual(0.0, bear:get_kendall_correlation([], [])),
+    ?assertEqual(0.0, bear:get_kendall_correlation([], [1,2,3,4,5,6,7])),
+    ?assertEqual(0.0, bear:get_kendall_correlation([1,2,3,4,5,6,7],[])),
+    ?assertEqual(0.0, bear:get_kendall_correlation(lists:seq(1,10),lists:seq(1,11))),
+    ?assertEqual(1.0, bear:get_kendall_correlation([1,2,3,4,5,6,7], [2,3,4,5,6,7,9])).
+
+get_spearman_correlation_test()->
+    ?assertEqual(0.0, bear:get_spearman_correlation([], [])),
+    ?assertEqual(0.0, bear:get_spearman_correlation([], [1,2,3,4,5,6,7])),
+    ?assertEqual(0.0, bear:get_spearman_correlation([1,2,3,4,5,6,7],[])),
+    ?assertEqual(0.0, bear:get_spearman_correlation(lists:seq(1,10),lists:seq(1,11))),
+    ?assertEqual(1.0, bear:get_spearman_correlation([1,2,3,4,5,6,7], [2,3,4,5,6,7,9])).
+
+
+math_log_test() ->
+    ?assertEqual(1, bear:math_log(0)),
+    ?assertEqual(1.0, bear:math_log(0.0)),
+    ?assertEqual(3737669618283368, erlang:trunc(?PRECISION * bear:math_log(42))).
+
+inverse_test() ->
+    ?assertEqual(0, bear:inverse(0)),
+    ?assertEqual(0.0, bear:inverse(0.0)),
+    ?assertEqual(0.5, bear:inverse(2)).
+
+get_hist_bins_test() ->
+    ?assertEqual([4], bear:get_hist_bins(1, 4, 5, 10)).
+
+tied_ordered_ranking_test() ->
+    ?assertEqual([3,2,1], bear:tied_ordered_ranking([], [], [1,2,3])).
+
+kendall_right_off_test() ->
+    %% empty array
+    ?assertEqual("654321", bear:kendall_right_of([],"123456")).
+
+tied_add_prev_test() ->
+    ?assertEqual([{2.5,5},{2.5,5},{2.5,5},{2.5,5},{2,3}], bear:tied_add_prev([{2, 3}], {[1,2,3,4], 5})).
+
+tied_rank_worker_test() ->
+    ?assertEqual([{2.0,5},{2.0,5},{2.0,5},{2.0,5}], bear:tied_rank_worker([], [{2.0,5}], {[1,2,3], 5})),
+    ?assertEqual([{2.0,5},{2.0,5},{2.0,5},{2.0,5},{2.0,5},{2.0,5}],
+                 bear:tied_rank_worker([{2.0,5},{2.0,5}], [{2.0,5}], {[1,2,3], 5})).
