[coco] Unlink Use on destruction (#1649)
author박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Thu, 27 Sep 2018 05:53:12 +0000 (14:53 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Thu, 27 Sep 2018 05:53:12 +0000 (14:53 +0900)
This commit revises Use's destructor to unlink itself from linked
Object (if exists).

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
contrib/coco/core/include/coco/IR/Use.h
contrib/coco/core/src/IR/Use.test.cpp

index c067c92..6538293 100644 (file)
@@ -18,6 +18,9 @@ public:
   }
 
 public:
+  ~Use() { value(nullptr); }
+
+public:
   Object *value(void) const { return _value; }
 
 public:
index 35de56b..ea9e01e 100644 (file)
@@ -5,8 +5,12 @@
 
 #include "Consumer.mock.h"
 
+#include <nncc/foundation/Memory.h>
+
 #include <gtest/gtest.h>
 
+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<coco::Use>(&consumer);
+
+  use->value(o);
+  use.reset();
+
+  // ~Use SHOULD unlink itself from linked Object (if exists)
+  ASSERT_EQ(o->uses()->size(), 0);
+}