Author: jbellis
Date: Fri Apr 16 16:04:22 2010
New Revision: 934972
URL: http://svn.apache.org/viewvc?rev=934972&view=rev
Log:
merge RangeIntersectionTest into RangeTest. patch by Stu Hood; reviewed by
jbellis for CASSANDRA-951
Removed:
cassandra/trunk/test/unit/org/apache/cassandra/dht/RangeIntersectionTest.java
Modified:
cassandra/trunk/test/unit/org/apache/cassandra/dht/RangeTest.java
Modified: cassandra/trunk/test/unit/org/apache/cassandra/dht/RangeTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/dht/RangeTest.java?rev=934972&r1=934971&r2=934972&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/dht/RangeTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/dht/RangeTest.java Fri Apr
16 16:04:22 2010
@@ -20,6 +20,9 @@ package org.apache.cassandra.dht;
import java.util.Arrays;
import java.util.List;
+import java.util.Set;
+
+import org.apache.commons.lang.StringUtils;
import org.junit.Test;
@@ -170,4 +173,124 @@ public class RangeTest
assert twowrap.intersects(not);
assert not.intersects(twowrap);
}
+
+ static void assertIntersection(Range one, Range two, Range ... ranges)
+ {
+ Set<Range> correct = Range.rangeSet(ranges);
+ Set<Range> result1 = one.intersectionWith(two);
+ assert result1.equals(correct) : String.format("%s != %s",
+
StringUtils.join(result1, ","),
+
StringUtils.join(correct, ","));
+ Set<Range> result2 = two.intersectionWith(one);
+ assert result2.equals(correct) : String.format("%s != %s",
+
StringUtils.join(result2, ","),
+
StringUtils.join(correct, ","));
+ }
+
+ private void assertNoIntersection(Range wraps1, Range nowrap3)
+ {
+ assertIntersection(wraps1, nowrap3);
+ }
+
+ @Test
+ public void testIntersectionWithAll()
+ {
+ Range all0 = new Range(new BigIntegerToken("0"), new
BigIntegerToken("0"));
+ Range all10 = new Range(new BigIntegerToken("10"), new
BigIntegerToken("10"));
+ Range all100 = new Range(new BigIntegerToken("100"), new
BigIntegerToken("100"));
+ Range all1000 = new Range(new BigIntegerToken("1000"), new
BigIntegerToken("1000"));
+ Range wraps = new Range(new BigIntegerToken("100"), new
BigIntegerToken("10"));
+
+ assertIntersection(all0, wraps, wraps);
+ assertIntersection(all10, wraps, wraps);
+ assertIntersection(all100, wraps, wraps);
+ assertIntersection(all1000, wraps, wraps);
+ }
+
+ @Test
+ public void testIntersectionContains()
+ {
+ Range wraps1 = new Range(new BigIntegerToken("100"), new
BigIntegerToken("10"));
+ Range wraps2 = new Range(new BigIntegerToken("90"), new
BigIntegerToken("20"));
+ Range wraps3 = new Range(new BigIntegerToken("90"), new
BigIntegerToken("0"));
+ Range nowrap1 = new Range(new BigIntegerToken("100"), new
BigIntegerToken("110"));
+ Range nowrap2 = new Range(new BigIntegerToken("0"), new
BigIntegerToken("10"));
+ Range nowrap3 = new Range(new BigIntegerToken("0"), new
BigIntegerToken("9"));
+
+ assertIntersection(wraps1, wraps2, wraps1);
+ assertIntersection(wraps3, wraps2, wraps3);
+
+ assertIntersection(wraps1, nowrap1, nowrap1);
+ assertIntersection(wraps1, nowrap2, nowrap2);
+ assertIntersection(nowrap2, nowrap3, nowrap3);
+
+ assertIntersection(wraps1, wraps1, wraps1);
+ assertIntersection(nowrap1, nowrap1, nowrap1);
+ assertIntersection(nowrap2, nowrap2, nowrap2);
+ assertIntersection(wraps3, wraps3, wraps3);
+ }
+
+ @Test
+ public void testNoIntersection()
+ {
+ Range wraps1 = new Range(new BigIntegerToken("100"), new
BigIntegerToken("10"));
+ Range wraps2 = new Range(new BigIntegerToken("100"), new
BigIntegerToken("0"));
+ Range nowrap1 = new Range(new BigIntegerToken("0"), new
BigIntegerToken("100"));
+ Range nowrap2 = new Range(new BigIntegerToken("100"), new
BigIntegerToken("200"));
+ Range nowrap3 = new Range(new BigIntegerToken("10"), new
BigIntegerToken("100"));
+
+ assertNoIntersection(wraps1, nowrap3);
+ assertNoIntersection(wraps2, nowrap1);
+ assertNoIntersection(nowrap1, nowrap2);
+ }
+
+ @Test
+ public void testIntersectionOneWraps()
+ {
+ Range wraps1 = new Range(new BigIntegerToken("100"), new
BigIntegerToken("10"));
+ Range wraps2 = new Range(new BigIntegerToken("100"), new
BigIntegerToken("0"));
+ Range nowrap1 = new Range(new BigIntegerToken("0"), new
BigIntegerToken("200"));
+ Range nowrap2 = new Range(new BigIntegerToken("0"), new
BigIntegerToken("100"));
+
+ assertIntersection(wraps1,
+ nowrap1,
+ new Range(new BigIntegerToken("0"), new
BigIntegerToken("10")),
+ new Range(new BigIntegerToken("100"), new
BigIntegerToken("200")));
+ assertIntersection(wraps2,
+ nowrap1,
+ new Range(new BigIntegerToken("100"), new
BigIntegerToken("200")));
+ assertIntersection(wraps1,
+ nowrap2,
+ new Range(new BigIntegerToken("0"), new
BigIntegerToken("10")));
+ }
+
+ @Test
+ public void testIntersectionTwoWraps()
+ {
+ Range wraps1 = new Range(new BigIntegerToken("100"), new
BigIntegerToken("20"));
+ Range wraps2 = new Range(new BigIntegerToken("120"), new
BigIntegerToken("90"));
+ Range wraps3 = new Range(new BigIntegerToken("120"), new
BigIntegerToken("110"));
+ Range wraps4 = new Range(new BigIntegerToken("10"), new
BigIntegerToken("0"));
+ Range wraps5 = new Range(new BigIntegerToken("10"), new
BigIntegerToken("1"));
+ Range wraps6 = new Range(new BigIntegerToken("30"), new
BigIntegerToken("10"));
+
+ assertIntersection(wraps1,
+ wraps2,
+ new Range(new BigIntegerToken("120"), new
BigIntegerToken("20")));
+ assertIntersection(wraps1,
+ wraps3,
+ new Range(new BigIntegerToken("120"), new
BigIntegerToken("20")),
+ new Range(new BigIntegerToken("100"), new
BigIntegerToken("110")));
+ assertIntersection(wraps1,
+ wraps4,
+ new Range(new BigIntegerToken("10"), new
BigIntegerToken("20")),
+ new Range(new BigIntegerToken("100"), new
BigIntegerToken("0")));
+ assertIntersection(wraps1,
+ wraps5,
+ new Range(new BigIntegerToken("10"), new
BigIntegerToken("20")),
+ new Range(new BigIntegerToken("100"), new
BigIntegerToken("1")));
+ assertIntersection(wraps1,
+ wraps6,
+ new Range(new BigIntegerToken("100"), new
BigIntegerToken("10")));
+ }
}