From d77e55c03bb0c234db67cae7c85559fa2e5adbed Mon Sep 17 00:00:00 2001 From: Chris Allan Date: Mon, 8 Jul 2024 12:05:52 +0000 Subject: [PATCH 1/3] Add a test case for ome/omero-py#418 --- .../integration/tablestest/test_service.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/components/tools/OmeroPy/test/integration/tablestest/test_service.py b/components/tools/OmeroPy/test/integration/tablestest/test_service.py index 865d716714a..c66b06188d5 100755 --- a/components/tools/OmeroPy/test/integration/tablestest/test_service.py +++ b/components/tools/OmeroPy/test/integration/tablestest/test_service.py @@ -714,4 +714,40 @@ def testColumnSpaceNames(self): table.delete() table.close() + def tesIncludeRowNumbers(self): + grid = self.client.sf.sharedResources() + table = grid.newTable(1, "/testIncludeRowNumbers") + assert table + + lc = columns.LongColumnI('lc', 'desc', [1, 2, 3, 4, 5]) + table.initialize([lc]) + table.addData([lc]) + + colNumbers = [0] + rowNumbers = [0, 1, 2, 3, 4] + # Check that row numbers come back when defaulting to "true" + data = table.slice(colNumbers, rowNumbers) + assert 1 == len(data.columns) + assert 5 == len(data.columns[0].values) + assert 5 == len(data.rowNumbers) + + # Check that row numbers come back when explicitly stating "true" + data = table.slice( + colNumbers, rowNumbers, { + 'omero.tables.include_row_numbers': "true" + } + ) + assert 5 == len(data.rowNumbers) + + # Check that no row numbers come back when explicitly stating "false" + data = table.slice( + colNumbers, rowNumbers, { + 'omero.tables.include_row_numbers': "false" + } + ) + assert 0 == len(data.rowNumbers) + + table.delete() + table.close() + # TODO: Add tests for error conditions From 59d280821c22e6f361e65906b847fe7087c89043 Mon Sep 17 00:00:00 2001 From: Chris Allan Date: Thu, 11 Jul 2024 14:51:12 +0000 Subject: [PATCH 2/3] Fix typo --- .../tools/OmeroPy/test/integration/tablestest/test_service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/tools/OmeroPy/test/integration/tablestest/test_service.py b/components/tools/OmeroPy/test/integration/tablestest/test_service.py index c66b06188d5..0ba2708f67e 100755 --- a/components/tools/OmeroPy/test/integration/tablestest/test_service.py +++ b/components/tools/OmeroPy/test/integration/tablestest/test_service.py @@ -714,7 +714,7 @@ def testColumnSpaceNames(self): table.delete() table.close() - def tesIncludeRowNumbers(self): + def testIncludeRowNumbers(self): grid = self.client.sf.sharedResources() table = grid.newTable(1, "/testIncludeRowNumbers") assert table From 9ef97d49a854db6698671d8c550180aa7a5a9ea7 Mon Sep 17 00:00:00 2001 From: Chris Allan Date: Thu, 11 Jul 2024 15:09:53 +0000 Subject: [PATCH 3/3] Expand test cases to cover `readCoordinates()` and `read()` --- .../integration/tablestest/test_service.py | 78 +++++++++++++++++-- 1 file changed, 72 insertions(+), 6 deletions(-) diff --git a/components/tools/OmeroPy/test/integration/tablestest/test_service.py b/components/tools/OmeroPy/test/integration/tablestest/test_service.py index 0ba2708f67e..557104feffe 100755 --- a/components/tools/OmeroPy/test/integration/tablestest/test_service.py +++ b/components/tools/OmeroPy/test/integration/tablestest/test_service.py @@ -714,7 +714,8 @@ def testColumnSpaceNames(self): table.delete() table.close() - def testIncludeRowNumbers(self): + @pytest.fixture(scope='function') + def singleColumnFiveRowTable(self): grid = self.client.sf.sharedResources() table = grid.newTable(1, "/testIncludeRowNumbers") assert table @@ -723,31 +724,96 @@ def testIncludeRowNumbers(self): table.initialize([lc]) table.addData([lc]) + yield table + + table.delete() + table.close() + + def testIncludeRowNumbersSlice(self, singleColumnFiveRowTable): colNumbers = [0] rowNumbers = [0, 1, 2, 3, 4] # Check that row numbers come back when defaulting to "true" - data = table.slice(colNumbers, rowNumbers) + data = singleColumnFiveRowTable.slice(colNumbers, rowNumbers) assert 1 == len(data.columns) assert 5 == len(data.columns[0].values) assert 5 == len(data.rowNumbers) # Check that row numbers come back when explicitly stating "true" - data = table.slice( + data = singleColumnFiveRowTable.slice( colNumbers, rowNumbers, { 'omero.tables.include_row_numbers': "true" } ) + assert 1 == len(data.columns) + assert 5 == len(data.columns[0].values) assert 5 == len(data.rowNumbers) # Check that no row numbers come back when explicitly stating "false" - data = table.slice( + data = singleColumnFiveRowTable.slice( colNumbers, rowNumbers, { 'omero.tables.include_row_numbers': "false" } ) + assert 1 == len(data.columns) + assert 5 == len(data.columns[0].values) assert 0 == len(data.rowNumbers) - table.delete() - table.close() + def testIncludeRowNumbersReadCoordinates(self, singleColumnFiveRowTable): + rowNumbers = [0, 1, 2, 3, 4] + # Check that row numbers come back when defaulting to "true" + data = singleColumnFiveRowTable.readCoordinates(rowNumbers) + assert 1 == len(data.columns) + assert 5 == len(data.columns[0].values) + assert 5 == len(data.rowNumbers) + + # Check that row numbers come back when explicitly stating "true" + data = singleColumnFiveRowTable.readCoordinates( + rowNumbers, { + 'omero.tables.include_row_numbers': "true" + } + ) + assert 1 == len(data.columns) + assert 5 == len(data.columns[0].values) + assert 5 == len(data.rowNumbers) + + # Check that no row numbers come back when explicitly stating "false" + data = singleColumnFiveRowTable.readCoordinates( + rowNumbers, { + 'omero.tables.include_row_numbers': "false" + } + ) + assert 1 == len(data.columns) + assert 5 == len(data.columns[0].values) + assert 0 == len(data.rowNumbers) + + def testIncludeRowNumbersRead(self, singleColumnFiveRowTable): + colNumbers = [0] + start = 0 + stop = 5 + # Check that row numbers come back when defaulting to "true" + data = singleColumnFiveRowTable.read(colNumbers, start, stop) + assert 1 == len(data.columns) + assert 5 == len(data.columns[0].values) + assert 5 == len(data.rowNumbers) + + # Check that row numbers come back when explicitly stating "true" + data = singleColumnFiveRowTable.read( + colNumbers, start, stop, { + 'omero.tables.include_row_numbers': "true" + } + ) + assert 1 == len(data.columns) + assert 5 == len(data.columns[0].values) + assert 5 == len(data.rowNumbers) + + # Check that no row numbers come back when explicitly stating "false" + data = singleColumnFiveRowTable.read( + colNumbers, start, stop, { + 'omero.tables.include_row_numbers': "false" + } + ) + assert 1 == len(data.columns) + assert 5 == len(data.columns[0].values) + assert 0 == len(data.rowNumbers) # TODO: Add tests for error conditions