﻿// ------------------------------------------------------------------------------
//  <auto-generated>
//      This code was generated by SpecFlow (http://www.specflow.org/).
//      SpecFlow Version:1.9.0.77
//      SpecFlow Generator Version:1.9.0.0
//      Runtime Version:4.0.30319.0
// 
//      Changes to this file may cause incorrect behavior and will be lost if
//      the code is regenerated.
//  </auto-generated>
// ------------------------------------------------------------------------------
#region Designer generated code
#pragma warning disable
namespace ReactiveServices.ComputationalUnit.Dispatching.LoadBalancing.Tests.Specifications
{
    using TechTalk.SpecFlow;
    
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.9.0.77")]
    [System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [NUnit.Framework.TestFixtureAttribute()]
    [NUnit.Framework.DescriptionAttribute("Balanceamento de Carga entre Despachantes")]
    public partial class BalanceamentoDeCargaEntreDespachantesFeature
    {
        
        private static TechTalk.SpecFlow.ITestRunner testRunner;
        
#line 1 "BalanceamentoDeCargaEntreDespachantes.feature"
#line hidden
        
        [NUnit.Framework.TestFixtureSetUpAttribute()]
        public virtual void FeatureSetup()
        {
            testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner();
            TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("pt-BR"), "Balanceamento de Carga entre Despachantes", "De modo a ter minhas solicitações de trabalho processadas de maneira mais rápida " +
                    "e segura\r\nComo um solicitante de trabalhos\r\nEu quero que múltiplos despachantes " +
                    "de trabalho atuem ao mesmo tempo para atender as minhas solicitações", ProgrammingLanguage.CSharp, ((string[])(null)));
            testRunner.OnFeatureStart(featureInfo);
        }
        
        [NUnit.Framework.TestFixtureTearDownAttribute()]
        public virtual void FeatureTearDown()
        {
            testRunner.OnFeatureEnd();
            testRunner = null;
        }
        
        [NUnit.Framework.SetUpAttribute()]
        public virtual void TestInitialize()
        {
        }
        
        [NUnit.Framework.TearDownAttribute()]
        public virtual void ScenarioTearDown()
        {
            testRunner.OnScenarioEnd();
        }
        
        public virtual void ScenarioSetup(TechTalk.SpecFlow.ScenarioInfo scenarioInfo)
        {
            testRunner.OnScenarioStart(scenarioInfo);
        }
        
        public virtual void ScenarioCleanup()
        {
            testRunner.CollectScenarioErrors();
        }
        
        [NUnit.Framework.TestAttribute()]
        [NUnit.Framework.DescriptionAttribute("Encaminhar uma solicitação de trabalho para dois despachantes")]
        [NUnit.Framework.CategoryAttribute("stable")]
        [NUnit.Framework.CategoryAttribute("fast")]
        public virtual void EncaminharUmaSolicitacaoDeTrabalhoParaDoisDespachantes()
        {
            TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Encaminhar uma solicitação de trabalho para dois despachantes", new string[] {
                        "stable",
                        "fast"});
#line 9
this.ScenarioSetup(scenarioInfo);
#line 10
 testRunner.Given("que dois despachantes de trabalhos tenham sido configurados para receber solicita" +
                    "coes pendentes do tipo A", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Dado ");
#line 11
 testRunner.When("uma solicitação de trabalho do tipo A for postada como pendente", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Quando ");
#line 12
 testRunner.Then("apenas um dos despachantes deve receber a solicitação de trabalho do tipo A recém" +
                    " postada como pendente", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Então ");
#line hidden
            this.ScenarioCleanup();
        }
        
        [NUnit.Framework.TestAttribute()]
        [NUnit.Framework.DescriptionAttribute("Encaminhar duas solicitações de trabalho para dois despachantes")]
        [NUnit.Framework.CategoryAttribute("stable")]
        [NUnit.Framework.CategoryAttribute("fast")]
        public virtual void EncaminharDuasSolicitacoesDeTrabalhoParaDoisDespachantes()
        {
            TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Encaminhar duas solicitações de trabalho para dois despachantes", new string[] {
                        "stable",
                        "fast"});
#line 15
this.ScenarioSetup(scenarioInfo);
#line 16
 testRunner.Given("que dois despachantes de trabalhos tenham sido configurados para receber solicita" +
                    "coes pendentes do tipo A", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Dado ");
#line 17
 testRunner.When("duas solicitações de trabalho do tipo A forem postadas como pendente", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Quando ");
#line 18
 testRunner.Then("um dos despachantes de trabalhos irá processar a primeira solicitação A recebida", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Então ");
#line 19
 testRunner.And("o outro despachante de trabalhos irá processar a segunda solicitação A", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "E ");
#line hidden
            this.ScenarioCleanup();
        }
        
        [NUnit.Framework.TestAttribute()]
        [NUnit.Framework.DescriptionAttribute("Encaminhar duas solicitações de trabalho de tipos diferentes para dois despachant" +
            "es")]
        [NUnit.Framework.CategoryAttribute("stable")]
        [NUnit.Framework.CategoryAttribute("fast")]
        public virtual void EncaminharDuasSolicitacoesDeTrabalhoDeTiposDiferentesParaDoisDespachantes()
        {
            TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Encaminhar duas solicitações de trabalho de tipos diferentes para dois despachant" +
                    "es", new string[] {
                        "stable",
                        "fast"});
#line 22
this.ScenarioSetup(scenarioInfo);
#line 23
 testRunner.Given("que um despachante de trabalhos tenha sido configurado para receber solicitacoes " +
                    "pendentes do tipo A", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Dado ");
#line 24
 testRunner.Given("que outro despachante de trabalhos tenha sido configurado para receber solicitaco" +
                    "es pendentes do tipo B", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Dado ");
#line 25
 testRunner.When("uma solicitação de trabalho do tipo A for postada como pendente", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Quando ");
#line 26
 testRunner.And("uma solicitação de trabalho do tipo B for postada como pendente", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "E ");
#line 27
 testRunner.Then("o primeiro despachante deve receber a solicitação de trabalho do tipo A recém pos" +
                    "tada como pendente", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Então ");
#line 28
 testRunner.And("o segundo despachante deve receber a solicitação de trabalho do tipo B recém post" +
                    "ada como pendente", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "E ");
#line hidden
            this.ScenarioCleanup();
        }
        
        [NUnit.Framework.TestAttribute()]
        [NUnit.Framework.DescriptionAttribute("Verificar que há uma solicitação de trabalho postada por outro despachante e marc" +
            "ada como em andamento por mais tempo que o permitido")]
        [NUnit.Framework.CategoryAttribute("stable")]
        [NUnit.Framework.CategoryAttribute("fast")]
        public virtual void VerificarQueHaUmaSolicitacaoDeTrabalhoPostadaPorOutroDespachanteEMarcadaComoEmAndamentoPorMaisTempoQueOPermitido()
        {
            TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Verificar que há uma solicitação de trabalho postada por outro despachante e marc" +
                    "ada como em andamento por mais tempo que o permitido", new string[] {
                        "stable",
                        "fast"});
#line 31
this.ScenarioSetup(scenarioInfo);
#line 32
 testRunner.Given("que uma solicitação de trabalho tenha sido encaminhada para execução por um outro" +
                    " despachante de trabalhos", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Dado ");
#line 33
 testRunner.And("que a solicitação de trabalho tenha sido marcada com um tempo máximo de processam" +
                    "ento de 4 segundos", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "E ");
#line 34
 testRunner.And("que a solicitação de trabalho tenha sido marcada como em andamento há 12 segundos" +
                    " atrás", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "E ");
#line 35
 testRunner.And("que exista um despachante de trabalhos ocioso", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "E ");
#line 36
 testRunner.When("o outro despachante de trabalhos verificar que a solicitação de trabalho expirou", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Quando ");
#line 37
 testRunner.Then("o outro despachante deve republicar a solicitação de trabalho como pendente", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Então ");
#line hidden
            this.ScenarioCleanup();
        }
        
        [NUnit.Framework.TestAttribute()]
        [NUnit.Framework.DescriptionAttribute("Múltiplas solicitações de trabalho concorrentes")]
        [NUnit.Framework.CategoryAttribute("stable")]
        [NUnit.Framework.CategoryAttribute("slow")]
        [NUnit.Framework.TestCaseAttribute("2", null)]
        [NUnit.Framework.TestCaseAttribute("15", null)]
        public virtual void MultiplasSolicitacoesDeTrabalhoConcorrentes(string n, string[] exampleTags)
        {
            string[] @__tags = new string[] {
                    "stable",
                    "slow"};
            if ((exampleTags != null))
            {
                @__tags = System.Linq.Enumerable.ToArray(System.Linq.Enumerable.Concat(@__tags, exampleTags));
            }
            TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Múltiplas solicitações de trabalho concorrentes", @__tags);
#line 40
this.ScenarioSetup(scenarioInfo);
#line 41
 testRunner.Given(string.Format("que {0} despachantes tenham se inscrito para processar solicitações de trabalho d" +
                        "o tipo A", n), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Dado ");
#line 42
 testRunner.When(string.Format("{0} solicitações de trabalho do tipo A forem enviadas para processamento", n), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Quando ");
#line 43
 testRunner.Then(string.Format("ao menos 2 dos {0} despachantes de trabalho devem ser acionados para atendimento " +
                        "às solicitacoes", n), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Entao ");
#line hidden
            this.ScenarioCleanup();
        }
        
        [NUnit.Framework.TestAttribute()]
        [NUnit.Framework.DescriptionAttribute("Encaminhar duas solicitações de trabalho para um despachante que processa somente" +
            " uma solicitação por vez")]
        [NUnit.Framework.CategoryAttribute("stable")]
        [NUnit.Framework.CategoryAttribute("slow")]
        public virtual void EncaminharDuasSolicitacoesDeTrabalhoParaUmDespachanteQueProcessaSomenteUmaSolicitacaoPorVez()
        {
            TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Encaminhar duas solicitações de trabalho para um despachante que processa somente" +
                    " uma solicitação por vez", new string[] {
                        "stable",
                        "slow"});
#line 51
this.ScenarioSetup(scenarioInfo);
#line 52
 testRunner.Given("que um despachante de trabalhos tenha sido configurado para processar 1 solicitaç" +
                    "ão de trabalho do tipo A", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Dado ");
#line 53
 testRunner.When("2 solicitações de trabalho do tipo A forem enviadas para processamento", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Quando ");
#line 54
 testRunner.Then("o despachante de trabalhos deve completar as 2 solicitações de trabalho", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Então ");
#line 55
 testRunner.And("a primeira solicitação de trabalho deve ter sido completada antes que a segunda t" +
                    "enha sido recebida", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "E ");
#line hidden
            this.ScenarioCleanup();
        }
    }
}
#pragma warning restore
#endregion
