public void ExecutarCrossOver()
        {
            var sw = new Stopwatch();
            sw.Start();

            var helper = new JavascriptHelper(Path.Combine(Environment.CurrentDirectory, "Require"), true, false);
            var scriptCode = File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "Require", "global.js"));
            helper.ConfigurarGeracao();

            var ast = helper.GerarAst(scriptCode);

            int no = new Random().Next(0, helper.ContarNos(ast));

            var astNova = helper.ExecutarMutacaoExclusao(ast, no);

            sw.Stop();
            Console.WriteLine("ExecutarMutacaoExclusao {0}", sw.Elapsed.ToString(@"hh\:mm\:ss\.ffff"));

            Assert.AreNotEqual(ast, astNova);

            sw.Reset();
            sw.Start();

            string astFilho1, astFilho2;

            helper.ExecutarCrossOver(ast, astNova, 348, 456, out astFilho1, out astFilho2);

            sw.Stop();
            Console.WriteLine("ExecutarCrossOver {0}", sw.Elapsed.ToString(@"hh\:mm\:ss\.ffff"));

            var codigo = helper.GerarCodigo(astFilho1);
            var codigoNovo = helper.GerarCodigo(astFilho2);

            Assert.AreNotEqual(codigo, codigoNovo);

            File.WriteAllText("codigo.txt", codigo);
            File.WriteAllText("codigoNovo.txt", codigoNovo);
        }
        public void GerarCodigo()
        {
            const string diretorioExecucao = "Require";
            //var scriptCode = File.ReadAllText(Path.Combine(Environment.CurrentDirectory, diretorioExecucao, "global.js")).Replace("\n\n", "").Replace("\n", "").Replace(" ", "");
            var astMoment = File.ReadAllText(Path.Combine(Environment.CurrentDirectory, diretorioExecucao, "astUnderscore.txt"));

            var helper = new JavascriptHelper(Path.Combine(Environment.CurrentDirectory, diretorioExecucao), false, false);
            helper.ConfigurarGeracao();
            var codigo = helper.GerarCodigo(astMoment); //.Replace("\n\n", "").Replace("\n", "").Replace(" ", "");

            //Assert.AreEqual(scriptCode, codigo, "Código Inválido");
            Assert.AreEqual(codigo, helper.Codigo, "Código Inválido");
        }
        public void GerarCodigoDoMoment()
        {
            const string diretorioExecucao = "Require";
            var helper = new JavascriptHelper(Path.Combine(Environment.CurrentDirectory, diretorioExecucao), false, false);
            helper.ConfigurarGeracao();

            var scriptCode = File.ReadAllText(Path.Combine(Environment.CurrentDirectory, diretorioExecucao, "global.js"));
            var astMoment = helper.GerarAst(scriptCode);

            File.WriteAllText("astMoment.txt", helper.FormatarStringJson(astMoment));

            var codigo = helper.GerarCodigo(astMoment);

            File.WriteAllText("codigo.txt", scriptCode);
            File.WriteAllText("codigoNovo.txt", codigo);

            Assert.AreEqual(scriptCode, helper.Codigo, "Código Inválido");
        }
Beispiel #4
0
        public void ExecutarTestesUnderscoreMutanteComFalha()
        {
            var diretorioFontes = Path.Combine(Environment.CurrentDirectory, "Require");
            var jhelper = new JavascriptHelper(diretorioFontes, true, true);
            jhelper.ConfigurarGeracao();

            var caminhoJs = string.Format("{0}\\{1}", diretorioFontes, "underscore.js");
            var caminhoTestes = string.Format("{0}\\{1}", diretorioFontes, "underscoreTests.js");

            var codigo = File.ReadAllText(caminhoJs);
            var ast = jhelper.GerarAst(codigo);

            var fit = jhelper.ExecutarTestes(caminhoJs, caminhoTestes);
            jhelper.ConfigurarMelhorFit(fit);

            jhelper.ReiniciarEngine();

            var novaAst = jhelper.ExecutarMutacaoExclusao(ast, 1190); //continua válido mas falha nos testes [ 4 testes com falha]

            var novoCodigo = jhelper.GerarCodigo(novaAst);
            var caminhoNovoJs = string.Format("{0}\\{1}", diretorioFontes, "Novo.js");
            File.WriteAllText(caminhoNovoJs, novoCodigo);

            var novaFit = jhelper.ExecutarTestes(caminhoNovoJs, caminhoTestes);

            Assert.IsNotEmpty(novoCodigo);
            Assert.AreNotEqual(fit, novaFit);
            Assert.Greater(jhelper.TestesComFalha, 0);
        }