Skip to content

Commit 0f0d6c0

Browse files
committed
Add more tests to cover full signed int ranges
1 parent 3accda6 commit 0f0d6c0

File tree

1 file changed

+37
-2
lines changed

1 file changed

+37
-2
lines changed

tests/src/python/test_provider_postgres.py

+37-2
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,9 @@ def test_unique(features, num_features):
157157
test_unique([f for f in vl.getFeatures()], 4)
158158

159159
# See http://hub.qgis.org/issues/14262
160+
# TODO: accept multi-featured layers, and an array of values/fids
160161
def testSignedIdentifiers(self):
162+
161163
def test_layer(ql, att, val, fidval):
162164
self.assertTrue(ql.isValid())
163165
features = ql.getFeatures()
@@ -177,9 +179,42 @@ def test(dbconn, query, att, val, fidval):
177179
# now with estimated metadata
178180
uri += ' estimatedmetadata="true"'
179181
test_layer(ql, att, val, fidval)
180-
test(self.dbconn, '(SELECT -1::int4 i, NULL::geometry(Point) g)', 'i', -1, 4294967295)
181-
test(self.dbconn, '(SELECT -2::int2 i, NULL::geometry(Point) g)', 'i', -2, 4294967294)
182+
183+
#### --- INT16 ----
184+
# zero
185+
test(self.dbconn, '(SELECT 0::int2 i, NULL::geometry(Point) g)', 'i', 0, 0)
186+
# low positive
187+
test(self.dbconn, '(SELECT 1::int2 i, NULL::geometry(Point) g)', 'i', 1, 1)
188+
# low negative
189+
test(self.dbconn, '(SELECT -1::int2 i, NULL::geometry(Point) g)', 'i', -1, 4294967295)
190+
# max positive signed 16bit integer
191+
test(self.dbconn, '(SELECT 32767::int2 i, NULL::geometry(Point) g)', 'i', 32767, 32767)
192+
# max negative signed 16bit integer
193+
test(self.dbconn, '(SELECT -32767::int2 i, NULL::geometry(Point) g)', 'i', -32767, 4294934529)
194+
195+
#### --- INT32 ----
196+
# zero
197+
test(self.dbconn, '(SELECT 0::int4 i, NULL::geometry(Point) g)', 'i', 0, 0)
198+
# low positive
199+
test(self.dbconn, '(SELECT 2::int4 i, NULL::geometry(Point) g)', 'i', 2, 2)
200+
# low negative
201+
test(self.dbconn, '(SELECT -2::int4 i, NULL::geometry(Point) g)', 'i', -2, 4294967294)
202+
# max positive signed 32bit integer
203+
test(self.dbconn, '(SELECT 2147483647::int4 i, NULL::geometry(Point) g)', 'i', 2147483647, 2147483647)
204+
# max negative signed 32bit integer
205+
test(self.dbconn, '(SELECT -2147483647::int4 i, NULL::geometry(Point) g)', 'i', -2147483647, 2147483649)
206+
207+
#### --- INT64 (FIDs are always 1 because assigned ex-novo) ----
208+
# zero
209+
test(self.dbconn, '(SELECT 0::int8 i, NULL::geometry(Point) g)', 'i', 0, 1)
210+
# low positive
211+
test(self.dbconn, '(SELECT 3::int8 i, NULL::geometry(Point) g)', 'i', 3, 1)
212+
# low negative
182213
test(self.dbconn, '(SELECT -3::int8 i, NULL::geometry(Point) g)', 'i', -3, 1)
214+
# max positive signed 64bit integer
215+
test(self.dbconn, '(SELECT 9223372036854775807::int8 i, NULL::geometry(Point) g)', 'i', 9223372036854775807, 1)
216+
# max negative signed 32bit integer
217+
test(self.dbconn, '(SELECT -9223372036854775807::int8 i, NULL::geometry(Point) g)', 'i', -9223372036854775807, 1)
183218

184219
def testPktIntInsert(self):
185220
vl = QgsVectorLayer('{} table="qgis_test"."{}" key="pk" sql='.format(self.dbconn, 'bikes_view'), "bikes_view", "postgres")

0 commit comments

Comments
 (0)