Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
test.it.unimi.dsi.util.LongIntervalTest Maven / Gradle / Ivy
package it.unimi.dsi.util;
/*
* DSI utilities
*
* Copyright (C) 2010-2017 Sebastiano Vigna
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 3 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, see .
*
*/
import static it.unimi.dsi.util.LongIntervals.EMPTY_INTERVAL;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import it.unimi.dsi.fastutil.longs.LongIterators;
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
import it.unimi.dsi.fastutil.longs.LongRBTreeSet;
import it.unimi.dsi.fastutil.longs.LongSortedSet;
import it.unimi.dsi.fastutil.longs.LongSortedSets;
import org.junit.Test;
public class LongIntervalTest {
@Test
public void testLength() {
assertEquals(0, EMPTY_INTERVAL.length());
assertEquals(1, LongInterval.valueOf(0).length());
assertEquals(2, LongInterval.valueOf(0, 1).length());
}
@Test
public void testContainsElement() {
assertTrue(LongInterval.valueOf(0).contains(0));
assertFalse(LongInterval.valueOf(0).contains(1));
assertFalse(LongInterval.valueOf(0).contains(-1));
assertTrue(LongInterval.valueOf(0, 1).contains(0));
assertTrue(LongInterval.valueOf(0, 1).contains(1));
assertFalse(LongInterval.valueOf(0).contains(2));
assertFalse(LongInterval.valueOf(0).contains(-1));
assertFalse(EMPTY_INTERVAL.contains(0));
assertFalse(EMPTY_INTERVAL.contains(1));
assertFalse(EMPTY_INTERVAL.contains(-1));
}
@Test
public void testContainsInterval() {
assertTrue(LongInterval.valueOf(0).contains(LongInterval.valueOf(0)));
assertTrue(LongInterval.valueOf(0).contains(EMPTY_INTERVAL));
assertFalse(LongInterval.valueOf(0).contains(LongInterval.valueOf(0, 1)));
assertFalse(LongInterval.valueOf(0).contains(LongInterval.valueOf(-1, 0)));
assertTrue(LongInterval.valueOf(0, 1).contains(LongInterval.valueOf(0)));
assertTrue(LongInterval.valueOf(0, 1).contains(LongInterval.valueOf(1)));
assertTrue(LongInterval.valueOf(0, 1).contains(LongInterval.valueOf(0, 1)));
assertTrue(LongInterval.valueOf(0, 1).contains(EMPTY_INTERVAL));
assertFalse(LongInterval.valueOf(0).contains(LongInterval.valueOf(-1, 0)));
assertFalse(LongInterval.valueOf(0).contains(LongInterval.valueOf(1, 2)));
assertFalse(LongInterval.valueOf(0).contains(LongInterval.valueOf(-1, 2)));
assertTrue(EMPTY_INTERVAL.contains(EMPTY_INTERVAL));
assertFalse(EMPTY_INTERVAL.contains(LongInterval.valueOf(0)));
assertFalse(EMPTY_INTERVAL.contains(LongInterval.valueOf(1)));
assertFalse(EMPTY_INTERVAL.contains(LongInterval.valueOf(0, 1)));
}
@Test
public void testContainsRadius() {
boolean ok = false;
try {
EMPTY_INTERVAL.contains(0, 1);
}
catch(IllegalArgumentException e) {
ok = true;
}
assertTrue(ok);
assertTrue(LongInterval.valueOf(0).contains(1, 1));
assertFalse(LongInterval.valueOf(0).contains(2, 1));
ok = false;
try {
EMPTY_INTERVAL.contains(0, 1, 2);
}
catch(IllegalArgumentException e) {
ok = true;
}
assertTrue(ok);
assertTrue(LongInterval.valueOf(0).contains(1, 1, 2));
assertTrue(LongInterval.valueOf(0).contains(2, 1, 2));
assertFalse(LongInterval.valueOf(0).contains(3, 1, 2));
}
@Test
public void testCompareInt() {
boolean ok = false;
try {
EMPTY_INTERVAL.compareTo(0);
}
catch(IllegalArgumentException e) {
ok = true;
}
assertTrue(ok);
assertEquals(-1, LongInterval.valueOf(0).compareTo(-1));
assertEquals(0, LongInterval.valueOf(0).compareTo(0));
assertEquals(1, LongInterval.valueOf(0).compareTo(1));
assertEquals(-1, LongInterval.valueOf(0, 1).compareTo(-1));
assertEquals(0, LongInterval.valueOf(0, 1).compareTo(0));
assertEquals(0, LongInterval.valueOf(0, 1).compareTo(1));
assertEquals(1, LongInterval.valueOf(0, 1).compareTo(2));
ok = false;
try {
EMPTY_INTERVAL.compareTo(0, 1);
}
catch(IllegalArgumentException e) {
ok = true;
}
assertTrue(ok);
assertEquals(-1, LongInterval.valueOf(0).compareTo(-2, 1));
assertEquals(0, LongInterval.valueOf(0).compareTo(-1, 1));
assertEquals(0, LongInterval.valueOf(0).compareTo(0, 1));
assertEquals(0, LongInterval.valueOf(0).compareTo(1, 1));
assertEquals(1, LongInterval.valueOf(0).compareTo(2, 1));
assertEquals(-1, LongInterval.valueOf(0, 1).compareTo(-2, 1));
assertEquals(0, LongInterval.valueOf(0, 1).compareTo(-1, 1));
assertEquals(0, LongInterval.valueOf(0, 1).compareTo(0, 1));
assertEquals(0, LongInterval.valueOf(0, 1).compareTo(1, 1));
assertEquals(0, LongInterval.valueOf(0, 1).compareTo(2, 1));
assertEquals(1, LongInterval.valueOf(0, 1).compareTo(3, 1));
ok = false;
try {
EMPTY_INTERVAL.compareTo(0, 1, 2);
}
catch(IllegalArgumentException e) {
ok = true;
}
assertTrue(ok);
assertEquals(-1, LongInterval.valueOf(0).compareTo(-2, 1, 2));
assertEquals(0, LongInterval.valueOf(0).compareTo(-1, 1, 2));
assertEquals(0, LongInterval.valueOf(0).compareTo(0, 1, 2));
assertEquals(0, LongInterval.valueOf(0).compareTo(1, 1, 2));
assertEquals(0, LongInterval.valueOf(0).compareTo(2, 1, 2));
assertEquals(1, LongInterval.valueOf(0).compareTo(3, 1, 2));
assertEquals(-1, LongInterval.valueOf(0, 1).compareTo(-2, 1, 2));
assertEquals(0, LongInterval.valueOf(0, 1).compareTo(-1, 1, 2));
assertEquals(0, LongInterval.valueOf(0, 1).compareTo(0, 1, 2));
assertEquals(0, LongInterval.valueOf(0, 1).compareTo(1, 1, 2));
assertEquals(0, LongInterval.valueOf(0, 1).compareTo(2, 1, 2));
assertEquals(0, LongInterval.valueOf(0, 1).compareTo(3, 1, 2));
assertEquals(1, LongInterval.valueOf(0, 1).compareTo(4, 1, 2));
}
private LongSortedSet toSortedSet(LongInterval interval) {
if (interval == EMPTY_INTERVAL) return LongSortedSets.EMPTY_SET;
LongSortedSet set = new LongRBTreeSet();
for(long i = interval.left; i <= interval.right; i++) set.add(i);
return set;
}
@Test
public void testSubsets() {
for(int i = 0; i < 10; i++)
for(int j = i - 1; j < 10; j++) {
LongInterval interval = j < i ? EMPTY_INTERVAL : LongInterval.valueOf(i, j);
LongSortedSet set = toSortedSet(interval);
assertEquals(set, interval);
assertArrayEquals(LongIterators.unwrap(set.iterator()), LongIterators.unwrap(interval.iterator()));
assertEquals(new LongOpenHashSet(set), interval);
for(int k = j - 1; k <= i + 1; k++) {
assertArrayEquals(LongIterators.unwrap(set.iterator(k)), LongIterators.unwrap(interval.iterator(k)));
assertEquals(set.headSet(k), interval.headSet(k));
assertEquals(set.tailSet(k), interval.tailSet(k));
for(int l = k; l <= i + 1; l++)
assertEquals(set.subSet(k, l), interval.subSet(k, l));
}
}
}
}