public async Task Begin_InvalidFormatException()
 {
     using (StreamReader sr = new StreamReader(new MemoryStream(Encoding.UTF8.GetBytes(MY_HERITAGE_INVALID_FORMAT_SAMPLE))))
     {
         IFormatReader reader = new MyHeritageV2Reader(sr);
         await Assert.ThrowsAsync <InvalidFormatException>(async() => await reader.Begin());
     }
 }
        public async Task ReadNext_Throws_WhenInvalidRecord()
        {
            using (StreamReader sr = new StreamReader(new MemoryStream(Encoding.UTF8.GetBytes(MY_HERITAGE_INVALID_RECORD_SAMPLE))))
            {
                IFormatReader reader = new MyHeritageV2Reader(sr);
                await reader.Begin();

                await Assert.ThrowsAsync <InvalidFormatException>(async() => await reader.ReadNext());
            }
        }
        public async Task Begin_ReadsFileToToEndOfHeader()
        {
            using (StreamReader sr = new StreamReader(new MemoryStream(Encoding.UTF8.GetBytes(MY_HERITAGE_SAMPLE))))
            {
                MyHeritageV2Reader reader = new MyHeritageV2Reader(sr);
                await reader.Begin();

                SNP snp = await reader.ReadNext();

                Assert.NotNull(snp);
                Assert.Equal("rs547237130", snp.Rsid);
            }
        }
        public async Task ReadNext_ReturnsNull_WhenEndOfStream()
        {
            using (StreamReader sr = new StreamReader(new MemoryStream(Encoding.UTF8.GetBytes(MY_HERITAGE_SAMPLE))))
            {
                IFormatReader reader = new MyHeritageV2Reader(sr);
                await reader.Begin();

                sr.ReadToEnd();

                SNP snp1 = await reader.ReadNext();

                Assert.Null(snp1);
            }
        }
        public async Task ReadNext_ReadsSNPRecord()
        {
            using (StreamReader sr = new StreamReader(new MemoryStream(Encoding.UTF8.GetBytes(MY_HERITAGE_SAMPLE))))
            {
                IFormatReader reader = new MyHeritageV2Reader(sr);
                await reader.Begin();

                SNP snp1 = await reader.ReadNext();

                SNP snp2 = await reader.ReadNext();

                Assert.NotNull(snp1);
                Assert.NotNull(snp2);
                Assert.Equal("rs547237130", snp1.Rsid);
                Assert.Equal("rs562180473", snp2.Rsid);
            }
        }