/* * The MIT License (MIT) * * Copyright (c) 2007-2015 Broad Institute * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package org.broad.igv.variant.vcf; import org.broad.igv.AbstractHeadlessTest; import org.broad.igv.track.TribbleFeatureSource; import org.broad.igv.util.ResourceLocator; import org.broad.igv.util.TestUtils; import htsjdk.variant.variantcontext.VariantContext; import org.junit.Test; import static org.junit.Assert.assertEquals; /** * The testXXXStart methods exist because we offset the start position based on the * bases common between reference and alternate alleles. * @see org.broad.igv.variant.vcf.VCFVariant#calcStart() * * * @author jacob * @date 2013-Apr-03 */ public class VCFVariantTest extends AbstractHeadlessTest { private VCFVariant get_hc_mod_Feat(String chr, int start, int end) throws Exception{ String filePath = TestUtils.DATA_DIR + "vcf/hc_mod.vcf"; TestUtils.createIndex(filePath); TribbleFeatureSource src = TribbleFeatureSource.getFeatureSource(new ResourceLocator(filePath), genome); return (VCFVariant) (src.getFeatures(chr, start, end)).next(); } @Test public void testSNPStart() throws Exception{ int fileFeatStart = 10499005; tstStart("chr20", fileFeatStart, VariantContext.Type.SNP, fileFeatStart - 1); } @Test public void testBlockSubStart() throws Exception{ int fileFeatStart = 10499073; tstStart("chr20", fileFeatStart, VariantContext.Type.MNP, fileFeatStart - 1); } @Test public void testDELStart_pref() throws Exception{ int fileFeatStart = 10499099; tstStart("chr20", fileFeatStart, VariantContext.Type.INDEL, fileFeatStart - 1 + 1); } @Test public void testDELStart_nopref() throws Exception{ int fileFeatStart = 10499291; tstStart("chr20", fileFeatStart, VariantContext.Type.INDEL, fileFeatStart - 1); } @Test public void testINSStart_pref() throws Exception{ int fileFeatStart = 10499052; tstStart("chr20", fileFeatStart, VariantContext.Type.INDEL, fileFeatStart - 1 + 1); } @Test public void testINSStart_nopref() throws Exception{ int fileFeatStart = 10499352; tstStart("chr20", fileFeatStart, VariantContext.Type.INDEL, fileFeatStart - 1); } private VCFVariant tstStart(String chr, int fileFeatStart, VariantContext.Type variantType, int expFeatStart) throws Exception{ VCFVariant variant = get_hc_mod_Feat(chr, fileFeatStart - 5, fileFeatStart + 5); assertEquals(variantType.toString(), variant.getType()); assertEquals(expFeatStart, variant.getStart()); return variant; } }