]> git.ipfire.org Git - thirdparty/squid.git/blame - test-suite/mem_hdr_test.cc
Source Format Enforcement (#763)
[thirdparty/squid.git] / test-suite / mem_hdr_test.cc
CommitLineData
4c50505b 1/*
f70aedc4 2 * Copyright (C) 1996-2021 The Squid Software Foundation and contributors
26ac0430 3 *
4e0938ef
AJ
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
4c50505b 7 */
8
4e0938ef
AJ
9/* DEBUG: section 19 Store Memory Primitives */
10
582c2af2 11#include "squid.h"
602d9612
A
12#include "Generic.h"
13#include "mem_node.h"
14#include "stmem.h"
4c50505b 15
27e059d4 16#include <iostream>
42b1a665 17#include <sstream>
27e059d4 18
4c50505b 19void
20testLowAndHigh()
21{
22 mem_hdr aHeader;
23 assert (aHeader.lowestOffset() == 0);
24 assert (aHeader.write (StoreIOBuffer()));
25 assert (aHeader.lowestOffset() == 0);
4bb92fe0 26 assert (aHeader.write (StoreIOBuffer(0, 1, (char *)NULL)));
4c50505b 27 assert (aHeader.lowestOffset() == 0);
28 char * sampleData = xstrdup ("A");
29 assert (aHeader.write (StoreIOBuffer(1, 100, sampleData)));
30 safe_free (sampleData);
31 assert (aHeader.lowestOffset() == 100);
32 assert (aHeader.endOffset() == 101);
33 sampleData = xstrdup ("B");
34 assert (aHeader.write (StoreIOBuffer(1, 10, sampleData)));
35 safe_free (sampleData);
36 assert (aHeader.lowestOffset() == 10);
37 assert (aHeader.endOffset() == 101);
58b8859e 38 assert (aHeader.hasContigousContentRange(Range<int64_t>(10,11)));
39 assert (!aHeader.hasContigousContentRange(Range<int64_t>(10,12)));
40 assert (!aHeader.hasContigousContentRange(Range<int64_t>(10,101)));
4c50505b 41}
42
42a503bd 43void
44testSplayOfNodes()
45{
46 Splay<mem_node *> aSplay;
47 mem_node *temp5;
48 temp5 = new mem_node(5);
49 temp5->nodeBuffer.length = 10;
50 aSplay.insert (temp5, mem_hdr::NodeCompare);
51 assert (aSplay.start()->data == temp5);
ccd33084 52 assert (aSplay.finish()->data == temp5);
42a503bd 53
54 mem_node *temp0;
55 temp0 = new mem_node(0);
56 temp0->nodeBuffer.length = 5;
57 aSplay.insert (temp0, mem_hdr::NodeCompare);
58 assert (aSplay.start()->data == temp0);
ccd33084 59 assert (aSplay.finish()->data == temp5);
42a503bd 60
61 mem_node *temp14;
62 temp14 = new mem_node (14);
63 temp14->nodeBuffer.length = 1;
64 assert (aSplay.find(temp14,mem_hdr::NodeCompare));
47c5b158 65 delete temp14;
42a503bd 66
67 mem_node ref13 (13);
68 assert (!aSplay.find(&ref13,mem_hdr::NodeCompare));
69 ref13.nodeBuffer.length = 1;
70 assert (aSplay.find(&ref13,mem_hdr::NodeCompare));
025490ed 71 aSplay.destroy();
42a503bd 72}
73
ccd33084 74void
75testHdrVisit()
76{
77 mem_hdr aHeader;
78 char * sampleData = xstrdup ("A");
79 assert (aHeader.write (StoreIOBuffer(1, 100, sampleData)));
80 safe_free (sampleData);
81 sampleData = xstrdup ("B");
82 assert (aHeader.write (StoreIOBuffer(1, 102, sampleData)));
83 safe_free (sampleData);
b8bad68c 84 std::ostringstream result;
85 PointerPrinter<mem_node *> foo(result, "\n");
86 for_each (aHeader.getNodes().end(), aHeader.getNodes().end(), foo);
87 for_each (aHeader.getNodes().begin(), aHeader.getNodes().begin(), foo);
88 for_each (aHeader.getNodes().begin(), aHeader.getNodes().end(), foo);
89 std::ostringstream expectedResult;
90 expectedResult << "[100,101)" << std::endl << "[102,103)" << std::endl;
91 assert (result.str() == expectedResult.str());
ccd33084 92}
93
4c50505b 94int
72ed5979 95main(int, char *[])
4c50505b 96{
47c5b158 97 assert (mem_node::InUseCount() == 0);
4c50505b 98 testLowAndHigh();
99 assert (mem_node::InUseCount() == 0);
42a503bd 100 testSplayOfNodes();
47c5b158 101 assert (mem_node::InUseCount() == 0);
ccd33084 102 testHdrVisit();
103 assert (mem_node::InUseCount() == 0);
24885773 104 return EXIT_SUCCESS;
4c50505b 105}
f53969cc 106