From eeb22164255cd4976f76f2a6913a572fc7269876 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Staff=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Thu, 27 Sep 2018 14:53:12 +0900 Subject: [PATCH] [coco] Unlink Use on destruction (#1649) This commit revises Use's destructor to unlink itself from linked Object (if exists). Signed-off-by: Jonghyun Park --- contrib/coco/core/include/coco/IR/Use.h | 3 +++ contrib/coco/core/src/IR/Use.test.cpp | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/contrib/coco/core/include/coco/IR/Use.h b/contrib/coco/core/include/coco/IR/Use.h index c067c92..6538293 100644 --- a/contrib/coco/core/include/coco/IR/Use.h +++ b/contrib/coco/core/include/coco/IR/Use.h @@ -18,6 +18,9 @@ public: } public: + ~Use() { value(nullptr); } + +public: Object *value(void) const { return _value; } public: diff --git a/contrib/coco/core/src/IR/Use.test.cpp b/contrib/coco/core/src/IR/Use.test.cpp index 35de56b..ea9e01e 100644 --- a/contrib/coco/core/src/IR/Use.test.cpp +++ b/contrib/coco/core/src/IR/Use.test.cpp @@ -5,8 +5,12 @@ #include "Consumer.mock.h" +#include + #include +using nncc::foundation::make_unique; + namespace { class UseTest : public ::testing::Test @@ -50,3 +54,17 @@ TEST_F(UseTest, value) ASSERT_EQ(o->uses()->size(), 0); } + +TEST_F(UseTest, destructor) +{ + ::mock::Consumer consumer; + + auto o = obj_mgr.create(nncc::core::ADT::feature::Shape{1, 1, 1}); + auto use = make_unique(&consumer); + + use->value(o); + use.reset(); + + // ~Use SHOULD unlink itself from linked Object (if exists) + ASSERT_EQ(o->uses()->size(), 0); +} -- 2.7.4