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 * https://github.com/exercism/x-common/blob/19d0c7714ce664a1ad762af624c17f8e269fa8b2/exercises/perfect-numbers/canonical-data.json */ public final class NaturalNumberTest { /* * See https://github.com/junit-team/junit4/wiki/Rules for information on JUnit Rules in general and * ExpectedExceptions in particular. */ @Rule public ExpectedException expectedException = ExpectedException.none(); @Test public void testSmallPerfectNumberIsClassifiedCorrectly() { assertEquals(Classification.PERFECT, new NaturalNumber(6).getClassification()); } @Ignore("Remove to run test") @Test public void testMediumPerfectNumberIsClassifiedCorrectly() { assertEquals(Classification.PERFECT, new NaturalNumber(28).getClassification()); } @Ignore("Remove to run test") @Test public void testLargePerfectNumberIsClassifiedCorrectly() { assertEquals(Classification.PERFECT, new NaturalNumber(33550336).getClassification()); } @Ignore("Remove to run test") @Test public void testSmallAbundantNumberIsClassifiedCorrectly() { assertEquals(Classification.ABUNDANT, new NaturalNumber(12).getClassification()); } @Ignore("Remove to run test") @Test public void testMediumAbundantNumberIsClassifiedCorrectly() { assertEquals(Classification.ABUNDANT, new NaturalNumber(30).getClassification()); } @Ignore("Remove to run test") @Test public void testLargeAbundantNumberIsClassifiedCorrectly() { assertEquals(Classification.ABUNDANT, new NaturalNumber(33550335).getClassification()); } @Ignore("Remove to run test") @Test public void testSmallestPrimeDeficientNumberIsClassifiedCorrectly() { assertEquals(Classification.DEFICIENT, new NaturalNumber(2).getClassification()); } @Ignore("Remove to run test") @Test public void testSmallestNonPrimeDeficientNumberIsClassifiedCorrectly() { assertEquals(Classification.DEFICIENT, new NaturalNumber(4).getClassification()); } @Ignore("Remove to run test") @Test public void testMediumDeficientNumberIsClassifiedCorrectly() { assertEquals(Classification.DEFICIENT, new NaturalNumber(32).getClassification()); } @Ignore("Remove to run test") @Test public void testLargeDeficientNumberIsClassifiedCorrectly() { assertEquals(Classification.DEFICIENT, new NaturalNumber(33550337).getClassification()); } @Ignore("Remove to run test") @Test /* * The number 1 has no proper divisors (https://en.wikipedia.org/wiki/Divisor#Further_notions_and_facts), and the * additive identity is 0, so the aliquot sum of 1 should be 0. Hence 1 should be classified as deficient. */ public void testThatOneIsCorrectlyClassifiedAsDeficient() { assertEquals(Classification.DEFICIENT, new NaturalNumber(1).getClassification()); } @Ignore("Remove to run test") @Test public void testThatNonNegativeIntegerIsRejected() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("You must supply a natural number (positive integer)"); new NaturalNumber(0); } @Ignore("Remove to run test") @Test public void testThatNegativeIntegerIsRejected() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("You must supply a natural number (positive integer)"); new NaturalNumber(-1); } }