]> git.ipfire.org Git - thirdparty/squid.git/blame - test-suite/MemPoolTest.cc
Fix off by one in snmp subsystem
[thirdparty/squid.git] / test-suite / MemPoolTest.cc
CommitLineData
697079bb 1/*
697079bb 2 * AUTHOR: Robert Collins
3 *
4 * SQUID Web Proxy Cache http://www.squid-cache.org/
5 * ----------------------------------------------------------
6 *
7 * Squid is the result of efforts by numerous individuals from
8 * the Internet community; see the CONTRIBUTORS file for full
9 * details. Many organizations have provided support for Squid's
10 * development; see the SPONSORS file for full details. Squid is
11 * Copyrighted (C) 2001 by the Regents of the University of
12 * California; see the COPYRIGHT file for full details. Squid
13 * incorporates software developed and/or copyrighted by other
14 * sources; see the CREDITS file for full details.
15 *
16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by
18 * the Free Software Foundation; either version 2 of the License, or
19 * (at your option) any later version.
26ac0430 20 *
697079bb 21 * This program is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
26ac0430 25 *
697079bb 26 * You should have received a copy of the GNU General Public License
27 * along with this program; if not, write to the Free Software
28 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
29 *
30 * Copyright (c) 2003, Robert Collins <robertc@squid-cache.org>
31 */
32
582c2af2 33#include "squid.h"
ed07aba1 34
fbc04c0a 35#if USE_MEMPOOLS
ed07aba1 36
697079bb 37#include "MemPool.h"
27e059d4 38
697079bb 39#include <iostream>
40
41/* TODO: put this in a libTest */
42void
43xassert(const char *msg, const char *file, int line)
44{
45 std::cout << "Assertion failed: (" << msg << ") at " << file << ":" << line << std::endl;
46 exit (1);
47}
697079bb 48
26ac0430
AJ
49class MemPoolTest
50{
697079bb 51public:
26ac0430 52 void run();
697079bb 53private:
26ac0430
AJ
54 class SomethingToAlloc
55 {
56 public:
57 int aValue;
58 };
59 static MemAllocator *Pool;
697079bb 60};
04eb0689 61MemAllocator *MemPoolTest::Pool = NULL;
697079bb 62
63void
64MemPoolTest::run()
65{
66 assert (Pool == NULL);
04eb0689 67 Pool = memPoolCreate("Test Pool", sizeof(SomethingToAlloc));
697079bb 68 assert (Pool);
b001e822 69 SomethingToAlloc *something = static_cast<SomethingToAlloc *>(Pool->alloc());
697079bb 70 assert (something);
71 assert (something->aValue == 0);
72 something->aValue = 5;
dc47f531 73 Pool->freeOne(something);
b001e822 74 SomethingToAlloc *otherthing = static_cast<SomethingToAlloc *>(Pool->alloc());
697079bb 75 assert (otherthing == something);
76 assert (otherthing->aValue == 0);
dc47f531 77 Pool->freeOne(otherthing);
b001e822 78 delete Pool;
697079bb 79}
80
fbc04c0a 81#endif /* USE_MEMPOOLS */
ed07aba1 82
697079bb 83int
b610642c 84main (int argc, char **argv)
697079bb 85{
fbc04c0a 86#if USE_MEMPOOLS
697079bb 87 MemPoolTest aTest;
88 aTest.run();
ed07aba1 89#endif
697079bb 90 return 0;
91}
92