@Override
    public double getSmallestNonZeroValue() {
        if (minStorableValue != 0 || negateReverseDirection)
            throw new IllegalStateException("getting the smallest non-zero value is not possible if minValue!=0 or negateReverseDirection");
        return factor;
    }
@Test
    public void smallestNonZeroValue() {
        assertSmallestNonZeroValue(new DecimalEncodedValueImpl("test", 5, 10, true), 10);
        assertSmallestNonZeroValue(new DecimalEncodedValueImpl("test", 10, 10, true), 10);
        assertSmallestNonZeroValue(new DecimalEncodedValueImpl("test", 5, 5, true), 5);
        assertSmallestNonZeroValue(new DecimalEncodedValueImpl("test", 5, 1, true), 1);
        assertSmallestNonZeroValue(new DecimalEncodedValueImpl("test", 5, 0.5, true), 0.5);
        assertSmallestNonZeroValue(new DecimalEncodedValueImpl("test", 5, 0.1, true), 0.1);

        assertTrue(assertThrows(IllegalStateException.class,
                () -> new DecimalEncodedValueImpl("test", 5, 0, 5, true, false, false).getSmallestNonZeroValue())
                .getMessage().contains("getting the smallest non-zero value is not possible"));
    }