Skip to content

Commit 73710e8

Browse files
committed
Corrected evaluation of vector.nodata.
Before, error_table contained items conforming to values set in params. Now, the logic is inverted so that error_table contains correctly these items which do not follow values in params.
1 parent 735e959 commit 73710e8

2 files changed

Lines changed: 25 additions & 25 deletions

File tree

src/qc_tool/test/test_vector_check.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -654,24 +654,24 @@ def test(self):
654654
" ( 7, 0, 0, NULL),"
655655
" ( 8, 0, 10, NULL),"
656656
" ( 9, 0, NULL, NULL),"
657-
" (10, 1, 1, 1);")
657+
" (10, 1, 0, 0);")
658658
status = self.status_class()
659659
run_check(self.params, status)
660660
self.assertEqual("ok", status.status)
661661

662662
def test_fail(self):
663663
from qc_tool.vector.nodata import run_check
664-
self.cursor.execute("INSERT INTO mytable VALUES (1, 1, 1, 10);")
664+
self.cursor.execute("INSERT INTO mytable VALUES (1, 1, 0, 10);")
665665
status = self.status_class()
666666
run_check(self.params, status)
667-
self.assertEqual("ok", status.status)
667+
self.assertEqual("failed", status.status)
668668

669669
def test_fail_null(self):
670670
from qc_tool.vector.nodata import run_check
671-
self.cursor.execute("INSERT INTO mytable VALUES (1, 1, 1, NULL);")
671+
self.cursor.execute("INSERT INTO mytable VALUES (1, 1, 0, NULL);")
672672
status = self.status_class()
673673
run_check(self.params, status)
674-
self.assertEqual("ok", status.status)
674+
self.assertEqual("failed", status.status)
675675

676676
def test_nodata_null(self):
677677
self.params["nodata_value"] = None
@@ -685,18 +685,26 @@ def test_nodata_null(self):
685685
" ( 7, 0, 0, NULL),"
686686
" ( 8, 0, 10, NULL),"
687687
" ( 9, 0, NULL, NULL),"
688-
" (10, NULL, 1, 1);")
688+
" (10, NULL, 0, 0);")
689689
status = self.status_class()
690690
run_check(self.params, status)
691691
self.assertEqual("ok", status.status)
692692

693693
def test_nodata_null_fail(self):
694694
self.params["nodata_value"] = None
695695
from qc_tool.vector.nodata import run_check
696-
self.cursor.execute("INSERT INTO mytable VALUES (1, NULL, 1, NULL);")
696+
self.cursor.execute("INSERT INTO mytable VALUES (1, NULL, 0, 10);")
697697
status = self.status_class()
698698
run_check(self.params, status)
699-
self.assertEqual("ok", status.status)
699+
self.assertEqual("failed", status.status)
700+
701+
def test_nodata_null_fail_null(self):
702+
self.params["dep_value"] = None
703+
from qc_tool.vector.nodata import run_check
704+
self.cursor.execute("INSERT INTO mytable VALUES (1, 1, NULL, 10);")
705+
status = self.status_class()
706+
run_check(self.params, status)
707+
self.assertEqual("failed", status.status)
700708

701709
def test_dep_null(self):
702710
self.params["dep_value"] = None
@@ -715,14 +723,6 @@ def test_dep_null(self):
715723
run_check(self.params, status)
716724
self.assertEqual("ok", status.status)
717725

718-
def test_nodata_null_fail(self):
719-
self.params["dep_value"] = None
720-
from qc_tool.vector.nodata import run_check
721-
self.cursor.execute("INSERT INTO mytable VALUES (1, 1, NULL, 0);")
722-
status = self.status_class()
723-
run_check(self.params, status)
724-
self.assertEqual("ok", status.status)
725-
726726

727727
class Test_non_probable(VectorCheckTestCase):
728728
def test(self):

src/qc_tool/vector/nodata.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,23 +28,23 @@ def run_check(params, status):
2828
else:
2929
sql_params["nodata_clause"] = "{nodata_column_name} = %(nodata_value)s".format(**sql_params)
3030
sql_execute_params["nodata_value"] = params["nodata_value"]
31-
if dep_column_name is None:
31+
if params["dep_value"] is None:
3232
sql_params["dep_clause"] = "{dep_column_name} IS NULL".format(**sql_params)
3333
else:
34-
sql_params["dep_clause"] = "{dep_column_name} = %(dep_value)s".format(**sql_params)
34+
sql_params["dep_clause"] = "{dep_column_name} IS NOT NULL AND {dep_column_name} = %(dep_value)s".format(**sql_params)
3535
sql_execute_params["dep_value"] = params["dep_value"]
3636

3737
# Create table of error items.
3838
sql = ("CREATE TABLE {error_table} AS"
3939
" SELECT {fid_name}"
4040
" FROM {layer_name}"
41-
" WHERE {nodata_clause} AND {dep_clause};")
41+
" WHERE {nodata_clause} AND NOT({dep_clause});")
4242
sql = sql.format(**sql_params)
4343
cursor.execute(sql, sql_execute_params)
4444

45-
# Report error items.
46-
items_message = get_failed_items_message(cursor, sql_params["error_table"], layer_def["pg_fid_name"])
47-
if items_message is not None:
48-
status.failed("Layer {:s} has column {:s} with invalid nodata code in features with {:s}: {:s}."
49-
.format(layer_def["pg_layer_name"], params["nodata_column_name"], layer_def["fid_display_name"], items_message))
50-
status.add_error_table(sql_params["error_table"], layer_def["pg_layer_name"], layer_def["pg_fid_name"])
45+
# Report error items.
46+
items_message = get_failed_items_message(cursor, sql_params["error_table"], layer_def["pg_fid_name"])
47+
if items_message is not None:
48+
status.failed("Layer {:s} has column {:s} with invalid nodata code in features with {:s}: {:s}."
49+
.format(layer_def["pg_layer_name"], params["nodata_column_name"], layer_def["fid_display_name"], items_message))
50+
status.add_error_table(sql_params["error_table"], layer_def["pg_layer_name"], layer_def["pg_fid_name"])

0 commit comments

Comments
 (0)