| #!/usr/bin/env escript |
| %% -*- erlang -*- |
| |
| % 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. |
| |
| main(_) -> |
| test_util:init_code_path(), |
| application:start(crypto), |
| |
| etap:plan(14), |
| case (catch test()) of |
| ok -> |
| etap:end_tests(); |
| Other -> |
| etap:diag(io_lib:format("Test died abnormally: ~p", [Other])), |
| etap:bail(Other) |
| end, |
| ok. |
| |
| test() -> |
| % to_existing_atom |
| etap:is(true, couch_util:to_existing_atom(true), "An atom is an atom."), |
| etap:is(foo, couch_util:to_existing_atom(<<"foo">>), |
| "A binary foo is the atom foo."), |
| etap:is(foobarbaz, couch_util:to_existing_atom("foobarbaz"), |
| "A list of atoms is one munged atom."), |
| |
| % implode |
| etap:is([1, 38, 2, 38, 3], couch_util:implode([1,2,3],"&"), |
| "use & as separator in list."), |
| |
| % trim |
| Strings = [" foo", "foo ", "\tfoo", " foo ", "foo\t", "foo\n", "\nfoo"], |
| etap:ok(lists:all(fun(S) -> couch_util:trim(S) == "foo" end, Strings), |
| "everything here trimmed should be foo."), |
| |
| % abs_pathname |
| {ok, Cwd} = file:get_cwd(), |
| etap:is(Cwd ++ "/foo", couch_util:abs_pathname("./foo"), |
| "foo is in this directory."), |
| |
| % should_flush |
| etap:ok(not couch_util:should_flush(), |
| "Not using enough memory to flush."), |
| AcquireMem = fun() -> |
| IntsToAGazillion = lists:seq(1, 200000), |
| LotsOfData = lists:map( |
| fun(Int) -> {Int, <<"foobar">>} end, |
| lists:seq(1, 500000)), |
| etap:ok(couch_util:should_flush(), |
| "Allocation 200K tuples puts us above the memory threshold.") |
| end, |
| AcquireMem(), |
| |
| etap:ok(not couch_util:should_flush(), |
| "Checking to flush invokes GC."), |
| |
| % verify |
| etap:is(true, couch_util:verify("It4Vooya", "It4Vooya"), |
| "String comparison."), |
| etap:is(false, couch_util:verify("It4VooyaX", "It4Vooya"), |
| "String comparison (unequal lengths)."), |
| etap:is(true, couch_util:verify(<<"ahBase3r">>, <<"ahBase3r">>), |
| "Binary comparison."), |
| etap:is(false, couch_util:verify(<<"ahBase3rX">>, <<"ahBase3r">>), |
| "Binary comparison (unequal lengths)."), |
| etap:is(false, couch_util:verify(nil, <<"ahBase3r">>), |
| "Binary comparison with atom."), |
| |
| ok. |