public void SubstituerVariableFichier(String FichierModele, String FichierResultat, String FichierDeVariables)
        {
            JCAVariable mesVariables = new JCAVariable();
            String monContenu;

            mesVariables.LireFichier(FichierDeVariables);
            monContenu = System.IO.File.ReadAllText(FichierModele );
            monContenu = JCAVariable.SubstituerVariables(monContenu, mesVariables.Variables );
            System.IO.File.WriteAllText(FichierResultat, monContenu);
        }
        public void ExtrairePaireTest()
        {
            JCAVariable maVariable = new JCAVariable();
            String Valeur;
            String Cle;

            Cle = maVariable.ExtrairePaire("Test=Valeur",out Valeur );
            Assert.AreEqual("Test", Cle);
            Assert.AreEqual("Valeur", Valeur );
        }
示例#3
0
        public int ExecuteExporte(string[] args, out String Message)
        {
            JCAVariable mesArgs = new JCAssertionCore.JCAVariable();
            JCAVariable mesVariables = new JCAssertionCore.JCAVariable();
            JCAConsole maConsole = new JCAssertionCore.JCAConsole ();
            String Usage = "usage :" + Environment.NewLine + Environment.NewLine + "JCAExporte /F:fichier /V1:cle=valeur /v2=cle2=valeur2 ...";
            String Cle;
            String Valeur;

            Message = "";

            if (args.Count() < 2)
            {
                Message = "Pas assez d'arguments. " + Environment.NewLine + Usage ;
                return 99;
            }

            mesArgs = maConsole.Arguments(args);

            if ((mesArgs.GetValeurVariable("F") == null) || (mesArgs.GetValeurVariable("F") == ""))
                {
                    Message = "L'argument /F (Chemin du fichier de sortie n'a pas été spécfié.)" + Environment.NewLine + Usage;
                    return 99;
                }

            // Traitemen OK
            String NomFichier = mesArgs.GetValeurVariable("F");
            if (System.IO.File.Exists (NomFichier)) mesVariables.LireFichier(NomFichier );
            // Ajouter ou maj les variables

            foreach (var monParem in mesArgs.Variables )
                {

                    if ((monParem.Key.Length > 0 ) && (monParem.Key.Substring(0,1).ToUpper()   == "V"))
                    {
                        Cle = mesArgs.ExtrairePaire(monParem.Value, out  Valeur);
                        mesVariables.MAJVariable (Cle ,Valeur );

                    }
                }

            // metre les variables par défaut
            mesVariables.MAJVariable(JCAVariable.Constantes.JCA_FichierDeVariables   ,
                NomFichier);

            //Sauvegarder
            mesVariables.EcrireFichier(NomFichier);
            Message = Environment.NewLine +  "Fichier : " + NomFichier + " mis à jour.";

            return 0;
        }
示例#4
0
        public JCAVariable Arguments(string[] args)
        {
            String Cle;
            String Valeur;
            JCAVariable Resultat = new JCAVariable();

            foreach  (String  Param in args  )
                {
                    if ((Param != null ) && (Param != "")  )
                        {
                            if(ExtraireParam(Param ,out Cle, out Valeur ))
                                Resultat.MAJVariable (Cle,Valeur );
                        }
                }
            return Resultat;
        }
        public void EcrireEtLire()
        {
            JCAVariable mesVariablesAvant = new JCAVariable();
            JCAVariable mesVariablesApres = new JCAVariable();
            String NomFichier = JCACore.RepertoireAssembly() + "Ressources\\EcrireEtLire.xml";

            // tester l'état de l'environnement de test
            if (File.Exists(NomFichier)) File.Delete(NomFichier);
            Assert.IsFalse (File.Exists (NomFichier),"Le fichier de sérialisation devrait ne pas exister");

            // remplir les avariables avant ecriture
            mesVariablesAvant.MAJVariable("Test<3>", "Valeur\" de la variable Test3");
            mesVariablesAvant.MAJVariable("Test\"1\"", "Valeur de <la> variable Test1");
            mesVariablesAvant.MAJVariable("AATest2", "Valeur de la variable Test2");
            mesVariablesAvant.MAJVariable("JCA.FichierDeVariables", NomFichier);

            mesVariablesAvant.EcrireFichier(NomFichier);

            String Contenu = System.IO.File.ReadAllText(NomFichier);
            Assert.IsTrue(Contenu.Contains("Test&lt;3&gt;"));
            Assert.IsTrue(Contenu.Contains("Valeur&quot; de la variable Test3"));
            Assert.IsTrue(Contenu.Contains("Test&quot;1&quot;"));
            Assert.IsTrue(Contenu.Contains("Valeur de &lt;la&gt; variable Test1"));
            Assert.IsTrue(Contenu.Contains("AATest2"));
            Assert.IsTrue(Contenu.Contains("Valeur de la variable Test2"));

            // Créer du contenu qui sera remplacé dans la variable apr
            mesVariablesApres.MAJVariable("errone","Cette valeur devrait disparaitre");
            String Detail;
            Boolean TestComplexe = mesVariablesAvant.EstEgal (mesVariablesApres.Variables  , out Detail  );

            Assert.IsFalse(TestComplexe, "Avant de commencer le test lesvariablesdevraient être différentes");

            mesVariablesApres.LireFichier(NomFichier );

            TestComplexe = mesVariablesAvant.EstEgal(mesVariablesApres.Variables, out Detail);

            Assert.IsTrue(TestComplexe, "Aprè le test les deux objets de variable devraient être pareils : " + Detail );
        }
        public void MAJVariablesOKTest()
        {
            String NomFichier = Chemin +
                "MAJVariablesOKTest.xml";

            // Préparer les variables de test
            JCAVariable mesVariables = new JCAVariable();
            mesVariables.MAJVariable("s","Suffixe");
            mesVariables.MAJVariable("p", "Préfixe");
            mesVariables.MAJVariable("Autre", "Autres");
            mesVariables.MAJVariable("R", "Résultat");

            Assert.IsTrue(mesVariables.GetValeurVariable(
                JCAVariable.Constantes.JCA_FichierDeVariables)
                == null,
                "La variable JCA.FichierDeVariables ne devrait pas exister.");

            // Défnir le noued xml qui contient le test
            JCACore monCore = new JCACore();
            monCore.Variables = mesVariables;

            XmlDocument monCas = new XmlDocument ();

            monCas.InnerXml = "<Assertion><Type>MAJVariables</Type>" +
                "<Cle>{{R}}</Cle>" +
                "<Valeur>{{p}}te{{Autre}}st{{s}}</Valeur>" +
                "</Assertion>";

            // Un cas qui marche sans fichier

            Assert.IsTrue(monCore.ExecuteCas(monCas),
                "L'éxécution du cas a échoué : " +
                monCore.Message + Environment.NewLine +
                monCore.MessageEchec );
            Assert.IsTrue(monCore.Variables.GetValeurVariable("Résultat").Contains("PréfixeteAutresstSuffixe"),
                "Variable Résultat avec le mauvais contenu : " +
                 monCore.Variables.GetValeurVariable("Résultat"));

            // Un cas qui marche avec fichier
            monCore.Variables = mesVariables;
            monCore.Variables.MAJVariable(
               JCAVariable.Constantes.JCA_FichierDeVariables, NomFichier );
            if (System.IO.File.Exists(NomFichier))
                System.IO.File.Delete(NomFichier );
            Assert.IsFalse(System.IO.File.Exists(NomFichier),
                "Le fichier ne devrait pas exister");
            Assert.IsTrue(monCore.ExecuteCas(monCas),
                "L'éxécution du cas a échoué : " +
                monCore.Message + Environment.NewLine +
                monCore.MessageEchec);
            Assert.IsTrue(monCore.Variables.GetValeurVariable("Résultat").Contains("PréfixeteAutresstSuffixe"),
                "Variable Résultat avec le mauvais contenu : " +
                 monCore.Variables.GetValeurVariable("Résultat"));
            Assert.IsTrue(System.IO.File.Exists(NomFichier),
                "Le fichierdevrait exister : " + NomFichier );

            String ResultatFichier = System.IO.File.ReadAllText(NomFichier );
            Assert.IsTrue(ResultatFichier.Contains("PréfixeteAutresstSuffixe"),
                "Variable Résultat dans le fichier " +
                NomFichier  +" avec le mauvais contenu : " +
                 ResultatFichier);
        }
示例#7
0
        // l'appel aux constructeurs complexes a été mis
        // ici pour pouvoir faire un try catch
        // Boolean Debug = true;
        public void InitJCAssertion()
        {
            if (! Init)
              {
            try {
                Utilitaire = new JCAUtilitaires();
                Init = true ;
                mesArguments = new JCAssertionCore.JCAVariable();
                maConsole = new JCAssertionCore.JCAConsole();
                monJCACore = new JCACore();

                }
            catch (Exception excep)
                {
                    ExceptionGlobale = excep ;
                    ExceptionRencontree = true;
                    CodeDeRetour = 99;
                    throw excep;
                }
              } // ! init
        }
示例#8
0
        // Methode utilisé  par le load et qui peutêtreunittestée
        public int Execute()
        {
            InitJCAssertion();
            NombreCas = 0;
            NombreEchec = 0;
            NombreReussi = 0;

            Message = "Démarrage";
            if ((args.Length == 0) && (! UnitTest ) ) Interactif = true;
            mesArguments = maConsole.Arguments(args);

            if ((mesArguments.GetValeurVariable("AV") != null) &&
                (mesArguments.GetValeurVariable("AV") != ""))
            {
                Avertir = true;
            }

            if ((mesArguments.GetValeurVariable("I") != null) &&
                (mesArguments.GetValeurVariable("I") != ""))
            {
                Interactif  = true;
            }

            if (!JCAUtilitaires.EVSourceExiste())
                Informer(Environment.NewLine +
                    "Avertissement : La source de journal d'événement 'JCAssertion' " +
                    "doit être définie pour avoir accès à "+
                    "tous les messages d'erreurs. Consultez www.jcassertion.org Configuration requise " +
                    "^pour plus de détails.");

            // l'argument d0 provoque une exceptions

            if ((mesArguments.GetValeurVariable("D0") != null) &&
                (mesArguments.GetValeurVariable("D0") != ""))
            {
                throw new Exception(
                    "Exception déclenchée volontairement par l'argument /D0 ");
            }

            // Vérifier qu'au moins le nom de fichier d'assertion est fourni

            if ((mesArguments.GetValeurVariable("FA") == null) ||
                (mesArguments.GetValeurVariable("FA") == ""))
                    {
                        Informer("Ce programme doit recevoir des arguments enligne de commande." + Usage, true) ;
                        return 99;
                   }
            // Valider un peu les arguments
            String FichierAssertion = mesArguments.GetValeurVariable("FA");
            String FichierVariable = "";
            if ((mesArguments.GetValeurVariable("FV") != null) &&
                (mesArguments.GetValeurVariable("FV") != ""))
                    FichierVariable = mesArguments.GetValeurVariable("FV");

            if (!System.IO.File.Exists(FichierAssertion))
            {
                Informer( "Le fichier d'assertion . " +
                    FichierAssertion + " n'existe pas." , true );
                return 99;
            }

               if((FichierVariable != "" ) &&
               (! System.IO.File.Exists (FichierVariable)))
               {
                Informer  ("Le fichier de variables . " +
                    FichierVariable + " n'existe pas.", true );
                return 99;
            }

            if ((mesArguments.GetValeurVariable("J") != null) &&
               (mesArguments.GetValeurVariable("J") != ""))
               // Désactiver la journalisation  du core
               // Le^programme va faire un  journal plus complet
               monJCACore.Journaliser = false ;
               JournalActivite =    mesArguments.GetValeurVariable("J");
               if (System.IO.File.Exists(JournalActivite))
                   System.IO.File.Delete(JournalActivite);

            //
            // commencer le traitementproprement dit
            NAJtbxFAssertion(FichierAssertion);
            MAJtbxFVariables(FichierVariable) ;
            Informer("Lecture du fichier d'assertion : "
                + FichierAssertion );
            monJCACore.Load(FichierAssertion );
            NombreCas = monJCACore.NombreCas;
            Informer("Nombre de cas à traiter : " + monJCACore.NombreCas.ToString () );
            if(FichierVariable != "")
            {
                Informer ("Lecture du fichier de variables : "
                + FichierVariable);
                monJCACore.Variables.LireFichier(FichierVariable );
            }

            int i = 1;
            foreach (XmlNode monCas in monJCACore.getListeDeCas())
                {
                    if (AnnulerExecution) break;
                    Informer ("Exécution du cas " + i.ToString() );
                    if (monJCACore.ExecuteCas(monCas))
                        {
                            NombreReussi = NombreReussi + 1;
                            Informer ("Assertion vraie") ;
                            Informer (monJCACore.Message);
                        }
                    else
                        {
                            MessageEchec = monJCACore.MessageEchec  ;
                            Informer ("Assertion fausse");
                            Informer (monJCACore.Message);
                            Informer("Détail de l'échec de l'assertion" +
                                Environment.NewLine +
                                "----");
                            Informer(MessageEchec,Avertir );
                            Informer("-----" +
                                Environment.NewLine +
                                "Fin du détail de l'échec de l'assertion");
                            NombreEchec = NombreEchec + 1;
                        }
                    i = i++;
                }
            Informer("Fin de l'exécution");
            Informer("Cas réussis : " + NombreReussi.ToString() + " sur " + NombreCas.ToString()  );
            Informer("Cas en échec : " + NombreEchec.ToString() + " sur " + NombreCas.ToString());
            if(NombreEchec > 0)
                return 1;
            else
              return 0;
        }
示例#9
0
        public static bool JCAMAJVariables(XmlNode monXMLNode,
            ref string Message, 
            ref  Dictionary<String, String> Variables,
            ref String MessageEchec)
        {
            Message = Message + Environment.NewLine +
                "Assertion MAJVariables" + Environment.NewLine  ;
            if (monXMLNode == null) throw new JCAssertionException("Le XML est vide.");
            ValideBalise(monXMLNode, "Cle");
            string MaCle = ValeurBalise (monXMLNode,"Cle");
            MaCle = JCAVariable.SubstituerVariables(MaCle, Variables);
            Message = Message + "Clé:" + MaCle + Environment.NewLine  ;
            ValideBalise(monXMLNode, "Valeur");

            string MaValeur = ValeurBalise (monXMLNode,"Valeur");
            MaValeur = JCAVariable.SubstituerVariables(MaValeur, Variables);
            Message = Message + "Valeur:" + MaValeur + Environment.NewLine;

            JCAVariable VariableTemp = new JCAVariable() ;
            VariableTemp.Variables  = Variables;
            VariableTemp.MAJVariable (MaCle, MaValeur  );
            Variables = VariableTemp.Variables;
            if(VariableTemp.GetValeurVariable(
                JCAVariable.Constantes.JCA_FichierDeVariables) != null )
                {
                    VariableTemp.EcrireFichier (VariableTemp.GetValeurVariable(
                        JCAVariable.Constantes.JCA_FichierDeVariables));

                }

            Message = Message + Environment.NewLine +
                    "Valeur de variable mise à jour.";
            MessageEchec = "";

            return true ;
        }
示例#10
0
        public void SubstituerVariablesFichier()
        {
            JCACore monCore = new JCACore();
            XmlDocument monCas = new XmlDocument();

            monCas.InnerXml = "<Assertion><Type>SubstituerVariablesFichier</Type>" +
                "<FichierModele>{{Chemin}}SQLexec.txt</FichierModele>" +
                "<FichierSortie>{{Chemin}}SQLexec.txt.sql</FichierSortie>" +
                "<FichierVariables>{{Chemin}}SQLexec.var.xml</FichierVariables>" +
                "</Assertion>";
            Assert.IsFalse(monCore.ExecuteCas(monCas));
            Assert.IsTrue(monCore.Message.Contains("La variable Chemin n'a pas eu de valeur fournie"),
                "Attendu:La variable Chemin n'a pas eu de valeur fournie. Réel :" + monCore.Message  );

            // cas qui marche
            String Modele = Chemin + "SQLexec.txt";
            System.IO.File.WriteAllText(Modele, "spool {{SpoolFile}}" +
                Environment.NewLine + "select '{{Logon}}' from dual;" +
                Environment.NewLine  );

            // Créer le fichier de variables SQLexec.var.xml
            JCAVariable sqlvar = new JCAVariable();
            sqlvar.MAJVariable("Logon","jean-claude");
            sqlvar.MAJVariable("SpoolFile","z:log.txt");
            sqlvar.EcrireFichier(Chemin + "SQLexec.var.xml");

            monCore.Variables.MAJVariable("Chemin", Chemin );
            Assert.IsTrue(monCore.ExecuteCas(monCas));
            Assert.IsTrue(monCore.Message.Contains("La substitution des variables dans le fichier a réussie"), "Attendu:La substitution des variables dans le fichier a réussie");
            //todo verif fichier sql
            String Contenu = System.IO.File.ReadAllText(Chemin + "SQLexec.txt.sql");
            Assert.IsTrue(Contenu.Contains("spool z:log.txt"), "Attendu:spool z:log.txt");
            Assert.IsTrue(Contenu.Contains("select 'jean-claude' from dual;"), "Attendu:select 'jean-claude' from dual;");

            // TODO unitester les autres validations
        }
        public void ClientOK()
        {
            // Préparer les variables de test
            JCAVariable mesVariables = new JCAVariable();
            mesVariables.MAJVariable("monUser","JCA");
            mesVariables.MAJVariable("monPassword", "JCA");
            mesVariables.MAJVariable("monServeur", "localhost");
            mesVariables.MAJVariable("O", "Ouvrir");
            mesVariables.MAJVariable("F", "Fermer");

            JCACore monCore = new JCACore();
            monCore.Variables = mesVariables;

            // un cas sans action mais avec les 3 param`tres
            XmlDocument monCas = new XmlDocument();

            monCas.InnerXml = "<Assertion><Type>ConnectionOracle</Type>" +
                "<User>{{monUser}}</User>" +
                "<Password>{{monPassword}}</Password>" +
                "<Serveur>{{monServeur}}</Serveur>" +
                "</Assertion>";

            Assert.IsFalse(monCore.ODPSQLConnectionOuverte(),
                "Avant de commencer la connection devrait être fermée");
            Assert.IsTrue(monCore.ExecuteCas(monCas),
                "L'éxécution du cas a échoué : " +
                monCore.Message + Environment.NewLine +
                monCore.MessageEchec);
            Assert.IsFalse(monCore.ODPSQLConnectionOuverte(),
                "Sans code d'action  la connection devrait être fermée");

            // test d'action Ouvrir
            Assert.IsFalse(monCore.ODPSQLConnectionOuverte(),
                "Avant de commencer la connection devrait être fermée");

            monCas.InnerXml = "<Assertion><Type>ConnectionOracle</Type>" +
                "<User>{{monUser}}</User>" +
                "<Password>{{monPassword}}</Password>" +
                "<Serveur>{{monServeur}}</Serveur>" +
                "<Action>{{O}}</Action>" +
                "</Assertion>";

            Assert.IsTrue(monCore.ExecuteCas(monCas),
                "L'éxécution du cas action ouvrir a échoué : " +
                monCore.Message + Environment.NewLine +
                monCore.MessageEchec);
            Assert.IsTrue(monCore.ODPSQLConnectionOuverte(),
                "L'action  aurait du ouvrir la connection");

            // Test d'action fermer
            Assert.IsTrue(monCore.ODPSQLConnectionOuverte(),
                "La connection devrait être ouverte");
            monCas.InnerXml = "<Assertion><Type>ConnectionOracle</Type>" +
                "<User>{{monUser}}</User>" +
                "<Password>{{monPassword}}</Password>" +
                "<Serveur>{{monServeur}}</Serveur>" +
                "<Action>{{F}}</Action>" +
                "</Assertion>";
            Assert.IsTrue(monCore.ExecuteCas(monCas),
                "L'éxécution du cas action fermer a échoué : " +
                monCore.Message + Environment.NewLine +
                monCore.MessageEchec);

            Assert.IsFalse(monCore.ODPSQLConnectionOuverte(),
                "L'action aurait du fermer la connection");
        }