/** Test giving the answer for a reviewed card */ public void testAnswerCard() { Collection col; col = CollectionHelper.getInstance().getCol(getContext()); Sched sched = col.getSched(); long deckId = mTestDeckIds[0]; col.getDecks().select(deckId); Card card = sched.getCard(); ContentResolver cr = getContext().getContentResolver(); Uri reviewInfoUri = FlashCardsContract.ReviewInfo.CONTENT_URI; ContentValues values = new ContentValues(); long noteId = card.note().getId(); int cardOrd = card.getOrd(); int ease = AbstractFlashcardViewer.EASE_3; // <- insert real ease here values.put(FlashCardsContract.ReviewInfo.NOTE_ID, noteId); values.put(FlashCardsContract.ReviewInfo.CARD_ORD, cardOrd); values.put(FlashCardsContract.ReviewInfo.EASE, ease); int updateCount = cr.update(reviewInfoUri, values, null, null); assertEquals("Check if update returns 1", 1, updateCount); sched.reset(); Card newCard = sched.getCard(); if (newCard != null) { if (newCard.note().getId() == card.note().getId() && newCard.getOrd() == card.getOrd()) { fail("Next scheduled card has not changed"); } } else { // We expected this } }
/** * Test that query for the next card in the schedule returns a valid result WITH a deck selector */ public void testQueryCardFromCertainDeck() { long deckToTest = mTestDeckIds[0]; String deckSelector = "deckID=?"; String deckArguments[] = {Long.toString(deckToTest)}; Collection col; col = CollectionHelper.getInstance().getCol(getContext()); Sched sched = col.getSched(); long selectedDeckBeforeTest = col.getDecks().selected(); col.getDecks().select(1); // select Default deck Cursor reviewInfoCursor = getContext() .getContentResolver() .query( FlashCardsContract.ReviewInfo.CONTENT_URI, null, deckSelector, deckArguments, null); assertNotNull(reviewInfoCursor); assertEquals("Check that we actually received one card", 1, reviewInfoCursor.getCount()); try { reviewInfoCursor.moveToFirst(); int cardOrd = reviewInfoCursor.getInt( reviewInfoCursor.getColumnIndex(FlashCardsContract.ReviewInfo.CARD_ORD)); long noteID = reviewInfoCursor.getLong( reviewInfoCursor.getColumnIndex(FlashCardsContract.ReviewInfo.NOTE_ID)); assertEquals("Check that the selected deck has not changed", 1, col.getDecks().selected()); col.getDecks().select(deckToTest); Card nextCard = null; for (int i = 0; i < 10; i++) { // minimizing fails, when sched.reset() randomly chooses between multiple cards sched.reset(); nextCard = sched.getCard(); if (nextCard.note().getId() == noteID && nextCard.getOrd() == cardOrd) break; } assertNotNull("Check that there actually is a next scheduled card", nextCard); assertEquals( "Check that received card and actual card have same note id", nextCard.note().getId(), noteID); assertEquals( "Check that received card and actual card have same card ord", nextCard.getOrd(), cardOrd); } finally { reviewInfoCursor.close(); } col.getDecks().select(selectedDeckBeforeTest); }
/** * Test that query for the next card in the schedule returns a valid result without any deck * selector */ public void testQueryNextCard() { Collection col; col = CollectionHelper.getInstance().getCol(getContext()); Sched sched = col.getSched(); Cursor reviewInfoCursor = getContext() .getContentResolver() .query(FlashCardsContract.ReviewInfo.CONTENT_URI, null, null, null, null); assertNotNull(reviewInfoCursor); assertEquals("Check that we actually received one card", 1, reviewInfoCursor.getCount()); reviewInfoCursor.moveToFirst(); int cardOrd = reviewInfoCursor.getInt( reviewInfoCursor.getColumnIndex(FlashCardsContract.ReviewInfo.CARD_ORD)); long noteID = reviewInfoCursor.getLong( reviewInfoCursor.getColumnIndex(FlashCardsContract.ReviewInfo.NOTE_ID)); Card nextCard = null; for (int i = 0; i < 10; i++) { // minimizing fails, when sched.reset() randomly chooses between multiple cards sched.reset(); nextCard = sched.getCard(); if (nextCard.note().getId() == noteID && nextCard.getOrd() == cardOrd) break; } assertNotNull("Check that there actually is a next scheduled card", nextCard); assertEquals( "Check that received card and actual card have same note id", nextCard.note().getId(), noteID); assertEquals( "Check that received card and actual card have same card ord", nextCard.getOrd(), cardOrd); }