blob: 6d6e6a792ceb623934c4672dc5a236b285874c9f [file] [log] [blame]
% 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.
-module(couch_compress_tests).
-include_lib("couch/include/couch_eunit.hrl").
-include_lib("couch/include/couch_db.hrl").
-define(TERM, {[{a, 1}, {b, 2}, {c, 3}, {d, 4}, {e, 5}]}).
-define(NONE, <<131,104,1,108,0,0,0,5,104,2,100,0,1,97,97,1,
104,2,100,0,1,98,97,2,104,2,100,0,1,99,97,3,104,2,100,0,
1,100,97,4,104,2,100,0,1,101,97,5,106>>).
-define(DEFLATE, <<131,80,0,0,0,48,120,218,203,96,204,97,96,
96,96,205,96,74,97,96,76,76,100,4,211,73,137,76,96,58,57,
145,25,76,167,36,178,128,233,212,68,214,44,0,212,169,9,51>>).
-define(SNAPPY, <<1,49,64,131,104,1,108,0,0,0,5,104,2,100,0,
1,97,97,1,104,1,8,8,98,97,2,5,8,8,99,97,3,5,8,44,100,97,
4,104,2,100,0,1,101,97,5,106>>).
-define(CORRUPT, <<2,12,85,06>>).
compress_test_() ->
[
?_assertEqual(?NONE, couch_compress:compress(?TERM, none)),
?_assertEqual(?DEFLATE, couch_compress:compress(?TERM, {deflate, 9})),
?_assertEqual(?SNAPPY, couch_compress:compress(?TERM, snappy))
].
decompress_test_() ->
[
?_assertEqual(?TERM, couch_compress:decompress(?NONE)),
?_assertEqual(?TERM, couch_compress:decompress(?DEFLATE)),
?_assertEqual(?TERM, couch_compress:decompress(?SNAPPY)),
?_assertError(invalid_compression, couch_compress:decompress(?CORRUPT))
].
recompress_test_() ->
[
?_assertEqual(?DEFLATE, couch_compress:compress(?NONE, {deflate, 9})),
?_assertEqual(?SNAPPY, couch_compress:compress(?NONE, snappy)),
?_assertEqual(?NONE, couch_compress:compress(?DEFLATE, none)),
?_assertEqual(?SNAPPY, couch_compress:compress(?DEFLATE, snappy)),
?_assertEqual(?NONE, couch_compress:compress(?SNAPPY, none)),
?_assertEqual(?DEFLATE, couch_compress:compress(?SNAPPY, {deflate, 9}))
].
is_compressed_test_() ->
[
?_assert(couch_compress:is_compressed(?NONE, none)),
?_assert(couch_compress:is_compressed(?DEFLATE, {deflate, 9})),
?_assert(couch_compress:is_compressed(?SNAPPY, snappy)),
?_assertNot(couch_compress:is_compressed(?NONE, {deflate, 0})),
?_assertNot(couch_compress:is_compressed(?NONE, {deflate, 9})),
?_assertNot(couch_compress:is_compressed(?NONE, snappy)),
?_assertNot(couch_compress:is_compressed(?DEFLATE, none)),
?_assertNot(couch_compress:is_compressed(?DEFLATE, snappy)),
?_assertNot(couch_compress:is_compressed(?SNAPPY, none)),
?_assertNot(couch_compress:is_compressed(?SNAPPY, {deflate, 9})),
?_assertError(invalid_compression,
couch_compress:is_compressed(?CORRUPT, none)),
?_assertError(invalid_compression,
couch_compress:is_compressed(?CORRUPT, {deflate, 9})),
?_assertError(invalid_compression,
couch_compress:is_compressed(?CORRUPT, snappy))
].