@@ -157,7 +157,9 @@ def test_unique(features, num_features):
157
157
test_unique ([f for f in vl .getFeatures ()], 4 )
158
158
159
159
# See http://hub.qgis.org/issues/14262
160
+ # TODO: accept multi-featured layers, and an array of values/fids
160
161
def testSignedIdentifiers (self ):
162
+
161
163
def test_layer (ql , att , val , fidval ):
162
164
self .assertTrue (ql .isValid ())
163
165
features = ql .getFeatures ()
@@ -177,9 +179,42 @@ def test(dbconn, query, att, val, fidval):
177
179
# now with estimated metadata
178
180
uri += ' estimatedmetadata="true"'
179
181
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
182
213
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 )
183
218
184
219
def testPktIntInsert (self ):
185
220
vl = QgsVectorLayer ('{} table="qgis_test"."{}" key="pk" sql=' .format (self .dbconn , 'bikes_view' ), "bikes_view" , "postgres" )
0 commit comments