memory/deleter: add trivial test case
This commit is contained in:
parent
00f6f614be
commit
4556745d77
@ -428,6 +428,7 @@ TEST_BIN = \
|
|||||||
test/json_types \
|
test/json_types \
|
||||||
test/memory/buffer/circular \
|
test/memory/buffer/circular \
|
||||||
test/memory/buffer/paged \
|
test/memory/buffer/paged \
|
||||||
|
test/memory/deleter \
|
||||||
test/maths \
|
test/maths \
|
||||||
test/matrix \
|
test/matrix \
|
||||||
test/md2 \
|
test/md2 \
|
||||||
|
50
test/memory/deleter.cpp
Normal file
50
test/memory/deleter.cpp
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#include "memory/deleter.hpp"
|
||||||
|
#include "tap.hpp"
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
|
||||||
|
struct setter {
|
||||||
|
setter (bool &_flag):
|
||||||
|
flag (_flag)
|
||||||
|
{ ; }
|
||||||
|
|
||||||
|
void release (unsigned *)
|
||||||
|
{ flag = true; }
|
||||||
|
|
||||||
|
bool &flag;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
main (void)
|
||||||
|
{
|
||||||
|
bool flag = false;
|
||||||
|
|
||||||
|
{
|
||||||
|
// setup a pretend resource. we're not going to delete it, it's just
|
||||||
|
// to satisfy some required parameters. importantly it can't be null
|
||||||
|
// otherwise release is skipped.
|
||||||
|
unsigned *foo = reinterpret_cast<unsigned*> (0x01);
|
||||||
|
|
||||||
|
// setup the owner who will set a flag when the release operation is
|
||||||
|
// called
|
||||||
|
setter bar (flag);
|
||||||
|
|
||||||
|
// setup our non-default unique_ptr
|
||||||
|
std::unique_ptr<
|
||||||
|
unsigned,
|
||||||
|
util::memory::owner_deleter<
|
||||||
|
unsigned,
|
||||||
|
setter,
|
||||||
|
&setter::release
|
||||||
|
>
|
||||||
|
> qux (foo, bar);
|
||||||
|
}
|
||||||
|
|
||||||
|
// the flag should have been implicitly set to true via the unique_ptr
|
||||||
|
// callback above
|
||||||
|
util::TAP::logger tap;
|
||||||
|
tap.expect (flag, "owner_deleter calls registered callback");
|
||||||
|
return tap.status ();
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user