package com.huixinpn.dionysus.domain.psychtest.eval; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.junit.Assert; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import com.huixinpn.dionysus.AbstractPersistentTest; import com.huixinpn.dionysus.domain.psychtest.PsychTest; import com.huixinpn.dionysus.domain.psychtest.PsychTest.PsychTestType; import com.huixinpn.dionysus.domain.psychtest.PsychTestAnswer; import com.huixinpn.dionysus.domain.psychtest.PsychTestQuestion; import com.huixinpn.dionysus.domain.psychtest.PsychTestQuestion.PsychTestQuestionType; import com.huixinpn.dionysus.domain.psychtest.PsychTestQuestionOption; import com.huixinpn.dionysus.domain.psychtest.PsychTestResult; import com.huixinpn.dionysus.domain.psychtest.eval.PF16EvaluationStrategy.Answer; import com.huixinpn.dionysus.repository.psychtest.PsychTestResultRepository; public class PF16EvaluationStrategyTest extends AbstractPersistentTest { @Autowired PsychTestResultRepository repository; @Autowired PsychTestEvaluationFactory factory; @Test public void testAnswerInitialzation() { PF16EvaluationStrategy strategy = new PF16EvaluationStrategy(); Answer a = strategy.requestAnswer(3); Assert.assertEquals(a.getFactor(), "A"); Assert.assertEquals(a.getValues(), "ab"); Assert.assertEquals(a.calculateScore("a"), 2); Assert.assertEquals(a.calculateScore("A"), 2); Assert.assertEquals(a.calculateScore("c"), 0); Assert.assertEquals(a.calculateScore("b"), 1); Answer b = strategy.requestAnswer(177); Assert.assertEquals(b.getFactor(), "B"); Assert.assertEquals(b.getValues(), "a"); Assert.assertEquals(b.calculateScore("a"), 1); Assert.assertEquals(b.calculateScore("b"), 0); Assert.assertEquals(b.calculateScore("c"), 0); Answer f = strategy.requestAnswer(1); Assert.assertEquals(f.calculateScore("a"), 0); Answer z = strategy.requestAnswer(999); Assert.assertEquals(z.calculateScore("a"), 0); Assert.assertEquals(a.calculateScore("z"), 0); Assert.assertEquals(b.calculateScore("x"), 0); } @Test public void testVisitor() { PsychTestResult result = new PsychTestResult(); PsychTest test = new PsychTest(); test.setType(PsychTestType.PF16); result.setTest(test); List<PsychTestAnswer> answers = new ArrayList<PsychTestAnswer>(); PsychTestAnswer answer = new PsychTestAnswer(); PsychTestQuestion q = new PsychTestQuestion(); q.setType(PsychTestQuestionType.SINGLE_CHOICE); q.setSubId(3); PsychTestQuestionOption option = new PsychTestQuestionOption(); List<PsychTestQuestionOption> options = new ArrayList<>(); options.add(option); option.setIdentity("A"); option.setQuestion(q); q.setOptions(options); answer.setQuestion(q); answer.setOption(option); answers.add(answer); result.setAnswers(answers); PsychTestEvaluationStrategy strategy = factory.create(result.getTest().getType()); Object obj = strategy.evaluate(result); @SuppressWarnings("unchecked") Map<String, Integer> score = (Map<String, Integer>) obj; // Map<String, Integer> results = PF16Normalization.normalize(score, PF16Normalization.ADULT_MALE); Assert.assertEquals(2, score.get("A").intValue()); Assert.assertEquals(2, score.get("normal_A").intValue()); } }