1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.functor.generator.util;
18
19 import static org.junit.Assert.assertEquals;
20 import static org.junit.Assert.fail;
21
22 import java.util.ArrayList;
23 import java.util.List;
24
25 import org.apache.commons.functor.BaseFunctorTest;
26 import org.junit.Test;
27
28
29
30
31
32
33 @SuppressWarnings("unchecked")
34 public class TestLongRange extends BaseFunctorTest {
35
36 protected Object makeFunctor() throws Exception {
37 return new LongRange(10, 20);
38 }
39
40
41
42
43 @Test
44 public void testGenerateListExample() {
45
46 {
47 List list = (List)(new LongRange(0,10).to(new ArrayList()));
48 for (int i=0;i<10;i++) {
49 assertEquals(new Long(i),list.get(i));
50 }
51 }
52
53
54 {
55 List list = (List)(new LongRange(10,0).to(new ArrayList()));
56 for (int i=10;i>0;i--) {
57 assertEquals(new Long(i),list.get(10-i));
58 }
59 }
60 }
61
62 @Test
63 public void testStepChecking() {
64 {
65 new LongRange(2, 2, 0);
66 }
67 {
68 new LongRange(2, 2, 1);
69 }
70 {
71 new LongRange(2, 2, -1);
72 }
73 {
74 new LongRange(0, 1, 10);
75 }
76 {
77 new LongRange(1, 0, -10);
78 }
79 try {
80 new LongRange(0, 1, 0);
81 fail("Expected IllegalArgumentException");
82 } catch(IllegalArgumentException e) {
83
84 }
85 try {
86 new LongRange(0, 1, -1);
87 fail("Expected IllegalArgumentException");
88 } catch(IllegalArgumentException e) {
89
90 }
91 try {
92 new LongRange(0, -1, 1);
93 fail("Expected IllegalArgumentException");
94 } catch(IllegalArgumentException e) {
95
96 }
97 }
98
99 @Test
100 public void testObjectConstructor() {
101 LongRange range = new LongRange(new Long(0), new Long(5));
102 assertEquals("[0, 1, 2, 3, 4]", range.toCollection().toString());
103 range = new LongRange(new Integer(0), new Long(5), new Long(1));
104 assertEquals("[0, 1, 2, 3, 4]", range.toCollection().toString());
105 }
106
107
108 @Test
109 public void testReverseStep() {
110 LongRange range = new LongRange(10, 0, -2);
111 assertEquals("[10, 8, 6, 4, 2]", range.toCollection().toString());
112 assertEquals("[10, 8, 6, 4, 2]", range.toCollection().toString());
113 }
114
115 @Test
116 public void testStep() {
117 LongRange range = new LongRange(0, 10, 2);
118 assertEquals("[0, 2, 4, 6, 8]", range.toCollection().toString());
119 assertEquals("[0, 2, 4, 6, 8]", range.toCollection().toString());
120 }
121
122 @Test
123 public void testForwardRange() {
124 LongRange range = new LongRange(0, 5);
125 assertEquals("[0, 1, 2, 3, 4]", range.toCollection().toString());
126 assertEquals("[0, 1, 2, 3, 4]", range.toCollection().toString());
127 }
128
129 @Test
130 public void testReverseRange() {
131 LongRange range = new LongRange(5, 0);
132 assertEquals("[5, 4, 3, 2, 1]", range.toCollection().toString());
133 assertEquals("[5, 4, 3, 2, 1]", range.toCollection().toString());
134 }
135
136 @Test
137 public void testEdgeCase() {
138 LongRange range = new LongRange(Long.MAX_VALUE - 3L, Long.MAX_VALUE);
139 assertEquals("[9223372036854775804, 9223372036854775805, 9223372036854775806]", range.toCollection().toString());
140 assertEquals("[9223372036854775804, 9223372036854775805, 9223372036854775806]", range.toCollection().toString());
141 }
142
143 @Test
144 public void testEquals() {
145 LongRange range = new LongRange(1, 5);
146 assertObjectsAreEqual(range, range);
147 assertObjectsAreEqual(range, new LongRange(1, 5));
148 assertObjectsAreEqual(range, new LongRange(1, 5, 1));
149 assertObjectsAreEqual(range, new LongRange(new Integer(1), new Long(5)));
150 assertObjectsAreEqual(range, new LongRange(new Long(1), new Short((short)5), new Long(1)));
151 }
152
153 }