Failed Conditions
Pull Request — master (#1295)
by Abdeali
01:27
created

test_dbus_methods()   A

Complexity

Conditions 1

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 1
dl 0
loc 14
rs 9.4285
1
import sys
2
import unittest
3
from unittest.case import skipIf
4
5
sys.path.insert(0, ".")
6
7
try:
8
    import dbus
9
    import dbus.mainloop
10
11
    from coalib.output.dbus.DbusServer import DbusServer
12
    skip, message = False, ''
13
except ImportError as err:
14
    skip, message = True, str(err)
15
16
17
@skipIf(skip, message)
18
class DbusServerTest(unittest.TestCase):
19
20
    def setUp(self):
21
        self.session_bus = dbus.SessionBus(
22
            mainloop=dbus.mainloop.NULL_MAIN_LOOP)
23
        self.dbus_name = dbus.service.BusName("org.coala_analyzer.v1.test",
24
                                              self.session_bus)
25
26
    def tearDown(self):
27
        self.session_bus.close()
28
29
    def test_apps(self):
30
        uut = DbusServer(self.session_bus, "/org/coala_analyzer/v1/test_apps")
31
32
        uut.get_or_create_app("app1")
33
        self.assertEqual(len(uut.apps), 1)
34
        self.assertIn("app1", uut.apps)
35
36
        uut.get_or_create_app("app1")
37
        self.assertIn("app1", uut.apps)
38
39
        uut.dispose_app("app2")
40
        self.assertNotIn("app2", uut.apps)
41
        self.assertIn("app1", uut.apps)
42
43
        uut.dispose_app("app1")
44
        self.assertNotIn("app1", uut.apps)
45
46
    def test_on_name_lost(self):
47
        uut = DbusServer(self.session_bus,
48
                         "/org/coala_analyzer/v1/test_on_name_lost")
49
        uut.create_app("app1")
50
51
        uut._on_name_lost("", "", "a1")
52
        self.assertIn("app1", uut.apps)
53
54
        uut._on_name_lost("", "app2", "")
55
        self.assertIn("app1", uut.apps)
56
57
        uut._on_name_lost("", "app1", "")
58
        self.assertNotIn("app1", uut.apps)
59
60
    def test_on_disconnected(self):
61
        def on_disconnected_callback():
62
            assert 1 == 2
63
64
        test_output = 0
65
        uut = DbusServer(self.session_bus,
66
                         "/org/coala_analyzer/v1/test_callback",
67
                         on_disconnected_callback)
68
        uut.create_app("app1")
69
        self.assertRaises(AssertionError, uut.dispose_app, "app1")
70
71
    def test_docs(self):
72
        uut = DbusServer(self.session_bus,
73
                         "/org/coala_analyzer/v1/test_docs")
74
        uut.create_app("app1")
75
        self.assertIn("app1", uut.apps)
76
77
        doc1 = __file__
78
        doc2 = __file__ + ".txt"
79
80
        uut.create_document(uut.apps["app1"], doc1)
81
        self.assertIn(doc1, uut.apps["app1"].docs)
82
83
        uut.get_or_create_document(uut.apps["app1"], doc1)
84
        self.assertIn(doc1, uut.apps["app1"].docs)
85
86
        uut.dispose_document(uut.apps["app1"], doc2)
87
        self.assertIn("app1", uut.apps)
88
        self.assertNotIn(doc2, uut.apps["app1"].docs)
89
        self.assertIn(doc1, uut.apps["app1"].docs)
90
91
        uut.get_or_create_document(uut.apps["app1"], doc2)
92
        uut.dispose_document(uut.apps["app1"], doc1)
93
        self.assertIn("app1", uut.apps)
94
        self.assertIn(doc2, uut.apps["app1"].docs)
95
96
        uut.dispose_document(uut.apps["app1"], doc2)
97
        self.assertNotIn("app1", uut.apps)
98
99
    def test_dbus_methods(self):
100
        uut = DbusServer(self.session_bus,
101
                         "/org/coala_analyzer/v1/test_dbus_methods")
102
        doc1 = __file__
103
104
        uut.CreateDocument(doc1, sender="app1")
105
        self.assertIn("app1", uut.apps)
106
        self.assertIn(doc1, uut.apps["app1"].docs)
107
108
        uut.DisposeDocument(doc1, sender="app1")
109
        self.assertNotIn("app1", uut.apps)
110
111
        uut.DisposeDocument(doc1, sender="app2")
112
        self.assertEqual(len(uut.apps), 0)
113
114
115
if __name__ == "__main__":
116
    unittest.main(verbosity=2)
117