f7
f7 is a spreadsheet formula execution library
git clone https://git.vogt.world/f7.git
Log | Files | README.md | LICENSE.md
← All files
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}