/* * BioJava development code * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. If you do not have a copy, * see: * * http://www.gnu.org/copyleft/lesser.html * * Copyright for this code is held jointly by the individual * authors. These should be listed in @author doc comments. * * For more information on the BioJava project and its aims, * or to join the biojava-l mailing list, visit the home page * at: * * http://www.biojava.org/ * */ package org.biojava.nbio.genome; import static org.junit.Assert.*; import org.biojava.nbio.genome.parsers.gff.Location; import org.junit.Test; public class TestLocation { @Test public void testLocation() { // tests taken from Location.main() //Location p3_7= new Location( 3, 7 ); Location p16_19= new Location( 16, 19 ); Location p15_19= new Location( 15, 19 ); Location p15_16= new Location( 15, 16 ); Location p10_17= new Location( 10, 17 ); Location p10_12= new Location( 10, 12 ); Location p14_17= new Location( 14, 17 ); //Location p14_14= new Location( 14, 14 ); Location r13_17= new Location( 13, 17 ); Location r21_25= new Location( 21, 25 ); Location r4_7= new Location( 4, 7 ); Location r2_5= new Location( 2, 5 ); Location r0_3= new Location( 0, 3 ); Location r5_8= new Location( 5, 8 ); //distance assertEquals(7, L(14,14).distance( L(3,7) )); assertEquals(7, L(3,7).distance( L(14,14) )); assertEquals(3, L(1,4).distance( L(7, 10) )); //union assertEquals(p10_17, p10_12.union( p14_17 )); assertEquals(p10_17, p14_17.union( p10_12 )); assertEquals(p15_19, p15_19.union( p15_16 )); //intersection assertEquals(new Location( 21, 25 ), r13_17.union( r21_25 ).intersection( r21_25 )); //isBefore assertTrue( r2_5.isBefore( r5_8 )); assertTrue( !r2_5.isBefore( r4_7 )); //isAfter assertTrue(r5_8.isAfter( r2_5 )); assertTrue(!r5_8.isAfter( r4_7 )); //contains assertTrue(p15_19.contains( p16_19 )); //overlaps assertTrue(r2_5.overlaps( r4_7 )); assertTrue(r2_5.overlaps( r0_3 )); assertTrue(!r5_8.overlaps( r2_5 )); assertTrue(!r2_5.overlaps( r5_8 )); //prefix assertEquals(L(2,3), L(2,20).prefix(1)); assertEquals(L(2,19), L(2,20).prefix(-1)); assertEquals( L(2,10), L(2,20).prefix( L(10,12))); //suffix assertEquals(L(3,20), L(2,20).suffix(1)); assertEquals(L(19,20), L(2,20).suffix(-1)); assertEquals(L(12,20), L(2,20).suffix( L(10,12))); } @Test public void testLocationIntersections() { // One inside another Location r21_25 = new Location( 21, 25 ); Location r1_100 = new Location(1, 100 ); assertEquals(r21_25, r21_25.intersection( r1_100)); assertEquals(r21_25, r1_100.intersection( r21_25)); // Non overlapping Location r10_100 = new Location(10, 100 ); Location r1_9 = new Location( 1, 9 ); assertNull(r10_100.intersection( r1_9)); assertNull(r1_9.intersection( new Location( 9, 10 ))); // Partially overlappping Location r1_25 = new Location( 1, 25 ); Location r21_100 = new Location(21, 100 ); assertEquals(r21_25, r1_25.intersection( r21_100)); assertEquals(r21_25, r21_100.intersection( r1_25)); } //shorthand for testing private static Location L( int s, int e ) { return new Location( s, e ); } }