1# -*- coding: utf-8 -*-
2"""QGIS Unit tests for QgsScaleBarRendererRegistry
3
4.. note:: This program is free software; you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation; either version 2 of the License, or
7(at your option) any later version.
8"""
9__author__ = 'Nyall Dawson'
10__date__ = '20/03/2020'
11__copyright__ = 'Copyright 2020, The QGIS Project'
12
13import qgis  # NOQA
14
15from qgis.core import (QgsScaleBarRendererRegistry,
16                       QgsScaleBarRenderer)
17from qgis.testing import start_app, unittest
18
19start_app()
20
21
22class TestRenderer(QgsScaleBarRenderer):
23
24    def id(self):
25        return 'test'
26
27    def sortKey(self):
28        return 45
29
30    def visibleName(self):
31        return 'TesT'
32
33    def clone(self):
34        return TestRenderer()
35
36
37class TestQgsScaleBarRendererRegistry(unittest.TestCase):
38
39    def testRegistry(self):
40        registry = QgsScaleBarRendererRegistry()
41        self.assertTrue(registry.renderers())
42        for f in registry.renderers():
43            self.assertEqual(registry.renderer(f).id(), f)
44            self.assertEqual(registry.visibleName(f), registry.renderer(f).visibleName())
45            self.assertEqual(registry.sortKey(f), registry.renderer(f).sortKey())
46
47        self.assertIsNone(registry.renderer('bad'))
48        self.assertFalse(registry.visibleName('bad'))
49        self.assertFalse(registry.sortKey('bad'))
50
51        self.assertIn('Double Box', registry.renderers())
52
53        registry.addRenderer(TestRenderer())
54        self.assertIn('test', registry.renderers())
55        self.assertTrue(isinstance(registry.renderer('test'), TestRenderer))
56        self.assertEqual(registry.visibleName('test'), 'TesT')
57        self.assertEqual(registry.sortKey('test'), 45)
58
59        registry.removeRenderer('test')
60
61        self.assertNotIn('test', registry.renderers())
62        self.assertIsNone(registry.renderer('test'))
63        self.assertFalse(registry.visibleName('test'))
64
65        registry.removeRenderer('test')
66
67
68if __name__ == '__main__':
69    unittest.main()
70