import pytest import json from flashcards import Session @pytest.fixture def cardFiles(tmp_path): card_files = [ tmp_path / "test1.fcard", tmp_path / "test2.fcard", ] for i, c in enumerate(card_files): with open(c, "w") as f: for j in range(0, 3): f.write(f"FRONT\nFile {i}, card {j} front\nBACK\nback\n") return card_files @pytest.fixture def stateFile(tmp_path): return tmp_path / "state.json" def test_practiceSession(cardFiles, stateFile): session = Session("brutal", cardFiles, stateFile) c = 0 for card in session.practice(5): c += 1 assert c == 5 def test_testSession(cardFiles, stateFile): session = Session("brutal", cardFiles, stateFile) c = 0 for i, (card, correct) in enumerate(session.test(5)): c += 1 correct(i % 2 == 0) assert c == 5 with open(stateFile, "r") as f: state = json.load(f) latest_scores = [history[-1] for id, history in state.items()] assert latest_scores.count(0) == 2 assert latest_scores.count(1) == 3