@Test public void test_equals_and_hashcode() { MeasureComputer.MeasureComputerDefinition computer = new MeasureComputerDefinitionImpl.BuilderImpl() .setInputMetrics("ncloc", "comment") .setOutputMetrics("comment_density_1", "comment_density_2") .build(); MeasureComputer.MeasureComputerDefinition sameComputer = new MeasureComputerDefinitionImpl.BuilderImpl() .setInputMetrics("comment", "ncloc") .setOutputMetrics("comment_density_2", "comment_density_1") .build(); MeasureComputer.MeasureComputerDefinition anotherComputer = new MeasureComputerDefinitionImpl.BuilderImpl() .setInputMetrics("comment") .setOutputMetrics("debt") .build(); assertThat(computer).isEqualTo(computer); assertThat(computer).isEqualTo(sameComputer); assertThat(computer).isNotEqualTo(anotherComputer); assertThat(computer).isNotEqualTo(null); assertThat(computer.hashCode()).isEqualTo(computer.hashCode()); assertThat(computer.hashCode()).isEqualTo(sameComputer.hashCode()); assertThat(computer.hashCode()).isNotEqualTo(anotherComputer.hashCode()); }
private static MeasureComputerDefinition validateDef(MeasureComputerDefinition def) { if (def instanceof MeasureComputerDefinitionImpl) { return def; } // If the computer has not been created by the builder, we recreate it to make sure it's valid Set<String> inputMetrics = def.getInputMetrics(); Set<String> outputMetrics = def.getOutputMetrics(); return new MeasureComputerDefinitionImpl.BuilderImpl() .setInputMetrics(from(inputMetrics).toArray(String.class)) .setOutputMetrics(from(outputMetrics).toArray(String.class)) .build(); } }
@Test public void test_to_string() { assertThat(new MeasureComputerDefinitionImpl.BuilderImpl() .setInputMetrics("ncloc", "comment") .setOutputMetrics("comment_density_1", "comment_density_2") .build().toString()) .isEqualTo("MeasureComputerDefinitionImpl{inputMetricKeys=[ncloc, comment], outputMetrics=[comment_density_1, comment_density_2]}"); }
@Test public void fail_with_IAE_when_building_definition_with_core_metrics_in_output_metrics() { thrown.expect(IllegalArgumentException.class); thrown.expectMessage("Core metrics are not allowed"); new MeasureComputerDefinitionBuilderImpl() .setInputMetrics("INPUT_1", "INPUT_2") .setOutputMetrics(CoreMetrics.NCLOC_KEY) .build(); } }
@Test public void fail_with_NPE_when_building_definition_with_on_null_ouput_metric() { thrown.expect(NullPointerException.class); thrown.expectMessage("Null metric is not allowed"); new MeasureComputerDefinitionBuilderImpl() .setInputMetrics("INPUT_1", "INPUT_2") .setOutputMetrics("OUTPUT_1", null) .build(); }
@Test public void fail_with_NPE_when_building_definition_with_on_null_input_metric() { thrown.expect(NullPointerException.class); thrown.expectMessage("Null metric is not allowed"); new MeasureComputerDefinitionBuilderImpl() .setInputMetrics("INPUT_1", null) .setOutputMetrics("OUTPUT_1", "OUTPUT_2") .build(); }
@Override public MeasureComputerDefinition define(MeasureComputerDefinitionContext defContext) { return defContext.newDefinitionBuilder() .setInputMetrics(inputMetrics) .setOutputMetrics(outputMetrics) .build(); }
@Test public void fail_with_IAE_when_building_definition_with_empty_output_metrics() { thrown.expect(IllegalArgumentException.class); thrown.expectMessage("At least one output metric must be defined"); new MeasureComputerDefinitionBuilderImpl() .setInputMetrics("INPUT_1", "INPUT_2") .setOutputMetrics() .build(); }
@Test public void input_metrics_can_be_empty() { MeasureComputer.MeasureComputerDefinition measureComputer = new MeasureComputerDefinitionImpl.BuilderImpl() .setInputMetrics() .setOutputMetrics("comment_density_1", "comment_density_2") .build(); assertThat(measureComputer.getInputMetrics()).isEmpty(); }
@Test public void fail_with_NPE_when_building_definition_without_output_metrics() { thrown.expect(NullPointerException.class); thrown.expectMessage("Output metrics cannot be null"); new MeasureComputerDefinitionBuilderImpl() .setInputMetrics("INPUT_1", "INPUT_2") .build(); }
@Test public void fail_with_NPE_when_building_definition_with_null_input_metrics() { thrown.expect(NullPointerException.class); thrown.expectMessage("Input metrics cannot be null"); new MeasureComputerDefinitionBuilderImpl() .setInputMetrics((String[]) null) .setOutputMetrics("OUTPUT_1", "OUTPUT_2") .build(); }
@Test public void build_definition_without_input_metric() { MeasureComputerDefinition definition = new MeasureComputerDefinitionBuilderImpl() .setOutputMetrics("OUTPUT_1", "OUTPUT_2") .build(); assertThat(definition.getInputMetrics()).isEmpty(); assertThat(definition.getOutputMetrics()).containsOnly("OUTPUT_1", "OUTPUT_2"); }
@Test public void build_measure_computer_with_multiple_metrics() { String[] inputMetrics = {"ncloc", "comment"}; String[] outputMetrics = {"comment_density_1", "comment_density_2"}; MeasureComputer.MeasureComputerDefinition measureComputer = new MeasureComputerDefinitionImpl.BuilderImpl() .setInputMetrics(inputMetrics) .setOutputMetrics(outputMetrics) .build(); assertThat(measureComputer.getInputMetrics()).containsOnly(inputMetrics); assertThat(measureComputer.getOutputMetrics()).containsOnly(outputMetrics); }
@Test public void fail_with_NPE_when_building_definition_with_null_output_metrics() { thrown.expect(NullPointerException.class); thrown.expectMessage("Output metrics cannot be null"); new MeasureComputerDefinitionBuilderImpl() .setInputMetrics("INPUT_1", "INPUT_2") .setOutputMetrics((String[]) null) .build(); }
@Test public void input_metrics_is_empty_when_not_set() { MeasureComputer.MeasureComputerDefinition measureComputer = new MeasureComputerDefinitionImpl.BuilderImpl() .setOutputMetrics("comment_density_1", "comment_density_2") .build(); assertThat(measureComputer.getInputMetrics()).isEmpty(); }
@Override public MeasureComputer.MeasureComputerDefinition define(MeasureComputer.MeasureComputerDefinitionContext defContext) { return new MeasureComputerDefinitionImpl.BuilderImpl() .setInputMetrics(NCLOC_KEY, COMMENT_LINES_KEY) .setOutputMetrics(NEW_METRIC_KEY) .build(); }
private MeasureComputerContextImpl newContext(int componentRef, String inputMetric, String outputMetric, List<DefaultIssue> issues) { componentIssuesRepository.setIssues(componentRef, issues); MeasureComputer.MeasureComputerDefinition definition = new MeasureComputerDefinitionImpl.BuilderImpl() .setInputMetrics(inputMetric) .setOutputMetrics(new String[] {outputMetric}) .build(); MeasureComputerContextImpl context = new MeasureComputerContextImpl(treeRootHolder.getComponentByRef(componentRef), settingsRepository, measureRepository, metricRepository, componentIssuesRepository); context.setDefinition(definition); return context; } }
@Test public void build_definition() { MeasureComputerDefinition definition = new MeasureComputerDefinitionBuilderImpl() .setInputMetrics("INPUT_1", "INPUT_2") .setOutputMetrics("OUTPUT_1", "OUTPUT_2") .build(); assertThat(definition.getInputMetrics()).containsOnly("INPUT_1", "INPUT_2"); assertThat(definition.getOutputMetrics()).containsOnly("OUTPUT_1", "OUTPUT_2"); }
@Test public void fail_with_NPE_when_no_output_metrics() { thrown.expect(NullPointerException.class); thrown.expectMessage("Output metrics cannot be null"); new MeasureComputerDefinitionImpl.BuilderImpl() .setInputMetrics("ncloc", "comment") .build(); }
@Test public void build_measure_computer_definition() { String inputMetric = "ncloc"; String outputMetric = "comment_density"; MeasureComputer.MeasureComputerDefinition measureComputer = new MeasureComputerDefinitionImpl.BuilderImpl() .setInputMetrics(inputMetric) .setOutputMetrics(outputMetric) .build(); assertThat(measureComputer.getInputMetrics()).containsOnly(inputMetric); assertThat(measureComputer.getOutputMetrics()).containsOnly(outputMetric); }