#include
#include "cpp11/external_pointer.hpp"
#include
bool deleted = false;
void deleter(int* ptr) {
deleted = true;
delete ptr;
}
context("external_pointer-C++") {
test_that("external_pointer works") {
std::vector* v = new std::vector;
v->push_back(1);
v->push_back(2);
cpp11::external_pointer p(v);
expect_true(p->at(0) == 1);
expect_true(p->at(1) == 2);
p.release();
// Double release should be a no-op
p.release();
expect_true(p.get() == nullptr);
}
test_that("external_pointer works with a custom deleter") {
deleted = false;
cpp11::external_pointer uniq(new int);
expect_true(deleted == false);
uniq.reset();
expect_true(deleted == true);
}
}