added isnumber.c testcase which checks the isNumber() and
authorEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Sun, 22 Jan 2006 11:19:47 +0000 (11:19 +0000)
committerEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Sun, 22 Jan 2006 11:19:47 +0000 (11:19 +0000)
isNumberUnsigned() methods

git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2254 94cd875c-1c1d-0410-91d2-eb244daf1a30

util-vserver/lib_internal/testsuite/Makefile-files
util-vserver/lib_internal/testsuite/isnumber.c [new file with mode: 0644]

index aef50ae..8aff7b1 100644 (file)
@@ -20,9 +20,11 @@ check_PROGRAMS +=            lib_internal/testsuite/command
 if ENSC_HAVE_C99_COMPILER
 check_PROGRAMS +=              lib_internal/testsuite/filecfg-ml \
                                lib_internal/testsuite/copy \
+                               lib_internal/testsuite/isnumber \
                                lib_internal/testsuite/sigbus
 TESTS +=                       lib_internal/testsuite/filecfg-ml \
                                lib_internal/testsuite/copy-check \
+                               lib_internal/testsuite/isnumber \
                                lib_internal/testsuite/sigbus
 endif
 
@@ -41,4 +43,7 @@ lib_internal_testsuite_filecfg_ml_LDADD =     $(LIBINTERNAL_GLIBC)
 lib_internal_testsuite_copy_SOURCES =          lib_internal/testsuite/copy.c
 lib_internal_testsuite_copy_LDADD =            $(LIBINTERNAL_GLIBC)
 
+lib_internal_testsuite_isnumber_SOURCES =      lib_internal/testsuite/isnumber.c
+lib_internal_testsuite_isnumber_LDADD =                $(LIBINTERNAL_GLIBC)
+
 lib_internal_testsuite_sigbus_SOURCES =                lib_internal/testsuite/sigbus.c
diff --git a/util-vserver/lib_internal/testsuite/isnumber.c b/util-vserver/lib_internal/testsuite/isnumber.c
new file mode 100644 (file)
index 0000000..7b20763
--- /dev/null
@@ -0,0 +1,80 @@
+// $Id$    --*- c -*--
+
+// Copyright (C) 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+//  
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//  
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//  
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+#define ENSC_TESTSUITE
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include "lib_internal/util.h"
+#include "lib_internal/coreassert.h"
+
+#define TEST_TMPL(FUNC, TYPE, STR, VAL, STRICT)                        \
+  do {                                                         \
+    TYPE       exp = (TYPE)(VAL)!=(TYPE)BAD ? (VAL) : 0;       \
+    bool       val = (TYPE)(VAL)==(TYPE)BAD ? false : true;    \
+    TYPE       tmp;                                            \
+    bool       rc = FUNC((STR), &tmp, (STRICT));               \
+    char const * const UNUSED STR_FUNC    = #FUNC;             \
+    char const * const UNUSED STR_VAL     = #VAL;              \
+    char const * const UNUSED STR_STRICT  = #STRICT;           \
+    assert(rc == val);                                         \
+    rc = FUNC((STR), 0, (STRICT));                             \
+    assert(val == rc);                                         \
+    if (val) assert(tmp == exp);                               \
+  } while (0)
+
+#define TESTS(STR, VAL, STRICT)                        \
+  TEST_TMPL(isNumber, signed long, STR, VAL, STRICT)
+
+#define TESTU(STR, VAL, STRICT)                                        \
+  TEST_TMPL(isNumberUnsigned, unsigned long, STR, VAL, STRICT)
+
+#define TEST(STR, VALS0, VALS1, VALU0, VALU1)  \
+  TESTS(STR, VALS0, true);                     \
+  TESTS(STR, VALS1, false);                    \
+  TESTU(STR, VALU0, true);                     \
+  TESTU(STR, VALU1, false);
+
+
+#define BAD    0xdeadbeaf
+
+int main()
+{
+  TEST( "0",        0,        0,    0,       0);
+  TEST( "1",        1,        1,    1,       1);
+  TEST("-1",       -1,       -1,  BAD,     BAD);
+  TEST( "1k",     BAD,     1000,  BAD,    1000);
+//TEST("-1k",     BAD,    -1000,  BAD,     BAD);
+  TEST( "1K",     BAD,     1024,  BAD,    1024);
+//TEST("-1K",     BAD,    -1024,  BAD,     BAD);
+  TEST( "1m",     BAD,  1000000,  BAD, 1000000);
+//TEST("-1m",     BAD, -1000000,  BAD,     BAD);
+  TEST( "1M",     BAD,  1048576,  BAD, 1048576);
+//TEST("-1M",     BAD, -1048576,  BAD,     BAD);
+  
+  TEST( "010",      8,        8,    8,       8);
+  TEST( "010k",   BAD,     8000,  BAD,    8000);
+  TEST("-010",     -8,       -8,  BAD,     BAD);
+//TEST("-010k",   BAD,     8000,  BAD,     BAD);
+
+  TEST( "0x10",    16,       16,   16,      16);
+  TEST( "0x10k",  BAD,    16000,  BAD,   16000);
+  TEST("-0x10",   -16,      -16,  BAD,     BAD);
+//TEST("-0x10k",  BAD,   -16000,  BAD,     BAD);
+}