1 package civitas.crypto.algorithms.tests;
2
3 import static org.junit.jupiter.api.Assertions.assertEquals;
4 import static org.mockito.Mockito.verify;
5 import static org.mockito.Mockito.verifyNoInteractions;
6
7 import org.junit.jupiter.api.DisplayName;
8 import org.junit.jupiter.api.Test;
9 import org.mockito.InjectMocks;
10 import org.mockito.Mock;
11
12 import civitas.crypto.CryptoBase;
13 import civitas.crypto.algorithms.GenerateRandomInt;
14 import civitas.util.tests.BasicValuesTestData;
15 import io.github.magwas.konveyor.testing.TestBase;
16
17 class GenerateRandomIntTest extends TestBase implements BasicValuesTestData {
18 @InjectMocks
19 GenerateRandomInt generateRandomInt;
20
21 @Mock
22 CryptoBase cryptoBase;
23
24 @Test
25 @DisplayName("uses the right random number generator")
26 void test4() {
27 int actual = generateRandomInt.apply(SOME_SMALL_INT);
28 verify(cryptoBase.getRandomGenerator()).nextInt(SOME_SMALL_INT);
29 assertEquals(SOME_SMALL_INT - 1, actual, "actual:" + actual);
30 }
31
32 @Test
33 @DisplayName("if n < 0, returns 0")
34 void test2() {
35 int actual = generateRandomInt.apply(-1);
36 verifyNoInteractions(cryptoBase.getRandomGenerator());
37 assertEquals(0, actual);
38 }
39
40 @Test
41 @DisplayName("if n == 0, returns 0")
42 void test3() throws IllegalAccessException {
43 int actual = generateRandomInt.apply(0);
44 verifyNoInteractions(cryptoBase.getRandomGenerator());
45 assertEquals(0, actual);
46 }
47 }