public void CallDataProviders_FirstProviderException_ProvidersCascaded()
            {
                BrokerContext.Initialize(CprBroker.Utilities.Constants.BaseApplicationToken.ToString(), "");
                var  facade = new FacadeStub();
                bool called = false;
                var  provs  = new ISingleDataProvider <string, string>[] {
                    new FacadeStub.ProviderStub()
                    {
                        _GetBatch = (i) => { called = true; throw new Exception(); }
                    },
                    new FacadeStub.ProviderStub()
                    {
                        _GetBatch = (i) => new string[] { null, "DDD" }
                    }
                };

                Assert.False(called);
                var ret = facade.CallDataProviders(provs, new string[] { "SSS", "DDD" });

                Assert.True(called);

                Assert.AreEqual(2, ret.Length);

                Assert.AreEqual("SSS", ret[0].Input);
                Assert.Null(ret[0].Output);

                Assert.AreEqual("DDD", ret[1].Input);
                Assert.AreEqual("DDD", ret[1].Output);
            }
            public void CallDataProviders_NoProv_Fail()
            {
                var facade = new FacadeStub();
                var provs  = new ISingleDataProvider <string, string>[] { };
                var ret    = facade.CallDataProviders(provs, new string[] { "SSS", "DDD" });

                Assert.AreEqual(2, ret.Length);

                Assert.AreEqual("SSS", ret[0].Input);
                Assert.Null(ret[0].Output);

                Assert.AreEqual("DDD", ret[1].Input);
                Assert.Null(ret[1].Output);
            }
            public void CallDataProviders_ProvWithPartial_ProvidersCascaded()
            {
                var facade = new FacadeStub();
                var provs  = new ISingleDataProvider <string, string>[] {
                    new FacadeStub.ProviderStub()
                    {
                        _GetBatch = (i) => new string[] { "SSS", null }
                    },
                    new FacadeStub.ProviderStub()
                    {
                        _GetBatch = (i) => new string[] { "DDD" }
                    }
                };

                var ret = facade.CallDataProviders(provs, new string[] { "SSS", "DDD" });

                Assert.AreEqual(2, ret.Length);

                Assert.AreEqual("SSS", ret[0].Input);
                Assert.AreEqual("SSS", ret[0].Output);

                Assert.AreEqual("DDD", ret[1].Input);
                Assert.AreEqual("DDD", ret[1].Output);
            }