Skip to content

Commit 8b84f3a

Browse files
committedFeb 4, 2016
Ignore extra fields on control layer
1 parent 70b4f3a commit 8b84f3a

File tree

1 file changed

+26
-24
lines changed

1 file changed

+26
-24
lines changed
 

‎python/testing/__init__.py

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@
3838

3939
class TestCase(_TestCase):
4040

41-
def assertLayersEqual(self, layer1, layer2, **kwargs):
41+
def assertLayersEqual(self, layer_expected, layer_result, **kwargs):
4242
"""
43-
:param layer1: The first layer to compare
44-
:param layer2: The second layer to compare
43+
:param layer_expected: The first layer to compare
44+
:param layer_result: The second layer to compare
4545
:param request: Optional, A feature request. This can be used to specify
4646
an order by clause to make sure features are compared in
4747
a given sequence if they don't match by default.
@@ -61,17 +61,17 @@ def assertLayersEqual(self, layer1, layer2, **kwargs):
6161
compare = {}
6262

6363
# Compare CRS
64-
_TestCase.assertEqual(self, layer1.dataProvider().crs().authid(), layer2.dataProvider().crs().authid())
64+
_TestCase.assertEqual(self, layer_expected.dataProvider().crs().authid(), layer_result.dataProvider().crs().authid())
6565

6666
# Compare features
67-
_TestCase.assertEqual(self, layer1.featureCount(), layer2.featureCount())
67+
_TestCase.assertEqual(self, layer_expected.featureCount(), layer_result.featureCount())
6868

6969
try:
7070
precision = compare['geometry']['precision']
7171
except KeyError:
7272
precision = 17
7373

74-
for feats in zip(layer1.getFeatures(request), layer2.getFeatures(request)):
74+
for feats in zip(layer_expected.getFeatures(request), layer_result.getFeatures(request)):
7575
if feats[0].geometry() is not None:
7676
geom0 = feats[0].geometry().geometry().asWkt(precision)
7777
else:
@@ -92,7 +92,9 @@ def assertLayersEqual(self, layer1, layer2, **kwargs):
9292
)
9393
)
9494

95-
for attr0, attr1, field1, field2 in zip(feats[0].attributes(), feats[1].attributes(), layer1.fields().toList(), layer2.fields().toList()):
95+
for attr_expected, field_expected in zip(feats[0].attributes(), layer_expected.fields().toList()):
96+
attr_result = feats[1][field_expected.name()]
97+
field_result = [fld for fld in layer_expected.fields().toList() if fld.name() == field_expected.name()][0]
9698
try:
9799
cmp = compare['fields'][field1.name()]
98100
except KeyError:
@@ -108,33 +110,33 @@ def assertLayersEqual(self, layer1, layer2, **kwargs):
108110
# Cast field to a given type
109111
if 'cast' in cmp:
110112
if cmp['cast'] == 'int':
111-
attr0 = int(attr0) if attr0 else None
112-
attr1 = int(attr1) if attr0 else None
113+
attr_expected = int(attr_expected) if attr_expected else None
114+
attr_result = int(attr_result) if attr_result else None
113115
if cmp['cast'] == 'float':
114-
attr0 = float(attr0) if attr0 else None
115-
attr1 = float(attr1) if attr0 else None
116+
attr_expected = float(attr_expected) if attr_expected else None
117+
attr_result = float(attr_result) if attr_result else None
116118
if cmp['cast'] == 'str':
117-
attr0 = str(attr0)
118-
attr1 = str(attr1)
119+
attr_expected = str(attr_expected) if attr_expected else None
120+
attr_result = str(attr_result) if attr_result else None
119121

120122
# Round field (only numeric so it works with __all__)
121-
if 'precision' in cmp and field1.type() in [QVariant.Int, QVariant.Double, QVariant.LongLong]:
122-
attr0 = round(attr0, cmp['precision'])
123-
attr1 = round(attr1, cmp['precision'])
123+
if 'precision' in cmp and field_expected.type() in [QVariant.Int, QVariant.Double, QVariant.LongLong]:
124+
attr_expected = round(attr_expected, cmp['precision'])
125+
attr_result = round(attr_result, cmp['precision'])
124126

125127
_TestCase.assertEqual(
126128
self,
127-
attr0,
128-
attr1,
129+
attr_expected,
130+
attr_result,
129131
'Features {}/{} differ in attributes\n\n * Field1: {} ({})\n * Field2: {} ({})\n\n * {} != {}'.format(
130132
feats[0].id(),
131133
feats[1].id(),
132-
field1.name(),
133-
field1.typeName(),
134-
field2.name(),
135-
field2.typeName(),
136-
repr(attr0),
137-
repr(attr1)
134+
field_expected.name(),
135+
field_expected.typeName(),
136+
field_result.name(),
137+
field_result.typeName(),
138+
repr(attr_expected),
139+
repr(attr_result)
138140
)
139141
)
140142

0 commit comments

Comments
 (0)
Please sign in to comment.