public void PartsAreNotProcessedIfStartProcessFails()
        {
            var processor = new MultiPartDataProcess((x, y, z) =>
            {
                Assert.Fail();
                return(false);
            },
                                                     x => false);
            var candidate = processor.ProcessData(TestData);

            Assert.IsFalse(candidate);
        }
        public void PartsAreProcessedIfStartProcessSucceeds()
        {
            var sb        = new StringBuilder();
            var processor = new MultiPartDataProcess((x, y, z) =>
            {
                sb.Append(x);
                return(true);
            },
                                                     x => true);
            var candidate = processor.ProcessData(TestData);

            Assert.AreEqual(TestData, sb.ToString());
            Assert.IsTrue(candidate);
        }
        public void MultiplePartsAreProcessed()
        {
            var sb        = new StringBuilder();
            var count     = 1;
            var processor = new MultiPartDataProcess((x, y, z) =>
            {
                Assert.AreEqual(count++, y);
                sb.Append(x);
                return(true);
            }, null, null, 3);
            var candidate = processor.ProcessData(TestData);

            Assert.AreEqual(TestData, sb.ToString());
            Assert.IsTrue(candidate);
        }
        public void TestSingleChunkIsProcessed()
        {
            var sb        = new StringBuilder();
            var processor = new MultiPartDataProcess((x, y, z) =>
            {
                Assert.AreEqual(1, y);
                Assert.AreEqual(1, z);
                sb.Append(x);
                return(true);
            });
            var candidate = processor.ProcessData(TestData);

            Assert.AreEqual(TestData, sb.ToString());
            Assert.IsTrue(candidate);
        }
        public void ReturnsFalseIfEndProcessFails()
        {
            var sb        = new StringBuilder();
            var processor = new MultiPartDataProcess((x, y, z) =>
            {
                sb.Append(x);
                return(true);
            },
                                                     x => true,
                                                     x => false);
            var candidate = processor.ProcessData(TestData);

            Assert.AreEqual(TestData, sb.ToString());
            Assert.IsFalse(candidate);
        }
        public void StopsWithFalseIfPartFailsToProcess()
        {
            var sb        = new StringBuilder();
            var count     = 1;
            var processor = new MultiPartDataProcess((x, y, z) =>
            {
                Assert.AreEqual(count++, y);
                sb.Append(x);
                return(y != 3);
            }, null, null, 3);
            var candidate = processor.ProcessData(TestData);

            Assert.AreEqual(TestData.Substring(0, 3 * 3), sb.ToString());
            Assert.IsFalse(candidate);
        }