/**
* Copyright 2014, Emory University
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package edu.emory.clir.clearnlp.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.Set;
import org.junit.Test;
import edu.emory.clir.clearnlp.collection.pair.DoubleIntPair;
import edu.emory.clir.clearnlp.collection.pair.Pair;
/**
* @since 3.0.0
* @author Jinho D. Choi ({@code jinho.choi@emory.edu})
*/
public class DSUtilsTest
{
@Test
public void testListUtils()
{
List<String> list = DSUtils.toArrayList("B","A","E","C","D");
DSUtils.sortReverseOrder(list);
assertEquals("[E, D, C, B, A]", list.toString());
DSUtils.swap(list, 1, 3);
assertEquals("[E, B, C, D, A]", list.toString());
Random rand = new Random(5);
DSUtils.shuffle(list, rand);
assertEquals("[D, E, B, A, C]", list.toString());
DSUtils.shuffle(list, rand, 3);
assertEquals("[E, B, D, A, C]", list.toString());
}
@Test
public void testHasIntersection()
{
Set<String> s1 = DSUtils.toHashSet("A","B");
Set<String> s2 = DSUtils.toHashSet("C");
assertFalse(DSUtils.hasIntersection(s1, s2));
s2.add("A");
assertTrue(DSUtils.hasIntersection(s1, s2));
}
@Test
public void testRange()
{
assertEquals("[0, 1, 2, 3]" , Arrays.toString(DSUtils.range(0, 4, 1)));
assertEquals("[0, 2]" , Arrays.toString(DSUtils.range(0, 4, 2)));
assertEquals("[0, 3]" , Arrays.toString(DSUtils.range(0, 4, 3)));
assertEquals("[0]" , Arrays.toString(DSUtils.range(0, 4, 4)));
assertEquals("[0]" , Arrays.toString(DSUtils.range(0, 4, 5)));
assertEquals("[]", Arrays.toString(DSUtils.range(0, 4, -1)));
assertEquals("[]", Arrays.toString(DSUtils.range(0, -4, 1)));
assertEquals("[0, -1, -2, -3]" , Arrays.toString(DSUtils.range(0, -4, -1)));
assertEquals("[4, 3, 2, 1]" , Arrays.toString(DSUtils.range(4, 0, -1)));
assertEquals("[4, 2]" , Arrays.toString(DSUtils.range(4, 0, -2)));
assertEquals("[4]" , Arrays.toString(DSUtils.range(4, 0, -5)));
}
@Test
public void testTop()
{
double[] array = {3, 1, 2, 0, 4};
Pair<DoubleIntPair,DoubleIntPair> ps = DSUtils.top2(array);
DoubleIntPair p = ps.o1;
assertEquals(p.i, 4);
assertEquals(p.d, 4, 0);
p = ps.o2;
assertEquals(p.i, 0);
assertEquals(p.d, 3, 0);
ps = DSUtils.top2(array, new int[]{1,2,4});
p = ps.o1;
assertEquals(p.i, 4);
assertEquals(p.d, 4, 0);
p = ps.o2;
assertEquals(p.i, 2);
assertEquals(p.d, 2, 0);
}
}