From: Guillem Jover Date: Sun, 26 May 2013 02:34:57 +0000 (+0200) Subject: test: Add new humanize unit test X-Git-Tag: 0.5.0~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=330b569fe3333f91eb7c0192ab0c5af7e15c616f;p=thirdparty%2Flibbsd.git test: Add new humanize unit test --- diff --git a/test/.gitignore b/test/.gitignore index 0d3e678..9a927b0 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -1,5 +1,6 @@ endian fgetln headers +humanize overlay proctitle diff --git a/test/Makefile.am b/test/Makefile.am index 170d177..73a1e91 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -11,10 +11,12 @@ check_PROGRAMS = \ headers \ overlay \ endian \ + humanize \ fgetln \ proctitle \ $(nil) +humanize_LDFLAGS = $(top_builddir)/src/libbsd.la fgetln_LDFLAGS = $(top_builddir)/src/libbsd.la proctitle_LDFLAGS = $(top_builddir)/src/libbsd.la diff --git a/test/humanize.c b/test/humanize.c new file mode 100644 index 0000000..caa8fec --- /dev/null +++ b/test/humanize.c @@ -0,0 +1,64 @@ +/* + * Copyright © 2013 Guillem Jover + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include + +int +main(int argc, char **argv) +{ + uint64_t uval; + int64_t val; + + assert(expand_number("512", &uval) == 0); + assert(uval == 512); + + assert(expand_number("512b", &uval) == 0); + assert(uval == 512); + + assert(expand_number("10k", &uval) == 0); + assert(uval == 10240); + + assert(expand_number("20M", &uval) == 0); + assert(uval == 20971520); + + assert(dehumanize_number("512", &val) == 0); + assert(val == 512); + + assert(dehumanize_number("512b", &val) == 0); + assert(val == 512); + + assert(dehumanize_number("10k", &val) == 0); + assert(val == 10240); + + assert(dehumanize_number("20M", &val) == 0); + assert(val == 20971520); + + assert(dehumanize_number("-3G", &val) == 0); + assert(val == -3221225472); + + return 0; +}