You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
decky/packages/practice_engine/test/priority_manager_test.dart

103 lines
2.5 KiB

import 'package:test/test.dart';
import 'package:practice_engine/models/question.dart';
import 'package:practice_engine/models/deck_config.dart';
import 'package:practice_engine/algorithms/priority_manager.dart';
void main() {
group('PriorityManager', () {
late DeckConfig config;
setUp(() {
config = const DeckConfig(
priorityIncreaseOnIncorrect: 5,
priorityDecreaseOnCorrect: 2,
);
});
test('increases priority on incorrect answer', () {
final question = Question(
id: 'q1',
prompt: 'Test',
answers: ['A', 'B'],
correctAnswerIndices: [0],
priorityPoints: 10,
);
final updated = PriorityManager.applyAnswerResult(
question: question,
isCorrect: false,
config: config,
);
expect(updated.priorityPoints,
equals(10 + config.priorityIncreaseOnIncorrect));
});
test('decreases priority on correct answer', () {
final question = Question(
id: 'q1',
prompt: 'Test',
answers: ['A', 'B'],
correctAnswerIndices: [0],
priorityPoints: 10,
);
final updated = PriorityManager.applyAnswerResult(
question: question,
isCorrect: true,
config: config,
);
expect(updated.priorityPoints,
equals(10 - config.priorityDecreaseOnCorrect));
});
test('priority cannot go below 0', () {
final question = Question(
id: 'q1',
prompt: 'Test',
answers: ['A', 'B'],
correctAnswerIndices: [0],
priorityPoints: 1,
);
final updated = PriorityManager.applyAnswerResult(
question: question,
isCorrect: true,
config: config,
);
expect(updated.priorityPoints, equals(0));
});
test('resetPriority sets priority to 0', () {
final question = Question(
id: 'q1',
prompt: 'Test',
answers: ['A', 'B'],
correctAnswerIndices: [0],
priorityPoints: 100,
);
final updated = PriorityManager.resetPriority(question);
expect(updated.priorityPoints, equals(0));
});
test('withPriorityPoints enforces non-negative priority', () {
final question = Question(
id: 'q1',
prompt: 'Test',
answers: ['A', 'B'],
correctAnswerIndices: [0],
priorityPoints: 10,
);
final updated = question.withPriorityPoints(-5);
expect(updated.priorityPoints, equals(0));
});
});
}

Powered by TurnKey Linux.