/* * Copyright (C) 2015 Google Inc. * * 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 com.google.cloud.genomics.dataflow.functions; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import com.google.genomics.v1.Variant; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; /** * Tests for the VariantUtils class. */ @RunWith(JUnit4.class) public class VariantFunctionsTest { @Test public void testIsPassing() { // Only success case as stated by VCF 4.2 format. assertTrue(VariantFunctions.IS_PASSING.apply(Variant.newBuilder() .addFilter("PASS") .build())); // Typical failue case assertFalse(VariantFunctions.IS_PASSING.apply(Variant.newBuilder() .addFilter("BAD") .build())); // Failue with multiple annotations assertFalse(VariantFunctions.IS_PASSING.apply(Variant.newBuilder() .addFilter("BAD") .addFilter("q<10") .build())); // Malformed case; PASS with additional annotations assertFalse(VariantFunctions.IS_PASSING.apply(Variant.newBuilder() .addFilter("PASS") .addFilter("q<10") .build())); } @Test public void testIsOnChromosome() { assertFalse(VariantFunctions.IS_ON_CHROMOSOME.apply(Variant.newBuilder() .setReferenceName("chrZ") .build())); assertTrue(VariantFunctions.IS_ON_CHROMOSOME.apply(Variant.newBuilder() .setReferenceName("1") .build())); } @Test public void testIsNotLowQuality() { assertFalse(VariantFunctions.IS_NOT_LOW_QUALITY.apply(Variant.newBuilder() .setQuality(0.0) .build())); assertTrue(VariantFunctions.IS_NOT_LOW_QUALITY.apply(Variant.newBuilder() .setQuality(10.0) .build())); } @Test public void testIsSingleAlternateSnp() { // no alternates assertFalse(VariantFunctions.IS_SINGLE_ALTERNATE_SNP.apply(Variant.newBuilder() .setReferenceBases("A") .build())); // multiple alternates assertFalse(VariantFunctions.IS_SINGLE_ALTERNATE_SNP.apply(Variant.newBuilder() .setReferenceBases("A") .addAlternateBases("G") .addAlternateBases("T") .build())); // ref too long assertFalse(VariantFunctions.IS_SINGLE_ALTERNATE_SNP.apply(Variant.newBuilder() .setReferenceBases("AC") .addAlternateBases("G") .build())); // alternate too long assertFalse(VariantFunctions.IS_SINGLE_ALTERNATE_SNP.apply(Variant.newBuilder() .setReferenceBases("A") .addAlternateBases("GT") .build())); // success assertTrue(VariantFunctions.IS_SINGLE_ALTERNATE_SNP.apply(Variant.newBuilder() .setReferenceBases("A") .addAlternateBases("G") .build())); } }