]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - test-suite/splay.cc
SourceFormat Enforcement
[thirdparty/squid.git] / test-suite / splay.cc
index 0ee0613b86c42bf36d9e44d7efa00411cc21b604..4bed13bb0ede60c789f7018e26c4f8959356290a 100644 (file)
@@ -1,33 +1,31 @@
 /*
- * $Id: splay.cc,v 1.6 2003/09/22 03:31:02 robertc Exp $
+ * 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 "config.h"
+#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
 
-#define assert(X) {if (!(X)) exit (1);}
 #include "splay.h"
-#undef assert
 #include "util.h"
 
-
 class intnode
 {
 
 public:
-    intnode() : i(0){}
+    intnode() : i(0) {}
 
     intnode (int anInt) : i (anInt) {}
 
@@ -136,35 +134,34 @@ main(int argc, char *argv[])
         intnode *I;
         /* test void * splay containers */
         splayNode *top = NULL;
-        srandom(time(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 = random();
-            top = splay_insert(I, top, compareintvoid);
+            I->i = squid_random();
+            if (top)
+                top = top->insert(I, compareintvoid);
+            else
+                top = new splayNode(static_cast<void*>(new intnode(101)));
         }
 
         SplayCheck::BeginWalk();
-        splay_walk(top, SplayCheck::WalkVoid, NULL);
+        top->walk(SplayCheck::WalkVoid, NULL);
 
         SplayCheck::BeginWalk();
         top->walk(SplayCheck::WalkVoid, NULL);
         top->destroy(destintvoid);
-        /* check we don't segfault on NULL splay calls */
-        top = NULL;
-        top->splay(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 = random();
+            I->i = squid_random();
             safeTop = safeTop->insert(I, compareint);
         }
 
@@ -172,18 +169,14 @@ 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(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 = random();
+            I.i = squid_random();
             safeTop = safeTop->insert(I, compareintref);
         }
 
@@ -191,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);
@@ -217,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 = random();
+            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())
@@ -274,5 +265,8 @@ main(int argc, char *argv[])
             exit (1);
     }
 
+    /* TODO: also test the other Splay API */
+
     return 0;
 }
+