name:
src/test/java/io/protobase/f7/formulas/math/RANDBETWEENTest.java
-rw-r--r--
2868
1package io.protobase.f7.formulas.math;
2
3import io.protobase.f7.errors.NAException;
4import io.protobase.f7.errors.NumException;
5import io.protobase.f7.testutils.TestFormula;
6import org.junit.Test;
7
8import static com.google.common.truth.Truth.assertThat;
9import static org.mockito.Mockito.verify;
10import static org.mockito.Mockito.verifyNoMoreInteractions;
11import static org.mockito.Mockito.when;
12
13public class RANDBETWEENTest extends TestFormula {
14
15 @Test
16 public void testApply_integers() {
17 for (int i = 0; i < 100000; i++) {
18 Double one = ((Double) RANDBETWEEN.SELF.apply(null, 1.0, 3.0));
19 assertThat(one).isAtLeast(1.0);
20 assertThat(one).isAtMost(3.0);
21 }
22 for (int i = 0; i < 100000; i++) {
23 Double one = ((Double) RANDBETWEEN.SELF.apply(null, 4.0, 5.0));
24 assertThat(one).isAtLeast(4.0);
25 assertThat(one).isAtMost(5.0);
26 }
27 for (int i = 0; i < 100000; i++) {
28 Double one = ((Double) RANDBETWEEN.SELF.apply(null, -1.0, 2.0));
29 assertThat(one).isAtLeast(-1.0);
30 assertThat(one).isAtMost(2.0);
31 }
32 }
33
34 @Test
35 public void testApply_doubles() {
36 for (int i = 0; i < 100000; i++) {
37 Double one = ((Double) RANDBETWEEN.SELF.apply(null, 1.1, 2.1));
38 assertThat(one).isAtLeast(1.0);
39 assertThat(one).isAtMost(3.0);
40 }
41 for (int i = 0; i < 100000; i++) {
42 Double one = ((Double) RANDBETWEEN.SELF.apply(null, 4.9, 4.9));
43 assertThat(one).isAtLeast(4.0);
44 assertThat(one).isAtMost(5.0);
45 }
46 for (int i = 0; i < 100000; i++) {
47 assertThat(RANDBETWEEN.SELF.apply(null, 22.29348794, 24.0)).isAnyOf(23.0, 24.0);
48 }
49 assertThat(RANDBETWEEN.SELF.apply(null, 0.0, 0.0)).isEqualTo(0.0);
50 assertThat(RANDBETWEEN.SELF.apply(null, 22.29348794, 22.29348794)).isEqualTo(23.0);
51 }
52
53 @Test
54 public void testApply_booleans() {
55 for (int i = 0; i < 100000; i++) {
56 Double one = ((Double) RANDBETWEEN.SELF.apply(null, false, true));
57 assertThat(one).isAtLeast(0.0);
58 assertThat(one).isAtMost(1.0);
59 }
60 }
61
62 @Test
63 public void test_lookup() {
64 RANDBETWEEN F = new RANDBETWEEN(lookup, collateralLookup);
65 when(collateralLookup.apply(A1, M22_RANGE)).thenReturn(1.0);
66 when(collateralLookup.apply(A1, G19_RANGE)).thenReturn(10.0);
67 F.apply(A1, M22_RANGE, G19_RANGE);
68 verify(collateralLookup).apply(A1, M22_RANGE);
69 verify(collateralLookup).apply(A1, G19_RANGE);
70 verifyNoMoreInteractions(collateralLookup);
71 }
72
73 @Test
74 public void testApply_errorFromMisalignedHighAndLow() {
75 assertThat(RANDBETWEEN.SELF.apply(null, 10.0, 1.0)).isEqualTo(new NumException());
76 }
77
78 @Test
79 public void testApply_errorFromArgumentsMismatch() {
80 assertThat(RANDBETWEEN.SELF.apply(null, "Too few")).isEqualTo(new NAException());
81 assertThat(RANDBETWEEN.SELF.apply(null, "A", "B", "Too many")).isEqualTo(new NAException());
82 }
83}