@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"); }
private static String[] validateOutputMetricKeys(String[] outputMetrics) { requireNonNull(outputMetrics, "Output metrics cannot be null"); checkArgument(outputMetrics.length > 0, "At least one output metric must be defined"); List<String> outputMetricKeys = asList(outputMetrics); CoreMetrics.getMetrics().stream() .map(Metric::getKey) .forEach(metricKey -> checkArgument(!outputMetricKeys.contains(metricKey), "Core metrics are not allowed")); checkNotNull(outputMetrics); return outputMetrics; }
@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"); }
@Override public Builder setInputMetrics(String... inputMetrics) { this.inputMetricKeys = validateInputMetricKeys(inputMetrics); return this; }
@Override public MeasureComputer.MeasureComputerDefinition.Builder newDefinitionBuilder() { return new TestMeasureComputerDefinition.MeasureComputerDefinitionBuilderImpl(); } }
private static String[] validateInputMetricKeys(String[] inputMetrics) { requireNonNull(inputMetrics, "Input metrics cannot be null"); checkNotNull(inputMetrics); return inputMetrics; }
@Override public MeasureComputer.MeasureComputerDefinition build() { validateInputMetricKeys(this.inputMetricKeys); validateOutputMetricKeys(this.outputMetrics); return new TestMeasureComputerDefinition(this); }
private static String[] validateOutputMetricKeys(String[] outputMetrics) { requireNonNull(outputMetrics, "Output metrics cannot be null"); checkArgument(outputMetrics.length > 0, "At least one output metric must be defined"); List<String> outputMetricKeys = asList(outputMetrics); CoreMetrics.getMetrics().stream() .map(Metric::getKey) .forEach(metricKey -> checkArgument(!outputMetricKeys.contains(metricKey), "Core metrics are not allowed")); checkNotNull(outputMetrics); return outputMetrics; }
@Override public Builder setOutputMetrics(String... outputMetrics) { this.outputMetrics = validateOutputMetricKeys(outputMetrics); return this; }
@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(); }
private static String[] validateInputMetricKeys(String[] inputMetrics) { requireNonNull(inputMetrics, "Input metrics cannot be null"); checkNotNull(inputMetrics); return inputMetrics; }
@Override public MeasureComputer.MeasureComputerDefinition build() { validateInputMetricKeys(this.inputMetricKeys); validateOutputMetricKeys(this.outputMetrics); return new TestMeasureComputerDefinition(this); }
@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 MeasureComputer.MeasureComputerDefinition.Builder newDefinitionBuilder() { return new TestMeasureComputerDefinition.MeasureComputerDefinitionBuilderImpl(); } }
@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(); }
@Override public Builder setOutputMetrics(String... outputMetrics) { this.outputMetrics = validateOutputMetricKeys(outputMetrics); return this; }
@Override public Builder setInputMetrics(String... inputMetrics) { this.inputMetricKeys = validateInputMetricKeys(inputMetrics); return this; }