Beispiel #1
0
 private void EscribirMain( EscritorC escritor )
 {
     escritor.WriteLine( "int main()" );
     escritor.AbrirCorchetes();
     if( ContarCantInstrucciones )
     {
         escritor.WriteLine( "/*-----Archivo para contar instrucciones-------*/" );
         escritor.WriteLine( "fs = fopen(\" " + ArchivoCuentaInstrucciones + "\", \"w\");" );
         escritor.If( "!fs" );
         escritor.PrintfNoSePudoAbrirElArchivo( ArchivoCuentaInstrucciones );
         escritor.FinIf();
     }
     escritor.WriteLine( "/*------------Parametros-------------------------*/" );
     escritor.WriteLine( "int cantErrores = 0;" );
     escritor.WriteLine( "/*------------Llamada a pruebas------------------*/" );
     foreach( Prueba prueba in Pruebas )
     {
         if( FrenarEnElPrimerError )
             escritor.If( "cantErrores == 0" );
         escritor.WriteLine( "cantErrores = " + prueba.Nombre + "();" );
         if( FrenarEnElPrimerError )
             escritor.FinIf();
     }
     if( ContarCantInstrucciones )
         escritor.WriteLine( "fclose(fs);" );
     escritor.PrintfPruebasConcluidas();
     escritor.WriteLine( "return 0;" );
     escritor.CerrarCorchetes();
 }
Beispiel #2
0
        private void EscribirFuncionDePrueba( EscritorC escritor )
        {
            escritor.WriteLine( PruebaActual.Prototipo );
            escritor.AbrirCorchetes();
            escritor.WriteLine( "//------------Variables comunes------------------" );
            escritor.WriteLine( "int salidaFree2;" );
            escritor.WriteLine( "long long tiempoDeEjecucion=0;" );
            escritor.WriteLine( "long long tiempo = 0;" );
            escritor.WriteLine( "int cantCorridas = 100;" );
            escritor.WriteLine( "//------------Parametros-------------------------" );
            PruebaActual.DeclararParametros( escritor );
            escritor.WriteLine( "int cantErrores = 0;" );
            if( !ContarCantInstrucciones )
            {
                escritor.WriteLine( "//------------Pedir memoria----------------------" );
                PruebaActual.PedirMemoria( escritor );
                escritor.WriteLine( "//------------Instanciacion----------------------" );
                PruebaActual.InstanciarParametros( escritor );
                escritor.WriteLine( "//------------LlamadaFuncion---------------------" );
                LlamarFuncionAProbar( escritor );
                escritor.WriteLine( "//------------Comparacion de valores-------------" );
                PruebaActual.CompararValoresDevueltos( escritor );
                escritor.WriteLine( "//------------Liberar memoria--------------------" );
                PruebaActual.LiberarMemoria( escritor );
                //Libera la memoria que pidió y verifica que no se haya escrito fuera del buffer.
                escritor.WriteLine( "//------------Informar cant. de errores----------" );
            }
            else
            {
                escritor.WriteLine( "//------------Cuento instrucciones--------------------" );
                escritor.While( "tiempoDeEjecucion < 10000" );
                escritor.WriteLine( "tiempoDeEjecucion = 0;" );
                escritor.WriteLine( "int i;" );
                escritor.For( "i =0", "i<cantCorridas", "i++" );
                escritor.WriteLine( "//------------Pedir memoria----------------------" );
                PruebaActual.PedirMemoria( escritor );
                escritor.WriteLine( "//------------Instanciacion----------------------" );
                PruebaActual.InstanciarParametros( escritor );
                escritor.WriteLine( "tiempo = timer();" );
                LlamarFuncionAProbar( escritor );
                escritor.WriteLine( "tiempoDeEjecucion += timer() - tiempo;" );
                escritor.WriteLine( "//------------Liberar memoria--------------------" );
                PruebaActual.LiberarMemoria( escritor );
                escritor.FinWhile();
                escritor.WriteLine( "cantCorridas *=10;" );
                escritor.FinFor();
                escritor.WriteLine( "tiempoDeEjecucion = tiempoDeEjecucion / cantCorridas;" );
                escritor.WriteLine();
                escritor.WriteLine( "//---Escribo en archivo la cant de inst.----------" );
                escritor.If( "fs" );
                escritor.Write( "fprintf( fs, \"" );
                foreach( Parametro param in PruebaActual.ParametrosEntrada )
                {
                    param.TamanioOValorParaMedicion( escritor );
                    escritor.Write( "\\t" );
                }
                escritor.WriteLine( "%d\\n\", tiempoDeEjecucion);" );
                escritor.FinIf();
            }

            escritor.PrintfPruebaConcluida();
            escritor.WriteLine( "return cantErrores;" );
            escritor.CerrarCorchetes();
        }