2 Commits
Author SHA1 Message Date
jieun ab2129a965 Add unit tests for exam scoring service 2026-10-20 20:41:04 +09:00
jieun d8ef029bef Implement exam scoring service 2026-10-20 20:36:47 +09:00
2 changed files with 52 additions and 0 deletions

No files matched your search

@@ -0,0 +1,15 @@
package com.example.questionbank.service.quiz;
import com.example.questionbank.domain.enumeration.OptionKey;
import org.springframework.stereotype.Service;
@Service
public class ExamScoringService {
public ScoringResult score(OptionKey correctOption, OptionKey selectedOption) {
boolean correct = selectedOption != null && selectedOption == correctOption;
return new ScoringResult(correct, correct ? 1 : 0);
}
public record ScoringResult(boolean correct, int awardedPoints) {}
}
@@ -0,0 +1,37 @@
package com.example.questionbank.service.quiz;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import com.example.questionbank.domain.enumeration.OptionKey;
import org.junit.jupiter.api.Test;
class ExamScoringServiceTest {
private final ExamScoringService service = new ExamScoringService();
@Test
void correctAnswerGetsOnePoint() {
var result = service.score(OptionKey.A, OptionKey.A);
assertTrue(result.correct());
assertEquals(1, result.awardedPoints());
}
@Test
void wrongAnswerGetsZeroPoints() {
var result = service.score(OptionKey.A, OptionKey.D);
assertFalse(result.correct());
assertEquals(0, result.awardedPoints());
}
@Test
void unansweredQuestionGetsZeroPoints() {
var result = service.score(OptionKey.A, null);
assertFalse(result.correct());
assertEquals(0, result.awardedPoints());
}
}