@Test
  public void score_is_0_when_no_match() {

    initializeNoMatchCriterion();

    profile.matches(criteria);

    assertThat(profile.score(), is(0));
  }
  @Test
  public void score_is_sum_when_some_match() {

    initializeSomeMatchCriteria();

    int score = Weight.Important.getValue() * 2;

    profile.matches(criteria);

    assertThat(profile.score(), is(score));
  }
  @Before
  public void setUp() {
    profile = new Profile("Test Profile");
    criteria = new Criteria();

    questionA = new BooleanQuestion(1, "Test Question A");
    questionB = new BooleanQuestion(2, "Test Question B");
    questionC = new BooleanQuestion(3, "Test Question C");

    profile.add(new Answer(questionA, Bool.TRUE));
    profile.add(new Answer(questionB, Bool.FALSE));
    profile.add(new Answer(questionC, Bool.TRUE));
  }
  @Test
  public void findsAnswersBasedOnPredicate() {
    profile.add(new Answer(new BooleanQuestion(1, "1"), Bool.FALSE));
    profile.add(new Answer(new PercentileQuestion(2, "2", new String[] {}), 0));
    profile.add(new Answer(new PercentileQuestion(3, "3", new String[] {}), 0));

    List<Answer> answers =
        profile.find(a -> a.getQuestion().getClass() == PercentileQuestion.class);
    assertThat(ids(answers), is(new int[] {2, 3}));

    List<Answer> complementAnswers =
        profile.find(a -> a.getQuestion().getClass() != PercentileQuestion.class);
    ArrayList<Answer> allAnswers = new ArrayList<>();
    allAnswers.addAll(answers);
    allAnswers.addAll(complementAnswers);
    assertThat(ids(allAnswers), is(new int[] {1, 2, 3}));
  }
 @Test
 public void false_when_no_match() {
   initializeNoMatchCriterion();
   assertThat(profile.matches(criteria), is(false));
 }
 @Test
 public void true_when_some_match() {
   initializeSomeMatchCriteria();
   assertThat(profile.matches(criteria), is(true));
 }
 @Test
 public void false_when_must_match_not_match() {
   initializeMustMatchNotMatchCriteria();
   assertThat(profile.matches(criteria), is(false));
 }
 @Test
 public void score_is_0_when_empty() {
   profile.matches(criteria);
   assertThat(profile.score(), is(0));
 }
 @Test
 public void false_when_empty() {
   assertThat(profile.matches(criteria), is(false));
 }