import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.util.Arrays; public class SimpleTest { private final Investment invest = new MyInvestment(); private int profit(int[] values, BuySell p) { return values[p.sell()] - values[p.buy()]; } @Test public void testExample() { int[] numbers = new int[]{9,1,5}; Assertions.assertEquals(new BuySell(1,2), invest.bestInvestment(numbers), "Incorrect buy/sell for input: " + Arrays.toString(numbers) + "."); } @Test public void testNoBuy() { int[] numbers = new int[]{5, 4, 4, 4, 3, 3, 2, 1}; Assertions.assertNull(invest.bestInvestment(numbers), "Incorrect buy/sell for input: " + Arrays.toString(numbers) + "."); } @Test public void testOneDay() { int[] numbers = new int[]{1}; Assertions.assertNull(invest.bestInvestment(numbers), "Incorrect buy/sell for input: " + Arrays.toString(numbers) + "."); } @Test public void testEmpty() { int[] numbers = new int[]{}; Assertions.assertNull(invest.bestInvestment(numbers), "Incorrect buy/sell for input: " + Arrays.toString(numbers) + "."); } @Test public void testMerge() { int[] numbers = new int[]{5, 1, 1, 1, 20, 10, 10, 5}; BuySell actual = invest.bestInvestment(numbers); Assertions.assertEquals(19, profit(numbers, actual), "Incorrect buy/sell for input: " + Arrays.toString(numbers) + "."); } @Test public void testLeft() { int[] numbers = new int[]{1, 1, 20, 1, 1, 1, 1, 1}; BuySell actual = invest.bestInvestment(numbers); Assertions.assertEquals(19, profit(numbers, actual), "Incorrect buy/sell for input: " + Arrays.toString(numbers) + "."); } @Test public void testRight() { int[] numbers = new int[]{1, 1, 1, 1, 1, 1, 20, 1}; BuySell actual = invest.bestInvestment(numbers); Assertions.assertEquals(19, profit(numbers, actual), "Incorrect buy/sell for input: " + Arrays.toString(numbers) + "."); } }