public void When_needFlankingTranscript_flankingTranscript_get_flankingAnnotation()
        {
            var observedStatus = TranscriptAnnotationFactory.DecideAnnotationStatus(new Interval(100, 100),
                                                                                    new Interval(102, 305), new AnnotationBehavior(false, true, false, true, false, false), new Interval(102, 305));

            Assert.Equal(TranscriptAnnotationFactory.Status.FlankingAnnotation, observedStatus);
        }
        public void When_reducedTranscriptAnnotation_and_transcript_completely_overlapped_variant_but_gene_partial_overlap_get_reducedAnnotation()
        {
            var observedStatus = TranscriptAnnotationFactory.DecideAnnotationStatus(new Interval(100, 500),
                                                                                    new Interval(102, 305), new AnnotationBehavior(false, true, true, false, false, false), new Interval(102, 503));

            Assert.Equal(TranscriptAnnotationFactory.Status.ReducedAnnotation, observedStatus);
        }
        public void When_not_reducedTranscriptAnnotation_partially_overlapped_variant_get_full_annotation()
        {
            var observedStatus = TranscriptAnnotationFactory.DecideAnnotationStatus(new Interval(100, 105),
                                                                                    new Interval(102, 305), new AnnotationBehavior(false, true, false, false, false, false), new Interval(102, 305));

            Assert.Equal(TranscriptAnnotationFactory.Status.FullAnnotation, observedStatus);
        }
        public void NonOverlap_transcript_get_no_annotation()
        {
            var observedStatus = TranscriptAnnotationFactory.DecideAnnotationStatus(new Interval(100, 101),
                                                                                    new Interval(5102, 6100), new AnnotationBehavior(true, false, false, true, false, false), new Interval(5102, 6100));

            Assert.Equal(TranscriptAnnotationFactory.Status.NoAnnotation, observedStatus);
        }
        public void When_reducedTranscriptAnnotation_and_gene_is_completely_overlapped_with_variant_get_SvCompleteOverlapAnnotation()
        {
            var observedStatus = TranscriptAnnotationFactory.DecideAnnotationStatus(new Interval(100, 500),
                                                                                    new Interval(102, 305), new AnnotationBehavior(false, true, true, false, false, false), new Interval(102, 305));

            Assert.Equal(TranscriptAnnotationFactory.Status.SvCompleteOverlapAnnotation, observedStatus);
        }
        public void DecideAnnotationStatus_Full_CompleteOverlap_ReturnFullAnnotation()
        {
            var observedStatus = TranscriptAnnotationFactory.DecideAnnotationStatus(new Interval(100, 500),
                                                                                    new Interval(102, 305), AnnotationBehavior.SmallVariants, Chromosome.ShortFlankingLength);

            Assert.Equal(TranscriptAnnotationFactory.Status.FullAnnotation, observedStatus);
        }
        public void DecideAnnotationStatus_ROH_Return_RohAnnotation()
        {
            var observedStatus = TranscriptAnnotationFactory.DecideAnnotationStatus(new Interval(100, 500),
                                                                                    new Interval(102, 305), AnnotationBehavior.RunsOfHomozygosity, Chromosome.ShortFlankingLength);

            Assert.Equal(TranscriptAnnotationFactory.Status.RohAnnotation, observedStatus);
        }
        public void DecideAnnotationStatus_NoOverlap_ReturnNoAnnotation()
        {
            var observedStatus = TranscriptAnnotationFactory.DecideAnnotationStatus(new Interval(100, 101),
                                                                                    new Interval(5102, 6100), AnnotationBehavior.SmallVariants, Chromosome.ShortFlankingLength);

            Assert.Equal(TranscriptAnnotationFactory.Status.NoAnnotation, observedStatus);
        }
        public void DecideAnnotationStatus_Reduced_TranscriptPartialOverlap_ReturnReducedAnnotation()
        {
            var observedStatus = TranscriptAnnotationFactory.DecideAnnotationStatus(new Interval(100, 200),
                                                                                    new Interval(102, 305), AnnotationBehavior.StructuralVariants, Chromosome.ShortFlankingLength);

            Assert.Equal(TranscriptAnnotationFactory.Status.ReducedAnnotation, observedStatus);
        }
        public void DecideAnnotationStatus_Full_PartialOverlap_ReturnFullAnnotation()
        {
            var observedStatus = TranscriptAnnotationFactory.DecideAnnotationStatus(new Interval(100, 105),
                                                                                    new Interval(102, 305), AnnotationBehavior.SmallVariants);

            Assert.Equal(TranscriptAnnotationFactory.Status.FullAnnotation, observedStatus);
        }
        public void DecideAnnotationStatus_Flanking_ReturnFlankingAnnotation()
        {
            var observedStatus = TranscriptAnnotationFactory.DecideAnnotationStatus(new Interval(100, 100),
                                                                                    new Interval(102, 305), AnnotationBehavior.SmallVariants);

            Assert.Equal(TranscriptAnnotationFactory.Status.FlankingAnnotation, observedStatus);
        }
        public void DecideAnnotationStatus_ROH_Return_RohAnnotation()
        {
            var observedStatus = TranscriptAnnotationFactory.DecideAnnotationStatus(new Interval(100, 500),
                                                                                    new Interval(102, 305), AnnotationBehavior.RohBehavior);

            Assert.Equal(TranscriptAnnotationFactory.Status.RohAnnotation, observedStatus);
        }
        public void DecideAnnotationStatus_Full_CompleteOverlap_ReturnFullAnnotation()
        {
            var observedStatus = TranscriptAnnotationFactory.DecideAnnotationStatus(new Interval(100, 500),
                                                                                    new Interval(102, 305), new AnnotationBehavior(false, true, false, false, false));

            Assert.Equal(TranscriptAnnotationFactory.Status.FullAnnotation, observedStatus);
        }
        public void DecideAnnotationStatus_Reduced_TranscriptPartialOverlap_ReturnReducedAnnotation()
        {
            var observedStatus = TranscriptAnnotationFactory.DecideAnnotationStatus(new Interval(100, 200),
                                                                                    new Interval(102, 305), new AnnotationBehavior(false, true, true, false, false));

            Assert.Equal(TranscriptAnnotationFactory.Status.ReducedAnnotation, observedStatus);
        }