public void TestNotifyEveryRowAll(DataReaderSource source)
        {
            var r3 = TestDataHelpers.GetSampleDataReader(source, 100);

            var i = 0;

            var drr = r3.NotifyOn(p => i++, 1);

            drr.ReadToEnd();

            Assert.AreEqual(100, i); //two notifications
        }
        public void TestNotifyLastRow(DataReaderSource source)
        {
            var r3 = TestDataHelpers.GetSampleDataReader(DataReaderSource.DataTable, 100);
            //var r3 = GetADataReader(source, 3);

            var i = 0;
            var c = 0;

            var drr = r3.NotifyOn(p =>
            {
                i = p;
                c++;
            }, 1024);

            drr.ReadToEnd();

            Assert.AreEqual(100, i);
            Assert.AreEqual(1, c);
        }
        public void TestModulus(DataReaderSource source)
        {
            var r3 =
                Enumerable.Range(1, 100).Select(i => new
            {
                Col1 = i,
                Col2 = 20,
                Col3 = "abc",
            })
                .ToDataReader();

            var i = 0;

            var drr = r3.NotifyOn(p => i = p, 10);

            drr.Read(3);

            Assert.AreEqual(0, i); //two notifications
        }
        public static IDataReader GetSampleDataReader(DataReaderSource source, int count)
        {
            var r =
                Enumerable.Range(1, count).Select(i => new
            {
                Col1 = i,
                Col2 = i * 10,
                Col3 = $"{i}-abc",
            })
                .ToArray();

            var rr = source switch
            {
                DataReaderSource.Csv => (IDataReader)Csv.ReadString(r.ToCsvString()),
                DataReaderSource.DataTable => (IDataReader)r.ToDataTable().ToDataReader(),
                DataReaderSource.ObjectReader => (IDataReader)r.ToDataReader()
            };

            return(rr);
        }
    }
        public void TestNotifyEveryRowNoParam(DataReaderSource source)
        {
            var r3 =
                Enumerable.Range(1, 100).Select(i => new
            {
                Col1 = i,
                Col2 = 20,
                Col3 = "abc",
            })
                .ToDataReader();

            var i = 0;

            var drr = r3.NotifyOn(p =>
            {
                i++;
            });

            drr.Read();
            drr.Read();

            Assert.AreEqual(2, i); //two notifications
        }