0

I need to mock a Cursor for some content provider unit tests, but the addRow method is not working for some strange reason. After adding a row, the count always remains 0.

What am I missing?

@Test fun addCursorTest() { val columns: Array<String> = arrayOf( "name", "age" ) val matrixCursor : Cursor = MatrixCursor(columns).apply { addRow(arrayOf("name1", 18)) addRow(arrayOf("name2", 26)) } println("cursor count = ${matrixCursor.count}") //prints "cursor count = 0" assertEquals(2, matrixCursor.count) } 

1 Answer 1

0

If you omit the assertEquals and the @Test then there is no issue.

i.e. using:-

@SuppressLint("Range") fun addCursorTest() { val columns: Array<String> = arrayOf( "name", "age" ) val matrixCursor : Cursor = MatrixCursor(columns).apply { addRow(arrayOf("name1", 18)) addRow(arrayOf("name2", 26)) } Log.d("CURSORINFO","Cursor Count is ${matrixCursor.count}") while (matrixCursor.moveToNext()) { val sb = StringBuilder() for (s in matrixCursor.columnNames) { sb.append("\n\tColumn is ${s} Value is ") sb.append(matrixCursor.getString(matrixCursor.getColumnIndex(s))).append(" ") } Log.d("CURSORINFO",sb.toString()) } println("cursor count = ${matrixCursor.count}") //prints "cursor count = 0" //assertEquals(2, matrixCursor.count) } 
  • @SuppressLint("Range") added as for whatever reason the potential for a -1 (column not found result from getColumnIndex(the_column) results in a range error, of course just will not happen when traversing the columns in the actual Cursor unless the Cursor has been corrupted)

results in the log including:-

2023-06-09 10:17:29.550 D/CURSORINFO: Cursor Count is 2 2023-06-09 10:17:29.551 D/CURSORINFO: Column is name Value is name1 Column is age Value is 18 2023-06-09 10:17:29.551 D/CURSORINFO: Column is name Value is name2 Column is age Value is 26 2023-06-09 10:17:29.551 I/System.out: cursor count = 2 

You may wish to refer to assertEquals not working as expected with Set in Kotlin

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.