2 * Copyright (C) 1996-2017 The Squid Software Foundation and contributors
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.
9 /* DEBUG: section 19 Store Memory Primitives */
12 #include "base/TextException.h"
20 // required on some platforms
22 TextException::FileNameHash(const char *)
31 assert (aHeader
.lowestOffset() == 0);
32 assert (aHeader
.write (StoreIOBuffer()));
33 assert (aHeader
.lowestOffset() == 0);
34 assert (aHeader
.write (StoreIOBuffer(0, 1, (char *)NULL
)));
35 assert (aHeader
.lowestOffset() == 0);
36 char * sampleData
= xstrdup ("A");
37 assert (aHeader
.write (StoreIOBuffer(1, 100, sampleData
)));
38 safe_free (sampleData
);
39 assert (aHeader
.lowestOffset() == 100);
40 assert (aHeader
.endOffset() == 101);
41 sampleData
= xstrdup ("B");
42 assert (aHeader
.write (StoreIOBuffer(1, 10, sampleData
)));
43 safe_free (sampleData
);
44 assert (aHeader
.lowestOffset() == 10);
45 assert (aHeader
.endOffset() == 101);
46 assert (aHeader
.hasContigousContentRange(Range
<int64_t>(10,11)));
47 assert (!aHeader
.hasContigousContentRange(Range
<int64_t>(10,12)));
48 assert (!aHeader
.hasContigousContentRange(Range
<int64_t>(10,101)));
54 Splay
<mem_node
*> aSplay
;
56 temp5
= new mem_node(5);
57 temp5
->nodeBuffer
.length
= 10;
58 aSplay
.insert (temp5
, mem_hdr::NodeCompare
);
59 assert (aSplay
.start()->data
== temp5
);
60 assert (aSplay
.finish()->data
== temp5
);
63 temp0
= new mem_node(0);
64 temp0
->nodeBuffer
.length
= 5;
65 aSplay
.insert (temp0
, mem_hdr::NodeCompare
);
66 assert (aSplay
.start()->data
== temp0
);
67 assert (aSplay
.finish()->data
== temp5
);
70 temp14
= new mem_node (14);
71 temp14
->nodeBuffer
.length
= 1;
72 assert (aSplay
.find(temp14
,mem_hdr::NodeCompare
));
76 assert (!aSplay
.find(&ref13
,mem_hdr::NodeCompare
));
77 ref13
.nodeBuffer
.length
= 1;
78 assert (aSplay
.find(&ref13
,mem_hdr::NodeCompare
));
86 char * sampleData
= xstrdup ("A");
87 assert (aHeader
.write (StoreIOBuffer(1, 100, sampleData
)));
88 safe_free (sampleData
);
89 sampleData
= xstrdup ("B");
90 assert (aHeader
.write (StoreIOBuffer(1, 102, sampleData
)));
91 safe_free (sampleData
);
92 std::ostringstream result
;
93 PointerPrinter
<mem_node
*> foo(result
, "\n");
94 for_each (aHeader
.getNodes().end(), aHeader
.getNodes().end(), foo
);
95 for_each (aHeader
.getNodes().begin(), aHeader
.getNodes().begin(), foo
);
96 for_each (aHeader
.getNodes().begin(), aHeader
.getNodes().end(), foo
);
97 std::ostringstream expectedResult
;
98 expectedResult
<< "[100,101)" << std::endl
<< "[102,103)" << std::endl
;
99 assert (result
.str() == expectedResult
.str());
105 assert (mem_node::InUseCount() == 0);
107 assert (mem_node::InUseCount() == 0);
109 assert (mem_node::InUseCount() == 0);
111 assert (mem_node::InUseCount() == 0);