]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - test-suite/splay.cc
SourceFormat Enforcement
[thirdparty/squid.git] / test-suite / splay.cc
index 6f0a147fcd20d511d1b3b8760a5731cf54bcc38d..4bed13bb0ede60c789f7018e26c4f8959356290a 100644 (file)
@@ -1,30 +1,24 @@
 /*
- * $Id$
+ * Copyright (C) 1996-2015 The Squid Software Foundation and contributors
  *
+ * Squid software is distributed under GPLv2+ license and includes
+ * contributions from numerous individuals and organizations.
+ * Please see the COPYING and CONTRIBUTORS files for details.
+ */
+
+/*
  * based on ftp://ftp.cs.cmu.edu/user/sleator/splaying/top-down-splay.c
  * http://bobo.link.cs.cmu.edu/cgi-bin/splay/splay-cgi.pl
  */
 
 #include "squid.h"
 
-#if HAVE_STDIO_H
-#include <stdio.h>
-#endif
-#if HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
+#include <cstdlib>
 #if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
 
-#if 0
-#define assert(X) {if (!(X)) exit (1);}
 #include "splay.h"
-#undef assert
-#else
-#include "splay.h"
-#endif
-
 #include "util.h"
 
 class intnode
@@ -142,10 +136,13 @@ main(int argc, char *argv[])
         splayNode *top = NULL;
         squid_srandom(time(NULL));
 
-        for (i = 0; i < 100; i++) {
+        for (i = 0; i < 100; ++i) {
             I = (intnode *)xcalloc(sizeof(intnode), 1);
             I->i = squid_random();
-            top = top->insert(I, compareintvoid);
+            if (top)
+                top = top->insert(I, compareintvoid);
+            else
+                top = new splayNode(static_cast<void*>(new intnode(101)));
         }
 
         SplayCheck::BeginWalk();
@@ -154,17 +151,14 @@ main(int argc, char *argv[])
         SplayCheck::BeginWalk();
         top->walk(SplayCheck::WalkVoid, NULL);
         top->destroy(destintvoid);
-        /* check we don't segfault on NULL splay calls */
-        top = NULL;
-        top->splay((void *)NULL, compareintvoid);
     }
 
     /* test typesafe splay containers */
     {
         /* intnode* */
-        SplayNode<intnode *> *safeTop = NULL;
+        SplayNode<intnode *> *safeTop = new SplayNode<intnode *>(new intnode(101));
 
-        for ( int i = 0; i < 100; i++) {
+        for ( int i = 0; i < 100; ++i) {
             intnode *I;
             I = new intnode;
             I->i = squid_random();
@@ -175,15 +169,12 @@ main(int argc, char *argv[])
         safeTop->walk(SplayCheck::WalkNode, NULL);
 
         safeTop->destroy(destint);
-        /* check we don't segfault on NULL splay calls */
-        safeTop = NULL;
-        safeTop->splay((intnode *)NULL, compareint);
     }
     {
         /* intnode */
-        SplayNode<intnode> *safeTop = NULL;
+        SplayNode<intnode> *safeTop = new SplayNode<intnode>(101);
 
-        for (int i = 0; i < 100; i++) {
+        for (int i = 0; i < 100; ++i) {
             intnode I;
             I.i = squid_random();
             safeTop = safeTop->insert(I, compareintref);
@@ -193,25 +184,23 @@ main(int argc, char *argv[])
         safeTop->walk(SplayCheck::WalkNodeRef, NULL);
 
         safeTop->destroy(destintref);
-        /* check we don't segfault on NULL splay calls */
-        safeTop = NULL;
-        safeTop->splay(intnode(), compareintref);
-        SplayCheck::BeginWalk();
-        safeTop->walk(SplayCheck::WalkNodeRef, NULL);
     }
+
     /* check the check routine */
-    SplayCheck::BeginWalk();
-    intnode I;
-    I.i = 1;
-    /* check we don't segfault on NULL splay calls */
-    SplayCheck::WalkNodeRef(I, NULL);
-    I.i = 0;
-    SplayCheck::ExpectedFail = true;
-    SplayCheck::WalkNodeRef(I, NULL);
+    {
+        SplayCheck::BeginWalk();
+        intnode I;
+        I.i = 1;
+        /* check we don't segfault on NULL splay calls */
+        SplayCheck::WalkNodeRef(I, NULL);
+        I.i = 0;
+        SplayCheck::ExpectedFail = true;
+        SplayCheck::WalkNodeRef(I, NULL);
+    }
 
     {
         /* check for begin() */
-        SplayNode<intnode> *safeTop = NULL;
+        Splay<intnode> *safeTop = new Splay<intnode>();
 
         if (safeTop->start() != NULL)
             exit (1);
@@ -219,20 +208,20 @@ main(int argc, char *argv[])
         if (safeTop->finish() != NULL)
             exit (1);
 
-        for (int i = 0; i < 100; i++) {
+        for (int i = 0; i < 100; ++i) {
             intnode I;
             I.i = squid_random();
 
             if (I.i > 50 && I.i < 10000000)
-                safeTop = safeTop->insert(I, compareintref);
+                safeTop->insert(I, compareintref);
         }
 
         {
             intnode I;
             I.i = 50;
-            safeTop = safeTop->insert (I, compareintref);
+            safeTop->insert (I, compareintref);
             I.i = 10000000;
-            safeTop = safeTop->insert (I, compareintref);
+            safeTop->insert (I, compareintref);
         }
 
         if (!safeTop->start())
@@ -276,5 +265,8 @@ main(int argc, char *argv[])
             exit (1);
     }
 
+    /* TODO: also test the other Splay API */
+
     return 0;
 }
+