public void XmlParsingAsync_EndToEnd_CorrectData(string testCase)
        {
            //This is a series of end-to-end integration tests of XML parsing

            //arrange
            var testData          = _testDataRepo[testCase];
            var inputXML          = testData.Item1;
            var settings          = testData.Item2;
            var dummySourceNo     = 6;
            var xrecordSupplier   = new XmlFeederForSource(new StringReader(inputXML), dummySourceNo, settings, true);
            var xrecordSupplierPO = new PrivateObject(xrecordSupplier);
            var actual            = new List <Xrecord>();
            var expected          = testData.Item3;

            //act
            Xrecord elem;

            while ((elem = ((Task <Xrecord>)xrecordSupplierPO.Invoke("SupplyNextXrecordAsync")).Result) != null)
            {
                actual.Add(elem);
            }

            //assert
            actual.Count.Should().Be(expected.Count);
            for (var i = 0; i < actual.Count; i++)
            {
                actual[i].Should().BeEquivalentTo(expected[i]);
            }
        }
        public void ReadToEndAsync__ConsumesAllInput()
        {
            //This end-to-end integration test of XML parsing verifies that EOD mark is supplied upon exhausting data on input

            //arrange
            var testData          = _testDataRepo["Members_1"];
            var inputXML          = testData.Item1;
            var settings          = testData.Item2;
            var dummySourceNo     = 6;
            var xrecordSupplier   = new XmlFeederForSource(new StringReader(inputXML), dummySourceNo, settings, true);
            var xrecordSupplierPO = new PrivateObject(xrecordSupplier);

            //act
            xrecordSupplier.ReadToEnd();
            var elem = xrecordSupplierPO.Invoke("SupplyNextXrecordAsync") as Task <Xrecord>;

            //assert
            elem.Result.Should().BeNull();
        }