This tests that cellForRowAndColumn work as expected when cells are hidden in sections and rows.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".



Table1 has a hidden first row. Verify accessing cells works as expected.
PASS table1.rowCount is 2
PASS !table1cell1 || !table1cell1.isValid is true
PASS table1cell2.isEqual(accessibilityController.accessibleElementById('table1cell')) is true
PASS table1cell2.rowIndexRange() is '{1, 1}'
PASS table1cell2.columnIndexRange() is '{0, 1}'

Table2 has a hidden first section. Verify accessing cells works as expected.
PASS table2.rowCount is 2
PASS !table2cell1 || !table2cell1.isValid is true
PASS table2cell2.isEqual(accessibilityController.accessibleElementById('table2cell')) is true
PASS table2cell2.rowIndexRange() is '{1, 1}'
PASS table2cell2.columnIndexRange() is '{0, 1}'

Table3 only has a footer section.
PASS table3.rowCount is 3
PASS !table3cell1 || !table3cell1.isValid is true
PASS table3cell2.isEqual(accessibilityController.accessibleElementById('table3cell')) is true
PASS table3cell2.rowIndexRange() is '{2, 1}'
PASS table3cell2.columnIndexRange() is '{0, 1}'
PASS successfullyParsed is true

TEST COMPLETE

