import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;

import static org.junit.Assert.assertEquals;

/*
 * version: 1.0.0
 */
public class CollatzCalculatorTest {

    @Rule
    public ExpectedException expectedException = ExpectedException.none();

    private CollatzCalculator collatzCalculator;

    @Before
    public void setUp() {
        collatzCalculator = new CollatzCalculator();
    }

    @Test
    public void testZeroStepsRequiredWhenStartingFrom1() {
        assertEquals(0, collatzCalculator.computeStepCount(1));
    }

    @Ignore("Remove to run test")
    @Test
    public void testCorrectNumberOfStepsWhenAllStepsAreDivisions() {
        assertEquals(4, collatzCalculator.computeStepCount(16));
    }

    @Ignore("Remove to run test")
    @Test
    public void testCorrectNumberOfStepsWhenBothStepTypesAreNeeded() {
        assertEquals(9, collatzCalculator.computeStepCount(12));
    }

    @Ignore("Remove to run test")
    @Test
    public void testZeroIsConsideredInvalidInput() {
        expectedException.expect(IllegalArgumentException.class);
        expectedException.expectMessage("Only natural numbers are allowed");

        collatzCalculator.computeStepCount(0);
    }

    @Ignore("Remove to run test")
    @Test
    public void testNegativeIntegerIsConsideredInvalidInput() {
        expectedException.expect(IllegalArgumentException.class);
        expectedException.expectMessage("Only natural numbers are allowed");

        collatzCalculator.computeStepCount(-15);
    }

}

@@ -195,17 +195,17 @@
 sion: 1.
-0
+1
 .0%0A */%0Ap
@@ -979,32 +979,195 @@
 nt(12));%0A    %7D%0A%0A
+    @Ignore(%22Remove to run test%22)%0A    @Test%0A    public void testAVeryLargeInput() %7B%0A        assertEquals(152, collatzCalculator.computeStepCount(1000000));%0A    %7D%0A%0A
     @Ignore(%22Rem

update to latest tests