diff --git a/src/main/java/kyu6/TribonacciSequence.java b/src/main/java/kyu6/TribonacciSequence.java index a8749d1..2438955 100644 --- a/src/main/java/kyu6/TribonacciSequence.java +++ b/src/main/java/kyu6/TribonacciSequence.java @@ -5,6 +5,7 @@ public class TribonacciSequence { private static final int SIGNATURE_SIZE = 3; + private static final int MAX_SEQUENCE_LENGTH = 1_000_000; //6 https://www.codewars.com/kata/556deca17c58da83c00002db @@ -12,8 +13,10 @@ public static double[] tribonacci(double[] s, int n) { if (s == null || s.length != SIGNATURE_SIZE) { throw new IllegalArgumentException("signature must contain exactly three values"); } - if (n < 0) { - throw new IllegalArgumentException("sequence length must not be negative"); + if (n < 0 || n > MAX_SEQUENCE_LENGTH) { + throw new IllegalArgumentException( + "sequence length must be between 0 and " + MAX_SEQUENCE_LENGTH + ); } double[] result = new double[n]; int signatureLength = Math.min(SIGNATURE_SIZE, n); diff --git a/src/test/java/kyu6/TribonacciSequenceTest.java b/src/test/java/kyu6/TribonacciSequenceTest.java index c308ca7..34e022b 100644 --- a/src/test/java/kyu6/TribonacciSequenceTest.java +++ b/src/test/java/kyu6/TribonacciSequenceTest.java @@ -31,5 +31,9 @@ void shouldRejectInvalidSignatureAndLength() { assertThrows(IllegalArgumentException.class, () -> TribonacciSequence.tribonacci(null, 1)); assertThrows(IllegalArgumentException.class, () -> TribonacciSequence.tribonacci(new double[]{1, 1}, 2)); assertThrows(IllegalArgumentException.class, () -> TribonacciSequence.tribonacci(new double[]{1, 1, 1}, -1)); + assertThrows( + IllegalArgumentException.class, + () -> TribonacciSequence.tribonacci(new double[]{1, 1, 1}, Integer.MAX_VALUE) + ); } }