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 ConstruireSequenceEchec() { // Préparations IArbreConstruction arbre = new ArbreConstruction(); const string chemin1 = "123456"; const string chemin2 = "abcdef"; const string cheminSuivi = "6"; var elementRacine = new SequenceElementsConstructionDto( new[] { new ElementCheminConstructionDto(chemin1), new ElementCheminConstructionDto(chemin2) }); 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)); // Autre chemin => pas de cible navigateur = (arbre as ArbreConstruction) .RecupererNavigateurMultiSymbolesSur( arbre.EtatEntree); navigateur .TransitionPar( cheminSuivi); Assert .AreEqual( 0, navigateur.EtatsCourants.Count()); }
public async Task ConstruireReferenceEchec() { // Préparations IArbreConstruction arbre = new ArbreConstruction(); const string chemin = "123456"; const string cheminSuivi = "ab"; const string idEtiquette = "Etiq"; var typeBlock = EnumTypeBlock.Reference; var elementEtiquette = new ElementEtiquetteConstructionDto( typeBlock, idEtiquette, new ElementCheminConstructionDto(chemin)); var elementReference = new ElementReferenceConstructionDto( idEtiquette); var elementRacine = new ChoixElementsConstructionDto( new ElementConstructionDto[] { elementEtiquette, elementReference }); 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( cheminSuivi); Assert .IsFalse( navigateur.EtatsCourants.Contains(arbre.EtatSortie)); }
public async Task ConstruireRepetitionMin2Max3Echec() { // Préparations IArbreConstruction arbre = new ArbreConstruction(); const string chemin = "123456"; var elementRacine = new ElementRepetitionConstructionDto( new ElementCheminConstructionDto(chemin), 2, 3); 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); // 0 fois => pas suffisant navigateur .TransitionsSansSymbole(); Assert .IsFalse( navigateur.EtatsCourants.Contains(arbre.EtatSortie)); // 1 fois => pas suffisant navigateur .TransitionPar( chemin); Assert .IsFalse( navigateur.EtatsCourants.Contains(arbre.EtatSortie)); // 2 fois => ok navigateur .TransitionPar( chemin); Assert .IsTrue( navigateur.EtatsCourants.Contains(arbre.EtatSortie)); // 3 fois => ok navigateur .TransitionPar( chemin); Assert .IsTrue( navigateur.EtatsCourants.Contains(arbre.EtatSortie)); // 4 fois => non navigateur .TransitionPar( chemin); Assert .IsFalse( navigateur.EtatsCourants.Contains(arbre.EtatSortie)); }
public async Task ConstruireReferenceDoubleNiveau() { // Préparations // Construction de 2 étiquette, l'une appelant l'autre IArbreConstruction arbre = new ArbreConstruction(); const string chemin = "123456"; var typeBlock = EnumTypeBlock.Reference; const string idEtiquetteEnfant = "EtiqEnfant"; var elementEtiquetteEnfant = new ElementEtiquetteConstructionDto( typeBlock, idEtiquetteEnfant, new ElementCheminConstructionDto(chemin)); const string idEtiquetteParent = "EtiqParent"; var elementEtiquetteParent = new ElementEtiquetteConstructionDto( typeBlock, idEtiquetteParent, new ElementReferenceConstructionDto(idEtiquetteEnfant)); var elementReference = new ElementReferenceConstructionDto( idEtiquetteParent); var elementSequence = new SequenceElementsConstructionDto( new[] { elementReference, elementReference }); var elementRacine = new ChoixElementsConstructionDto( new ElementConstructionDto[] { elementEtiquetteEnfant, elementEtiquetteParent, elementSequence // = séquence contenant 2 références à l'étiquette de plus haut niveau }); 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); // 1 fois => pas suffisant navigateur .TransitionPar( chemin); Assert .IsFalse( navigateur.EtatsCourants.Contains(arbre.EtatSortie)); // 2 fois => ok navigateur .TransitionPar( chemin); Assert .IsTrue( navigateur.EtatsCourants.Contains(arbre.EtatSortie)); }