From 1417a687571785504b8bc9ed0c18ca86d11f0254 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Sun, 27 Oct 2024 21:19:25 -0400 Subject: [PATCH] updates to test validations They don't really work great right now... --- test/test.cpp | 47 ++++++++++++++++++++++++++++++++-- test/validate.original.cpp | 44 +++++++++++++++++++++---------- test/validate.singleheader.cpp | 33 +++++++++++++++++++----- 3 files changed, 103 insertions(+), 21 deletions(-) diff --git a/test/test.cpp b/test/test.cpp index b784a90..c28418c 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -5,21 +5,64 @@ #define GEN_BENCHMARK #include "gen.cpp" #include "gen.builder.cpp" +#include "gen.scanner.cpp" #include "sanity.cpp" #include "SOA.cpp" + +#ifdef GEN_SYSTEM_WINDOWS + #include +#endif + +using namespace gen; + +void format_file( char const* path ) +{ + String resolved_path = String::make(GlobalAllocator, to_str(path)); + + String style_arg = String::make(GlobalAllocator, txt("-style=file:")); + style_arg.append("../scripts/.clang-format "); + + // Need to execute clang format on the generated file to get it to match the original. + #define clang_format "clang-format " + #define cf_format_inplace "-i " + #define cf_verbose "-verbose " + String command = String::make( GlobalAllocator, clang_format ); + command.append( cf_format_inplace ); + command.append( cf_verbose ); + command.append( style_arg ); + command.append( resolved_path ); + log_fmt("\tRunning clang-format on file:\n"); + system( command ); + log_fmt("\tclang-format finished reformatting.\n"); + #undef cf_cmd + #undef cf_format_inplace + #undef cf_style + #undef cf_verbse +} + +Code dump_to_scratch_and_retireve( Code code ) +{ + Builder ecode_file_temp = Builder::open("gen/scratch.hpp"); + ecode_file_temp.print(code); + ecode_file_temp.write(); + format_file("gen/scratch.hpp"); + Code result = scan_file( "gen/scratch.hpp" ); + remove("gen/scratch.hpp"); + return result; +} + #include "validate.original.cpp" #include "validate.singleheader.cpp" int gen_main() { - using namespace gen; log_fmt("\ngen_time:"); // check_sanity(); // check_SOA(); - validate_original_files_ast(); + // validate_original_files_ast(); validate_singleheader_ast(); return 0; diff --git a/test/validate.original.cpp b/test/validate.original.cpp index 5fc0f0e..7bc7018 100644 --- a/test/validate.original.cpp +++ b/test/validate.original.cpp @@ -8,10 +8,6 @@ #include "gen.scanner.hpp" using namespace gen; -#ifdef GEN_SYSTEM_WINDOWS - #include -#endif - #define path_root "../" #define path_project path_root "project/" #define path_scripts path_root "scripts/" @@ -26,13 +22,32 @@ void validate_file_ast( char const* path, char const* path_gen ) String path_temp = String::make_length( GlobalAllocator, path_gen, str_len( path_gen ) ); + // Sleep(100); FileContents file = file_read_contents( GlobalAllocator, true, path ); - // FileError error = file_open_mode( & path_temp, EFileMode_WRITE, path ); - // if ( error != EFileError_NONE ) - // { - // log_failure( "gen::File::open - Could not open file: %s", path); - // return; - // } + + // Duplicate and format + { + // Sleep(100); + FileInfo scratch; + FileError error = file_open_mode( & scratch, EFileMode_WRITE, "gen/scratch.cpp" ); + if ( error != EFileError_NONE ) { + log_failure( "gen::File::open - Could not open file: %s", "gen/scratch.cpp"); + return; + } + // Sleep(100); + b32 result = file_write( & scratch, file.data, file.size ); + if ( result == false ) { + log_failure("gen::File::write - Failed to write to file: %s\n", file_name( & scratch ) ); + file_close( & scratch ); + return; + } + file_close( & scratch ); + // Sleep(100); + format_file( "gen/scratch.cpp" ); + // Sleep(100); + + file = file_read_contents( GlobalAllocator, true, "gen/scratch.cpp" ); + } u64 time_start = time_rel_ms(); CodeBody ast = parse_global_body( { file.size, (char const*)file.data } ); @@ -85,8 +100,11 @@ void validate_original_files_ast() gen::init(); log_fmt("\nvalidate_original_files_ast:\n"); - PreprocessorDefines.append( get_cached_string( txt("GEN_DEF_INLINE") )); - PreprocessorDefines.append( get_cached_string( txt("GEN_IMPL_INLINE") )); + PreprocessorDefines.append( get_cached_string( txt("GEN_FILE_SEEK_PROC("))); + PreprocessorDefines.append( get_cached_string( txt("GEN_FILE_READ_AT_PROC("))); + PreprocessorDefines.append( get_cached_string( txt("GEN_FILE_WRITE_AT_PROC("))); + PreprocessorDefines.append( get_cached_string( txt("GEN_FILE_CLOSE_PROC("))); + PreprocessorDefines.append( get_cached_string( txt("GEN_FILE_OPEN_PROC("))); // Helpers { @@ -99,7 +117,7 @@ void validate_original_files_ast() // Dependencies { #define validate( path ) validate_file_ast( path_dependencies path, "gen/original/dependencies/" path ) - validate( "header_start.hpp" ); + validate( "platform.hpp" ); validate( "macros.hpp" ); validate( "basic_types.hpp" ); validate( "debug.hpp" ); diff --git a/test/validate.singleheader.cpp b/test/validate.singleheader.cpp index 7ca3670..069fffd 100644 --- a/test/validate.singleheader.cpp +++ b/test/validate.singleheader.cpp @@ -7,17 +7,38 @@ #include "gen.scanner.hpp" using namespace gen; -#ifdef GEN_SYSTEM_WINDOWS - #include -#endif - void validate_singleheader_ast() { #define root_dir "../" gen::init(); - log_fmt("\validate_singleheader_ast:\n"); + log_fmt("\nvalidate_singleheader_ast:\n"); + + FileContents file = file_read_contents( GlobalAllocator, true, root_dir "singleheader/gen/gen.hpp" ); + + // Duplicate and format + { + // Sleep(100); + FileInfo scratch; + FileError error = file_open_mode( & scratch, EFileMode_WRITE, "gen/scratch.cpp" ); + if ( error != EFileError_NONE ) { + log_failure( "gen::File::open - Could not open file: %s", "gen/scratch.cpp"); + return; + } + // Sleep(100); + b32 result = file_write( & scratch, file.data, file.size ); + if ( result == false ) { + log_failure("gen::File::write - Failed to write to file: %s\n", file_name( & scratch ) ); + file_close( & scratch ); + return; + } + file_close( & scratch ); + // Sleep(100); + format_file( "gen/scratch.cpp" ); + // Sleep(100); + + file = file_read_contents( GlobalAllocator, true, "gen/scratch.cpp" ); + } - FileContents file = file_read_contents( GlobalAllocator, true, root_dir "singleheader/gen/gen.hpp" ); u64 time_start = time_rel_ms(); CodeBody ast = parse_global_body( { file.size, (char const*)file.data } ); log_fmt("\nAst generated. Time taken: %llu ms\n", time_rel_ms() - time_start);