View Javadoc

1   package com.atlassian.scheduler.core.util;
2   
3   import org.junit.Test;
4   
5   import static com.atlassian.scheduler.core.util.TimeIntervalQuantizer.quantize;
6   import static com.atlassian.scheduler.core.util.TimeIntervalQuantizer.quantizeToMinutes;
7   import static org.junit.Assert.assertEquals;
8   
9   /**
10   * @since v1.0
11   */
12  public class TimeIntervalQuantizerTest {
13      @Test(expected = IllegalArgumentException.class)
14      public void testNegativeInterval() {
15          quantize(-1L, 5);
16      }
17  
18      @Test
19      public void testIgnoredResolutions() {
20          assertEquals(5L, quantize(5L, -42));
21          assertEquals(5L, quantize(5L, -1));
22          assertEquals(5L, quantize(5L, 0));
23          assertEquals(5L, quantize(5L, 1));
24      }
25  
26      @Test
27      public void testQuantizationBoundaries() {
28          assertEquals(0L, quantize(0L, 100));
29          assertEquals(100L, quantize(1L, 100));
30          assertEquals(100L, quantize(99L, 100));
31          assertEquals(100L, quantize(100L, 100));
32          assertEquals(200L, quantize(101L, 100));
33          assertEquals(200L, quantize(199L, 100));
34          assertEquals(200L, quantize(200L, 100));
35          assertEquals(300L, quantize(201L, 100));
36  
37          assertEquals(0L, quantize(0L, 1000));
38          assertEquals(1000L, quantize(10L, 1000));
39          assertEquals(1000L, quantize(999L, 1000));
40          assertEquals(1000L, quantize(1000L, 1000));
41          assertEquals(2000L, quantize(1001L, 1000));
42          assertEquals(2000L, quantize(1999L, 1000));
43          assertEquals(2000L, quantize(2000L, 1000));
44          assertEquals(3000L, quantize(2001L, 1000));
45      }
46  
47      @Test
48      public void testSignOverflowBoundary() {
49          // Long.MAX_VALUE and 4 are relatively prime
50          assertEquals(9223372036854775804L, quantize(9223372036854775801L, 4));
51          assertEquals(9223372036854775804L, quantize(9223372036854775804L, 4));
52          assertEquals(9223372036854775807L, quantize(9223372036854775805L, 4));
53          assertEquals(9223372036854775807L, quantize(9223372036854775807L, 4));
54  
55          // Long.MAX_VALUE and 7 are not relatively prime
56          assertEquals(9223372036854775800L, quantize(9223372036854775799L, 7));
57          assertEquals(9223372036854775800L, quantize(9223372036854775800L, 7));
58          assertEquals(9223372036854775807L, quantize(9223372036854775801L, 7));
59          assertEquals(9223372036854775807L, quantize(9223372036854775806L, 7));
60          assertEquals(9223372036854775807L, quantize(9223372036854775807L, 7));
61      }
62  
63      @Test
64      public void testQuantizeExamples() {
65          assertEquals(0L, quantize(0L, 50));
66          assertEquals(130L, quantize(123L, 10));
67          assertEquals(15000L, quantize(11L, 15000));
68          assertEquals(180000L, quantize(127249L, 60000));
69      }
70  
71      @Test
72      public void testQuantizeToMinutesExamples() {
73          assertEquals(0L, quantizeToMinutes(0));
74          assertEquals(60000L, quantizeToMinutes(123));
75          assertEquals(180000L, quantizeToMinutes(127249));
76      }
77  }