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()); }
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); } }
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); } }
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); } }