Example #1
0
 def setUp(self):
     self.dcore = DCore()
     pass
Example #2
0
 def setUp(self):
     self.dcore = DCore()
Example #3
0
class TestDCore(unittest.TestCase):

    def setUp(self):
        self.dcore = DCore()

    def test_create_id(self):
        id_1 = self.dcore.create_id()
        id_2 = self.dcore.create_id()

        self.assertNotEqual(id_1, id_2)

    def test_add_plugin(self):

        pl_id_1 = self.dcore.create_id()
        pl_id_2 = self.dcore.create_id()

        self.dcore.add_plugin(None, 1, None, None, None, pl_id_1)
        self.dcore.add_plugin(None, 2, None, None, None, pl_id_2)

        dp_1 = self.dcore.get_dplugin_by_id(pl_id_1)

        self.assertTrue(isinstance(dp_1, DPlugin))

        self.assertEqual(dp_1.id, pl_id_1)
        dp_2 = self.dcore.get_dplugin_by_id(pl_id_2)
        self.assertTrue(isinstance(dp_2, DPlugin))
        self.assertEqual(dp_2.id, pl_id_2)

        self.assertEqual(self.dcore.get_dplugins_count(), 2)

        self.assertTrue(self.dcore.rm_dplugin(dp_1.id))

        self.assertEqual(self.dcore.get_dplugins_count(), 1)

    def test_rm_dplugin(self):
        #Create dplugins
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_2 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())

        #Create dblocks
        d_bl_1 = DBlock('Block_1')
        d_bl_2 = DBlock('Block_2')

        #assign dblocks to DPlugin d_pl_1
        d_pl_1.add_dblock(d_bl_1)
        d_pl_1.add_dblock(d_bl_2)

        #create subscribtions

        self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_1.name)
        self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_2.name)

        self.assertEqual(len(d_pl_2.get_subscribtions()[d_pl_1.id]), 2)
        self.assertEqual(len(d_bl_1.get_subscribers()), 1)
        self.assertEqual(len(d_bl_2.get_subscribers()), 1)

        self.dcore.rm_dplugin(d_pl_1.id)

        #Check if DPlugin d_pl_1 is missing

        self.assertFalse(self.dcore.get_dplugin_by_id(d_pl_1.id))

        #Check if all subscribtions were canceled

        self.assertEqual(len(d_pl_2.get_subscribtions().keys()), 0)
        self.assertEqual(len(d_bl_1.get_subscribers()), 0)
        self.assertEqual(len(d_bl_2.get_subscribers()), 0)

        pass

    def test_get_dplugin_by_id(self):
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        self.dcore.get_dplugin_by_id(d_pl_1.id)
        self.assertEqual(d_pl_1.id, self.dcore.get_dplugin_by_id(d_pl_1.id).id)

    def test_get_dplugin_by_uname(self):
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_2 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_3 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())

        d_pl_1.uname = "Test1"
        d_pl_2.uname = "Test2"
        d_pl_3.uname = "Test3"

        self.assertEqual("Test1", self.dcore.get_dplugin_by_uname("Test1").uname)
        self.assertEqual("Test2", self.dcore.get_dplugin_by_uname("Test2").uname)
        self.assertEqual("Test3", self.dcore.get_dplugin_by_uname("Test3").uname)

        self.assertIsNone(self.dcore.get_dplugin_by_uname("Test4"))

    def test_get_all_plugins(self):
        self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())

        self.assertEqual(len(self.dcore.get_all_plugins().keys()), 4)

    def test_subscribe(self):
        #Create dplugins
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_2 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())

        #Create dblocks
        d_bl_1 = DBlock('Block_1')
        d_bl_2 = DBlock('Block_2')


        #assign dblocks to DPlugin d_pl_1
        d_pl_1.add_dblock(d_bl_1)
        d_pl_1.add_dblock(d_bl_2)

        self.assertTrue(self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_1.name))
        self.assertTrue(self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_2.name))


        self.assertTrue(d_pl_2.id in d_bl_1.get_subscribers())
        self.assertTrue(d_pl_2.id in d_bl_2.get_subscribers())


    def test_unsubscribe(self):
        #Create dplugins
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_2 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())

        #Create dblocks
        d_bl_1 = DBlock('Block_1')
        d_bl_2 = DBlock('Block_2')


        #assign dblocks to DPlugin d_pl_1
        d_pl_1.add_dblock(d_bl_1)
        d_pl_1.add_dblock(d_bl_2)

        self.assertTrue(self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_1.name))
        self.assertTrue(self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_2.name))

        self.dcore.unsubscribe(d_pl_2.id, d_pl_1.id, d_bl_1.name)
        self.dcore.unsubscribe(d_pl_2.id, d_pl_1.id, d_bl_2.name)

        self.assertFalse(d_pl_2.id in d_bl_1.get_subscribers())
        self.assertFalse(d_pl_2.id in d_bl_1.get_subscribers())
        self.assertEqual(len(d_bl_2.get_subscribers()),0)


    def test_unsubscribe_all(self):
        #Create dplugins
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_2 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_3 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        #Create dblocks
        d_bl_1 = DBlock('Block_1')
        d_bl_2 = DBlock('Block_2')

        #assign dblocks to DPlugin d_pl_1
        d_pl_1.add_dblock(d_bl_1)
        d_pl_1.add_dblock(d_bl_2)

        self.assertTrue(self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_1.name))
        self.assertTrue(self.dcore.subscribe(d_pl_3.id, d_pl_1.id, d_bl_1.name))
        self.assertTrue(self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_2.name))

        print(d_bl_1.get_subscribers())

        self.assertEqual(len(d_pl_2.get_subscribtions()[d_pl_1.id].keys()), 2)

        self.dcore.unsubscribe_all(d_pl_2.id)

        self.assertNotIn(d_pl_1.id, d_pl_2.get_subscribtions())

        print(d_bl_1.get_subscribers())
        self.assertTrue(len(d_bl_1.get_subscribers())==1)
        self.assertTrue(len(d_bl_2.get_subscribers())==0)

        pass

    def test_rm_all_subscribers(self):
        #Create dplugins
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_2 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_3 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())

        #Create dblocks
        d_bl_1 = DBlock('Block_1')
        d_bl_2 = DBlock('Block_2')

        #assign dblocks to DPlugin d_pl_1
        d_pl_1.add_dblock(d_bl_1)
        d_pl_1.add_dblock(d_bl_2)

        self.assertTrue(self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_1.name))
        self.assertTrue(self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_2.name))
        self.assertTrue(self.dcore.subscribe(d_pl_3.id, d_pl_1.id, d_bl_1.name))
        self.assertTrue(self.dcore.subscribe(d_pl_3.id, d_pl_1.id, d_bl_2.name))

        self.assertEqual(len(d_bl_1.get_subscribers()), 2)
        self.assertEqual(len(d_bl_2.get_subscribers()), 2)

        self.dcore.rm_all_subscribers(d_pl_1.id)

        self.assertEqual(len(d_bl_1.get_subscribers()), 0)
        self.assertEqual(len(d_bl_2.get_subscribers()), 0)

        pass

    def test_subscribe_signals(self):
        #Create dplugins
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_2 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_3 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())

        #Create dblocks
        d_bl_1 = DBlock('Block1')
        d_bl_2 = DBlock('Block2')

        #assign dblocks to DPlugin d_pl_1
        d_pl_1.add_dblock(d_bl_1)
        d_pl_1.add_dblock(d_bl_2)

        self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_1.name)
        self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_2.name)
        self.dcore.subscribe(d_pl_3.id, d_pl_1.id, d_bl_1.name)
        self.dcore.subscribe(d_pl_3.id, d_pl_1.id, d_bl_2.name)


        self.assertTrue(self.dcore.subscribe_signals(d_pl_2.id, d_pl_1.id, d_bl_1.name, [1, 2, 3]))

        self.assertTrue(self.dcore.subscribe_signals(d_pl_2.id, d_pl_1.id, d_bl_2.name, [6, 4, 5]))

        self.assertTrue(self.dcore.subscribe_signals(d_pl_3.id, d_pl_1.id, d_bl_1.name, [9]))

        self.assertTrue(self.dcore.subscribe_signals(d_pl_3.id, d_pl_1.id, d_bl_2.name, [17,19,18]))


        subscription = d_pl_2.get_subscribtions()[d_pl_1.id][d_bl_1.name]

        self.assertIn(1, subscription.get_signals())
        self.assertIn(2, subscription.get_signals())
        self.assertIn(3, subscription.get_signals())

        subscription = d_pl_3.get_subscribtions()[d_pl_1.id][d_bl_2.name]

        self.assertIn(19, subscription.get_signals())
        self.assertIn(17, subscription.get_signals())
        self.assertIn(18, subscription.get_signals())

        subscription = d_pl_3.get_subscribtions()[d_pl_1.id][d_bl_1.name]

        self.assertIn(9, subscription.get_signals())


    def test_unsubscribe_signals(self):
        #Create dplugins
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_2 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_3 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())

        #Create dblocks
        d_bl_1 = DBlock('Block1')
        d_bl_2 = DBlock('Block2')

        #assign dblocks to DPlugin d_pl_1
        d_pl_1.add_dblock(d_bl_1)
        d_pl_1.add_dblock(d_bl_2)

        self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_1.name)
        self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_2.name)
        self.dcore.subscribe(d_pl_3.id, d_pl_1.id, d_bl_1.name)
        self.dcore.subscribe(d_pl_3.id, d_pl_1.id, d_bl_2.name)


        self.dcore.subscribe_signals(d_pl_2.id, d_pl_1.id, d_bl_1.name, [1, 2, 3])
        self.dcore.subscribe_signals(d_pl_2.id, d_pl_1.id, d_bl_2.name, [6, 4, 5])
        self.dcore.subscribe_signals(d_pl_3.id, d_pl_1.id, d_bl_1.name, [9])
        self.dcore.subscribe_signals(d_pl_3.id, d_pl_1.id, d_bl_2.name, [17,19,18])

        self.assertTrue(self.dcore.unsubscribe_signals(d_pl_2.id, d_pl_1.id, d_bl_1.name, [1, 2]))

        subscription = d_pl_2.get_subscribtions()[d_pl_1.id][d_bl_1.name]

        self.assertNotIn(1, subscription.get_signals())
        self.assertNotIn(2, subscription.get_signals())
        self.assertIn(3, subscription.get_signals())

        self.assertEqual(len(d_bl_1.get_subscribers()), 2)

        self.assertTrue(self.dcore.unsubscribe_signals(d_pl_2.id, d_pl_1.id, d_bl_1.name, [3]))

        self.assertEqual(len(d_bl_1.get_subscribers()), 1)
Example #4
0
class TestDCore(unittest.TestCase):
    def setUp(self):
        self.dcore = DCore()

    def test_create_id(self):
        id_1 = self.dcore.create_id()
        id_2 = self.dcore.create_id()

        self.assertNotEqual(id_1, id_2)

    def test_add_plugin(self):

        pl_id_1 = self.dcore.create_id()
        pl_id_2 = self.dcore.create_id()

        self.dcore.add_plugin(None, 1, None, None, None, pl_id_1)
        self.dcore.add_plugin(None, 2, None, None, None, pl_id_2)

        dp_1 = self.dcore.get_dplugin_by_id(pl_id_1)

        self.assertTrue(isinstance(dp_1, DPlugin))

        self.assertEqual(dp_1.id, pl_id_1)
        dp_2 = self.dcore.get_dplugin_by_id(pl_id_2)
        self.assertTrue(isinstance(dp_2, DPlugin))
        self.assertEqual(dp_2.id, pl_id_2)

        self.assertEqual(self.dcore.get_dplugins_count(), 2)

        self.assertTrue(self.dcore.rm_dplugin(dp_1.id))

        self.assertEqual(self.dcore.get_dplugins_count(), 1)

    def test_rm_dplugin(self):
        # Create dplugins
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_2 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())

        # Create dblocks
        d_bl_1 = DBlock("Block_1")
        d_bl_2 = DBlock("Block_2")

        # assign dblocks to DPlugin d_pl_1
        d_pl_1.add_dblock(d_bl_1)
        d_pl_1.add_dblock(d_bl_2)

        # create subscribtions

        self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_1.name)
        self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_2.name)

        self.assertEqual(len(d_pl_2.get_subscribtions()[d_pl_1.id]), 2)
        self.assertEqual(len(d_bl_1.get_subscribers()), 1)
        self.assertEqual(len(d_bl_2.get_subscribers()), 1)

        self.dcore.rm_dplugin(d_pl_1.id)

        # Check if DPlugin d_pl_1 is missing

        self.assertFalse(self.dcore.get_dplugin_by_id(d_pl_1.id))

        # Check if all subscribtions were canceled

        self.assertEqual(len(d_pl_2.get_subscribtions().keys()), 0)
        self.assertEqual(len(d_bl_1.get_subscribers()), 0)
        self.assertEqual(len(d_bl_2.get_subscribers()), 0)

        pass

    def test_get_dplugin_by_id(self):
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        self.dcore.get_dplugin_by_id(d_pl_1.id)
        self.assertEqual(d_pl_1.id, self.dcore.get_dplugin_by_id(d_pl_1.id).id)

    def test_get_dplugin_by_uname(self):
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_2 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_3 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())

        d_pl_1.uname = "Test1"
        d_pl_2.uname = "Test2"
        d_pl_3.uname = "Test3"

        self.assertEqual("Test1", self.dcore.get_dplugin_by_uname("Test1").uname)
        self.assertEqual("Test2", self.dcore.get_dplugin_by_uname("Test2").uname)
        self.assertEqual("Test3", self.dcore.get_dplugin_by_uname("Test3").uname)

        self.assertIsNone(self.dcore.get_dplugin_by_uname("Test4"))

    def test_get_all_plugins(self):
        self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())

        self.assertEqual(len(self.dcore.get_all_plugins().keys()), 4)

    def test_subscribe(self):
        # Create dplugins
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_2 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())

        # Create dblocks
        d_bl_1 = DBlock("Block_1")
        d_bl_2 = DBlock("Block_2")

        # assign dblocks to DPlugin d_pl_1
        d_pl_1.add_dblock(d_bl_1)
        d_pl_1.add_dblock(d_bl_2)

        self.assertTrue(self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_1.name))
        self.assertTrue(self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_2.name))

        self.assertTrue(d_pl_2.id in d_bl_1.get_subscribers())
        self.assertTrue(d_pl_2.id in d_bl_2.get_subscribers())

    def test_unsubscribe(self):
        # Create dplugins
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_2 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())

        # Create dblocks
        d_bl_1 = DBlock("Block_1")
        d_bl_2 = DBlock("Block_2")

        # assign dblocks to DPlugin d_pl_1
        d_pl_1.add_dblock(d_bl_1)
        d_pl_1.add_dblock(d_bl_2)

        self.assertTrue(self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_1.name))
        self.assertTrue(self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_2.name))

        self.dcore.unsubscribe(d_pl_2.id, d_pl_1.id, d_bl_1.name)
        self.dcore.unsubscribe(d_pl_2.id, d_pl_1.id, d_bl_2.name)

        self.assertFalse(d_pl_2.id in d_bl_1.get_subscribers())
        self.assertFalse(d_pl_2.id in d_bl_1.get_subscribers())
        self.assertEqual(len(d_bl_2.get_subscribers()), 0)

    def test_unsubscribe_all(self):
        # Create dplugins
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_2 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_3 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        # Create dblocks
        d_bl_1 = DBlock("Block_1")
        d_bl_2 = DBlock("Block_2")

        # assign dblocks to DPlugin d_pl_1
        d_pl_1.add_dblock(d_bl_1)
        d_pl_1.add_dblock(d_bl_2)

        self.assertTrue(self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_1.name))
        self.assertTrue(self.dcore.subscribe(d_pl_3.id, d_pl_1.id, d_bl_1.name))
        self.assertTrue(self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_2.name))

        print(d_bl_1.get_subscribers())

        self.assertEqual(len(d_pl_2.get_subscribtions()[d_pl_1.id].keys()), 2)

        self.dcore.unsubscribe_all(d_pl_2.id)

        self.assertNotIn(d_pl_1.id, d_pl_2.get_subscribtions())

        print(d_bl_1.get_subscribers())
        self.assertTrue(len(d_bl_1.get_subscribers()) == 1)
        self.assertTrue(len(d_bl_2.get_subscribers()) == 0)

        pass

    def test_rm_all_subscribers(self):
        # Create dplugins
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_2 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_3 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())

        # Create dblocks
        d_bl_1 = DBlock("Block_1")
        d_bl_2 = DBlock("Block_2")

        # assign dblocks to DPlugin d_pl_1
        d_pl_1.add_dblock(d_bl_1)
        d_pl_1.add_dblock(d_bl_2)

        self.assertTrue(self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_1.name))
        self.assertTrue(self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_2.name))
        self.assertTrue(self.dcore.subscribe(d_pl_3.id, d_pl_1.id, d_bl_1.name))
        self.assertTrue(self.dcore.subscribe(d_pl_3.id, d_pl_1.id, d_bl_2.name))

        self.assertEqual(len(d_bl_1.get_subscribers()), 2)
        self.assertEqual(len(d_bl_2.get_subscribers()), 2)

        self.dcore.rm_all_subscribers(d_pl_1.id)

        self.assertEqual(len(d_bl_1.get_subscribers()), 0)
        self.assertEqual(len(d_bl_2.get_subscribers()), 0)

        pass

    def test_subscribe_signals(self):
        # Create dplugins
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_2 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_3 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())

        # Create dblocks
        d_bl_1 = DBlock("Block1")
        d_bl_2 = DBlock("Block2")

        # assign dblocks to DPlugin d_pl_1
        d_pl_1.add_dblock(d_bl_1)
        d_pl_1.add_dblock(d_bl_2)

        self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_1.name)
        self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_2.name)
        self.dcore.subscribe(d_pl_3.id, d_pl_1.id, d_bl_1.name)
        self.dcore.subscribe(d_pl_3.id, d_pl_1.id, d_bl_2.name)

        self.assertTrue(self.dcore.subscribe_signals(d_pl_2.id, d_pl_1.id, d_bl_1.name, [1, 2, 3]))

        self.assertTrue(self.dcore.subscribe_signals(d_pl_2.id, d_pl_1.id, d_bl_2.name, [6, 4, 5]))

        self.assertTrue(self.dcore.subscribe_signals(d_pl_3.id, d_pl_1.id, d_bl_1.name, [9]))

        self.assertTrue(self.dcore.subscribe_signals(d_pl_3.id, d_pl_1.id, d_bl_2.name, [17, 19, 18]))

        subscription = d_pl_2.get_subscribtions()[d_pl_1.id][d_bl_1.name]

        self.assertIn(1, subscription.get_signals())
        self.assertIn(2, subscription.get_signals())
        self.assertIn(3, subscription.get_signals())

        subscription = d_pl_3.get_subscribtions()[d_pl_1.id][d_bl_2.name]

        self.assertIn(19, subscription.get_signals())
        self.assertIn(17, subscription.get_signals())
        self.assertIn(18, subscription.get_signals())

        subscription = d_pl_3.get_subscribtions()[d_pl_1.id][d_bl_1.name]

        self.assertIn(9, subscription.get_signals())

    def test_unsubscribe_signals(self):
        # Create dplugins
        d_pl_1 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_2 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())
        d_pl_3 = self.dcore.add_plugin(None, 1, None, None, None, self.dcore.create_id())

        # Create dblocks
        d_bl_1 = DBlock("Block1")
        d_bl_2 = DBlock("Block2")

        # assign dblocks to DPlugin d_pl_1
        d_pl_1.add_dblock(d_bl_1)
        d_pl_1.add_dblock(d_bl_2)

        self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_1.name)
        self.dcore.subscribe(d_pl_2.id, d_pl_1.id, d_bl_2.name)
        self.dcore.subscribe(d_pl_3.id, d_pl_1.id, d_bl_1.name)
        self.dcore.subscribe(d_pl_3.id, d_pl_1.id, d_bl_2.name)

        self.dcore.subscribe_signals(d_pl_2.id, d_pl_1.id, d_bl_1.name, [1, 2, 3])
        self.dcore.subscribe_signals(d_pl_2.id, d_pl_1.id, d_bl_2.name, [6, 4, 5])
        self.dcore.subscribe_signals(d_pl_3.id, d_pl_1.id, d_bl_1.name, [9])
        self.dcore.subscribe_signals(d_pl_3.id, d_pl_1.id, d_bl_2.name, [17, 19, 18])

        self.assertTrue(self.dcore.unsubscribe_signals(d_pl_2.id, d_pl_1.id, d_bl_1.name, [1, 2]))

        subscription = d_pl_2.get_subscribtions()[d_pl_1.id][d_bl_1.name]

        self.assertNotIn(1, subscription.get_signals())
        self.assertNotIn(2, subscription.get_signals())
        self.assertIn(3, subscription.get_signals())

        self.assertEqual(len(d_bl_1.get_subscribers()), 2)

        self.assertTrue(self.dcore.unsubscribe_signals(d_pl_2.id, d_pl_1.id, d_bl_1.name, [3]))

        self.assertEqual(len(d_bl_1.get_subscribers()), 1)