### Question:
LogValueScale implements ValueScale { static ListDouble generateReferenceValues(Range range, int subdivisionFactor) { CircularBufferDouble values = new CircularBufferDouble(100000); double minValue = range.getMinimum(); double maxValue = range.getMaximum(); int minExp = MathUtil.orderOf(minValue); int maxExp = MathUtil.orderOf(maxValue); int currentExp = minExp; while (currentExp <= maxExp) { double currentOrder = Math.pow(10, currentExp); if (currentOrder <= maxValue && currentOrder >= minValue) { values.addDouble(currentOrder); } for (int i = 0; i < subdivisionFactor; i++) { double newValue = (currentOrder * 10 * i) / subdivisionFactor; if ((newValue <= maxValue) && (newValue > currentOrder) && (newValue > minValue)) { values.addDouble(newValue); } } currentExp++; } return values; }  @Override double scaleValue(double value, double minValue, double maxValue, double newMinValue, double newMaxValue); @Override double invScaleValue(double scaleValue, double actualMinValue, double actualMaxValue, double scaleMinValue, double scaleMaxValue); @Override ValueAxis references(Range range, int minRefs, int maxRefs);  }### Answer:
@Test public void generateReferenceValues1() { assertThat(LogValueScale.generateReferenceValues(Ranges.range(1, 10), 1), equalTo((ListDouble) new ArrayDouble(1, 10))); }
@Test public void generateReferenceValues2() { assertThat(LogValueScale.generateReferenceValues(Ranges.range(1, 10), 2), equalTo((ListDouble) new ArrayDouble(1, 5, 10))); }
@Test public void generateReferenceValues3() { assertThat(LogValueScale.generateReferenceValues(Ranges.range(1, 10), 5), equalTo((ListDouble) new ArrayDouble(1, 2, 4, 6, 8, 10))); }
@Test public void generateReferenceValues4() { assertThat(LogValueScale.generateReferenceValues(Ranges.range(1, 10), 10), equalTo((ListDouble) new ArrayDouble(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))); }
@Test public void generateReferenceValues5() { assertThat(LogValueScale.generateReferenceValues(Ranges.range(1, 3), 10), equalTo((ListDouble) new ArrayDouble(1, 2, 3))); }
@Test public void generateReferenceValues6() { assertThat(LogValueScale.generateReferenceValues(Ranges.range(1, 1.5), 100), equalTo((ListDouble) new ArrayDouble(1, 1.1, 1.2, 1.3, 1.4, 1.5))); }
@Test public void generateReferenceValues7() { assertThat(LogValueScale.generateReferenceValues(Ranges.range(1, 10000), 1), equalTo((ListDouble) new ArrayDouble(1, 10, 100, 1000, 10000))); }
@Test public void generateReferenceValues8() { assertThat(LogValueScale.generateReferenceValues(Ranges.range(1, 10000), 2), equalTo((ListDouble) new ArrayDouble(1, 5, 10, 50, 100, 500, 1000, 5000, 10000))); }
@Test public void generateReferenceValues9() { assertThat(LogValueScale.generateReferenceValues(Ranges.range(5, 50), 5), equalTo((ListDouble) new ArrayDouble(6,8,10,20,40))); }