Skip to content

Commit 986fcdc

Browse files
alexbruynyalldawson
authored andcommittedMay 28, 2019
add tests for QgsColorRamp
(cherry picked from commit d83b01f)
1 parent c14c713 commit 986fcdc

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed
 

‎tests/src/python/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ ADD_PYTHON_TEST(PyQgsBox3d test_qgsbox3d.py)
2626
ADD_PYTHON_TEST(PyQgsCategorizedSymbolRenderer test_qgscategorizedsymbolrenderer.py)
2727
ADD_PYTHON_TEST(PyQgsCheckableComboBox test_qgscheckablecombobox.py)
2828
ADD_PYTHON_TEST(PyQgsColorButton test_qgscolorbutton.py)
29+
ADD_PYTHON_TEST(PyQgsColorRamp test_qgscolorramp.py)
2930
ADD_PYTHON_TEST(PyQgsColorScheme test_qgscolorscheme.py)
3031
ADD_PYTHON_TEST(PyQgsColorSchemeRegistry test_qgscolorschemeregistry.py)
3132
ADD_PYTHON_TEST(PyQgsCoordinateFormatter test_qgscoordinateformatter.py)

‎tests/src/python/test_qgscolorramp.py

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# -*- coding: utf-8 -*-
2+
"""QGIS Unit tests for QgsColorRamp subclasses.
3+
4+
.. note:: This program is free software; you can redistribute it and/or modify
5+
it under the terms of the GNU General Public License as published by
6+
the Free Software Foundation; either version 2 of the License, or
7+
(at your option) any later version.
8+
"""
9+
__author__ = 'Alexander Bruy'
10+
__date__ = '26/05/2019'
11+
__copyright__ = 'Copyright 2019, The QGIS Project'
12+
13+
import qgis # NOQA
14+
15+
from qgis.testing import unittest, start_app
16+
from qgis.core import QgsColorBrewerColorRamp, QgsCptCityColorRamp, QgsGradientColorRamp, QgsSettings, QgsApplication
17+
from qgis.PyQt.QtCore import QCoreApplication
18+
from qgis.PyQt.QtGui import QColor
19+
20+
21+
class TestQgsColorRamp(unittest.TestCase):
22+
23+
@classmethod
24+
def setUpClass(cls):
25+
"""Run before all tests"""
26+
QCoreApplication.setOrganizationName("QGIS_Test")
27+
QCoreApplication.setOrganizationDomain("QGIS_TestQgsColorRamp.com")
28+
QCoreApplication.setApplicationName("QGIS_TestQgsColorRamp")
29+
QgsSettings().clear()
30+
start_app()
31+
32+
def testColorBrewerColorRamp(self):
33+
"""Test Color Brewer color ramp"""
34+
ramp = QgsColorBrewerColorRamp(schemeName="Spectral", colors=5, inverted=False)
35+
self.assertTrue(ramp)
36+
37+
# color scheme name
38+
self.assertEqual(ramp.schemeName(), "Spectral")
39+
40+
# number of colors
41+
self.assertEqual(ramp.colors(), 5)
42+
ramp.setColors(13)
43+
self.assertEqual(ramp.colors(), 13)
44+
45+
# color for value
46+
ramp.setColors(5)
47+
self.assertEqual(ramp.color(0).name(), "#d7191c")
48+
self.assertEqual(ramp.color(1).name(), "#2b83ba")
49+
self.assertEqual(ramp.color(0.5).name(), "#ffffbf")
50+
self.assertEqual(ramp.color(2).name(), "#000000")
51+
self.assertEqual(ramp.color(-1).name(), "#000000")
52+
self.assertEqual(ramp.color(float('nan')).name(), "#000000")
53+
54+
def testCptCityColorRamp(self):
55+
"""Test Cpt-city color ramp"""
56+
ramp = QgsCptCityColorRamp(schemeName="cb/div/BrBG_", variantName="05", inverted=False)
57+
self.assertTrue(ramp)
58+
59+
# associated files
60+
self.assertTrue(ramp.fileLoaded())
61+
fileName = ramp.fileName()[len(QgsApplication.pkgDataPath()):]
62+
self.assertEqual(fileName, "/resources/cpt-city-qgis-min/cb/div/BrBG_05.svg")
63+
fileName = ramp.copyingFileName()[len(QgsApplication.pkgDataPath()):]
64+
self.assertEqual(fileName, "/resources/cpt-city-qgis-min/cb/COPYING.xml")
65+
fileName = ramp.descFileName()[len(QgsApplication.pkgDataPath()):]
66+
self.assertEqual(fileName, "/resources/cpt-city-qgis-min/cb/div/DESC.xml")
67+
68+
# color scheme name
69+
self.assertEqual(ramp.schemeName(), "cb/div/BrBG_")
70+
self.assertEqual(ramp.variantName(), "05")
71+
72+
# number of colors
73+
self.assertEqual(ramp.count(), 6)
74+
75+
# color for value
76+
self.assertEqual(ramp.color(0).name(), "#a6611a")
77+
self.assertEqual(ramp.color(1).name(), "#018571")
78+
self.assertEqual(ramp.color(0.5).name(), "#f5f5f5")
79+
self.assertEqual(ramp.color(2).name(), "#018571")
80+
self.assertEqual(ramp.color(-1).name(), "#a6611a")
81+
self.assertEqual(ramp.color(float('nan')).name(), "#018571")
82+
83+
def testGradientColorRamp(self):
84+
"""Test gradient color ramp"""
85+
ramp = QgsGradientColorRamp(color1=QColor(0, 0, 255), color2=QColor(0, 255, 0), discrete=False)
86+
self.assertTrue(ramp)
87+
88+
# number of colors
89+
self.assertEqual(ramp.count(), 2)
90+
self.assertEqual(ramp.color1().name(), "#0000ff")
91+
self.assertEqual(ramp.color2().name(), "#00ff00")
92+
93+
# color for value
94+
self.assertEqual(ramp.color(0).name(), "#0000ff")
95+
self.assertEqual(ramp.color(1).name(), "#00ff00")
96+
self.assertEqual(ramp.color(0.5).name(), "#008080")
97+
self.assertEqual(ramp.color(2).name(), "#00ff00")
98+
self.assertEqual(ramp.color(-1).name(), "#0000ff")
99+
self.assertEqual(ramp.color(float('nan')).name(), "#00ff00")
100+
101+
102+
if __name__ == "__main__":
103+
unittest.main()

0 commit comments

Comments
 (0)
Please sign in to comment.