### Question:
CombinationUtil { public static boolean contains(int[] firstCombination, int[] secondCombination) { checkNotNullAndSameLength(firstCombination, secondCombination); for (int i = 0; i < firstCombination.length; i++) { if (secondCombination[i] != NO_VALUE && firstCombination[i] != secondCombination[i]) { return false; } } return true; } private  CombinationUtil(); static int[] emptyCombination(int size); static boolean contains(int[] firstCombination, int[] secondCombination); static boolean canBeAdded(int[] combination, int[] toBeAdded, ConstraintChecker constraintChecker); static void add(int[] combination, int[] toBeAdded); static boolean containsAllParameters(int[] combination, IntSet parameterIndices); static boolean containsAllParameters(int[] combination, int untilParameter); static boolean sameForAllGivenParameters(int[] first, int[] second, IntSet parameters); static int numberOfSetParameters(int[] combination); static final int NO_VALUE; }### Answer:
@Test void containsThrowsIfNotSameLengthOrNull() { Assertions.assertThrows(NullPointerException.class, () -> CombinationUtil.contains(null, new int[0])); Assertions.assertThrows(NullPointerException.class, () -> CombinationUtil.contains(new int[0], null)); Assertions.assertThrows(IllegalArgumentException.class, () -> CombinationUtil.contains(new int[0], new int[]{1})); Assertions.assertThrows(IllegalArgumentException.class, () -> CombinationUtil.contains(new int[]{1, 2}, new int[]{1})); }