public async Task ConstruireEtiquetteSansEnregistrement()
        {
            // Préparations
            IArbreConstruction arbre       = new ArbreConstruction();
            const string       chemin      = "123456";
            const string       idEtiquette = "Etiq";
            var typeBlock     = EnumTypeBlock.Autre;
            var elementEnfant = new ElementCheminConstructionDto(chemin);
            var elementRacine = new ElementEtiquetteConstructionDto(
                typeBlock,
                idEtiquette,
                elementEnfant);
            IFabriqueArbre fabrique = new FabriqueArbre(
                arbre,
                elementRacine);

            // Action à vérifier
            await fabrique
            .ConstruireAsync();

            // Tests
            Assert
            .IsNotNull(
                (fabrique as FabriqueArbre).ElementsConstruction);
            Assert
            .AreEqual(
                0,
                ((fabrique as FabriqueArbre).BlocksInfos?.Count).GetValueOrDefault(0));
        }
        public async Task ConstruireCheminReussite()
        {
            // Préparations
            IArbreConstruction arbre  = new ArbreConstruction();
            const string       chemin = "123456";
            var elementRacine         = new ElementCheminConstructionDto(
                chemin);
            IFabriqueArbre fabrique = new FabriqueArbre(
                arbre,
                elementRacine);

            // Action à vérifier
            await fabrique
            .ConstruireAsync();

            // Tests
            Assert
            .IsNotNull(
                (fabrique as FabriqueArbre).ElementsConstruction);

            var navigateur = (arbre as ArbreConstruction)
                             .RecupererNavigateurMultiSymbolesSur(
                arbre.EtatEntree);

            navigateur
            .TransitionPar(
                chemin);
            Assert
            .IsTrue(
                navigateur.EtatsCourants.Contains(arbre.EtatSortie));
        }
        public async Task ConstruireCheminEchec()
        {
            // Préparations
            IArbreConstruction arbre       = new ArbreConstruction();
            const string       chemin      = "123456";
            const string       cheminSuivi = "6";
            var elementRacine = new ElementCheminConstructionDto(
                chemin);
            IFabriqueArbre fabrique = new FabriqueArbre(
                arbre,
                elementRacine);

            // Action à vérifier
            await fabrique
            .ConstruireAsync();

            // Tests
            Assert
            .IsNotNull(
                (fabrique as FabriqueArbre).ElementsConstruction);

            // Sans cheminer => échec
            var navigateur = (arbre as ArbreConstruction)
                             .RecupererNavigateurMultiSymbolesSur(
                arbre.EtatEntree);

            navigateur
            .TransitionsSansSymbole();
            Assert
            .IsFalse(
                navigateur.EtatsCourants.Contains(arbre.EtatSortie));

            // Mauvais chemin => pas de cible
            navigateur = (arbre as ArbreConstruction)
                         .RecupererNavigateurMultiSymbolesSur(
                arbre.EtatEntree);
            navigateur
            .TransitionPar(
                cheminSuivi);
            Assert
            .AreEqual(
                0,
                navigateur.EtatsCourants.Count());
        }
Beispiel #4
0
        private async Task ConstruireCheminAsync(
            IEnumerable <Etat> etatsDebut,
            IEnumerable <Etat> etatsFin,
            ElementCheminConstructionDto donnees)
        {
            try
            {
                if (null != donnees &&
                    !string.IsNullOrEmpty(donnees.Chemin))
                {
                    var element = await CreerElementAsync(
                        etatsDebut,
                        etatsFin);

                    var transitions = await ConstruireCheminAsync(
                        element.EtatEntree,
                        donnees.Chemin);

                    var derniereTransition = transitions
                                             .LastOrDefault();

                    if (null != derniereTransition)
                    {
                        arbre
                        .AjouterTransition(
                            derniereTransition.EtatCible,
                            element.EtatSortie);
                    }
                    else
                    {
                        arbre
                        .AjouterTransition(
                            element.EtatEntree,
                            element.EtatSortie);
                    }
                }
            }
            catch (Exception ex)
            {
                throw EncapsulerEtGererException <ExceptionTechniqueArbreConstruction>(
                          ex);
            }
        }
Beispiel #5
0
            private ElementConstructionDto DeserialiserElementEtiquette(
                JObject jObject)
            {
                try
                {
                    JToken jToken;
                    ElementConstructionDto enfant;

                    if (jObject.TryGetValue("item", out jToken))
                    {
                        enfant = Deserialiser(
                            jToken);
                    }
                    else
                    {
                        enfant = new ElementCheminConstructionDto(
                            string.Empty);
                    }

                    var id = jObject.TryGetValue("id", out jToken) ?
                             jToken.Value <string>() :
                             null;

                    var typeInt = jObject.TryGetValue("type", out jToken) ?
                                  jToken.Value <int>() :
                                  (int)EnumTypeBlock.Reference;
                    var type = EnumHelper
                               .RecupererEnum <EnumTypeBlock>(
                        typeInt,
                        EnumTypeBlock.Reference);

                    return(new ElementEtiquetteConstructionDto(
                               type,
                               id,
                               enfant));
                }
                catch (Exception ex)
                {
                    throw EncapsulerEtGererException <ExceptionTechniqueArbreConstruction>(
                              ex);
                }
            }
Beispiel #6
0
            private ElementConstructionDto DeserialiserRepetitionElement(
                JObject jObject)
            {
                try
                {
                    JToken jToken;
                    ElementConstructionDto enfant;

                    if (jObject.TryGetValue("item", out jToken))
                    {
                        enfant = Deserialiser(
                            jToken);
                    }
                    else
                    {
                        enfant = new ElementCheminConstructionDto(
                            string.Empty);
                    }

                    var min = jObject.TryGetValue("min", out jToken) ?
                              jToken.Value <int>() :
                              0;
                    var max = jObject.TryGetValue("max", out jToken) ?
                              jToken.Value <int>() :
                              int.MaxValue;

                    return(new ElementRepetitionConstructionDto(
                               enfant,
                               min,
                               max));
                }
                catch (Exception ex)
                {
                    throw EncapsulerEtGererException <ExceptionTechniqueArbreConstruction>(
                              ex);
                }
            }