示例#1
0
        private void MostrarInforme(UnidadDafny dfy, InformeDafny inf)
        {
            // Sería interesante poner milisegundos pero no tiene tanta fidelidad

            Console.Write(String.Format("{0,-30} ({1,2}s): ",
                                        dfy.Nombre.Length > 30 ? dfy.Nombre.Substring(0, 27) + "..." : dfy.Nombre,
                                        inf.Tiempo.TotalSeconds));


            ConsoleColor color = ConsoleColor.White;

            if (inf.Resultado == InformeDafny.Result.EVERIFICACION)
            {
                color = ConsoleColor.Magenta;
            }
            else if (inf.Resultado != InformeDafny.Result.CORRECTO)
            {
                color = ConsoleColor.Red;
            }

            Console.ForegroundColor = color;

            Console.WriteLine(inf.Resultado.Desc());

            Console.ResetColor();
        }
示例#2
0
        private void Imprimir(UnidadDafny dfy)
        {
            // Busca información de ejecución en la caché

            InformeDafny informe = null;

            bool está = caché.Consulta(dfy.Uri, out informe);

            string desc  = está ? informe.Resultado.Desc() : "no hay datos";
            string color = está ? (informe.Resultado.EsError() ? "red" : "green") : "blue";

            // Escribe el título del archivo
            tex.Write(String.Format(Título,
                                    EscaparLaTeX(dfy.Nombre),
                                    color,
                                    desc
                                    ));

            // Escribe un enlace para el pdf
            tex.Write(String.Format("\t\\pdfbookmark[{2}]{{{0}}}{{l{1}}}\n",
                                    EscaparLaTeX(dfy.Nombre),
                                    nord,
                                    Math.Min(nivel + 1, 3)
                                    ));

            // Añade el archivo en un entorno listing
            tex.Write(String.Format("\t\\lstinputlisting{{{0}}}\n",
                                    Path.GetFullPath(dfy.Uri)));

            // Imprime la salida de error en caso de error

            if (está && informe.Resultado.EsError())
            {
                tex.Write(String.Format("\\medskip \\begin{{center}}Salida de Dafny ({0}s):\\end{{center}}",
                                        informe.Tiempo.TotalSeconds));

                tex.Write(String.Format("{{\\footnotesize \\begin{{verbatim}}{0}\\end{{verbatim}}}}",
                                        informe.Salida));
            }

            // Cada archivo en una página
            tex.Write(@"\eject");

            nord++;
        }
示例#3
0
        private void Enumerar(UnidadDafny dfy, StreamWriter sw)
        {
            sw.WriteLine("<tr><td> " + "<a href=\"ver/" + dfy.Uri + "\">" + dfy.Nombre + "</a></td>");

            InformeDafny informe = null;

            if (DCaché.Consulta(dfy.Uri, out informe))
            {
                sw.WriteLine(@"<td style=""text-align: center;"">" + informe.Tiempo.TotalSeconds + "s</td>");

                string color = "greenyellow";

                if (informe.Resultado.EsError())
                {
                    color = "red";
                }

                sw.WriteLine(@"<td style=""background-color: " + color + @";"">" + informe.Resultado.Desc() + "</td>");
            }

            sw.WriteLine("</tr>");
        }