@Test
  public void get_requirement_by_rule_key() throws Exception {
    DefaultCharacteristic rootCharacteristic =
        new DefaultCharacteristic().setKey("MEMORY_EFFICIENCY").setName("Memory use");

    DefaultCharacteristic characteristic =
        new DefaultCharacteristic()
            .setKey("EFFICIENCY")
            .setName("Efficiency")
            .setParent(rootCharacteristic);

    RuleKey ruleKey = RuleKey.of("checkstyle", "Regexp");
    DefaultRequirement requirement =
        new DefaultRequirement()
            .setCharacteristic(characteristic)
            .setRuleKey(ruleKey)
            .setFunction("linear")
            .setFactorValue(2)
            .setFactorUnit(WorkDuration.UNIT.HOURS)
            .setOffsetValue(0)
            .setOffsetUnit(WorkDuration.UNIT.HOURS);

    sqaleModel.addRootCharacteristic(rootCharacteristic);

    assertThat(sqaleModel.requirementsByRule(ruleKey)).isEqualTo(requirement);
    assertThat(sqaleModel.requirementsByRule(RuleKey.of("not", "found"))).isNull();
  }
  @Test
  public void get_root_characteristics() throws Exception {
    DefaultCharacteristic rootCharacteristic =
        new DefaultCharacteristic().setKey("MEMORY_EFFICIENCY").setName("Memory use");

    new DefaultCharacteristic()
        .setKey("EFFICIENCY")
        .setName("Efficiency")
        .setParent(rootCharacteristic);

    sqaleModel.addRootCharacteristic(rootCharacteristic);

    assertThat(sqaleModel.rootCharacteristics()).hasSize(1);
    DefaultCharacteristic resultRootCharacteristic = sqaleModel.rootCharacteristics().get(0);
    assertThat(resultRootCharacteristic).isEqualTo(rootCharacteristic);
  }
  @Test
  public void get_characteristic_by_key() throws Exception {
    DefaultCharacteristic rootCharacteristic =
        new DefaultCharacteristic().setKey("MEMORY_EFFICIENCY").setName("Memory use");

    DefaultCharacteristic characteristic =
        new DefaultCharacteristic()
            .setKey("EFFICIENCY")
            .setName("Efficiency")
            .setParent(rootCharacteristic);

    sqaleModel.addRootCharacteristic(rootCharacteristic);

    assertThat(sqaleModel.characteristicByKey("MEMORY_EFFICIENCY")).isEqualTo(rootCharacteristic);
    assertThat(sqaleModel.characteristicByKey("EFFICIENCY")).isEqualTo(characteristic);
    assertThat(sqaleModel.characteristicByKey("EFFICIENCY").parent()).isEqualTo(rootCharacteristic);

    assertThat(sqaleModel.characteristicByKey("UNKNOWN")).isNull();
  }