yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
7b570feed
master
1// unit-test-command-line-args.cpp 2 3#include "../../source/compiler-core/slang-command-line-args.h" 4#include "unit-test/slang-unit-test.h" 5 6using namespace Slang ; 7 8SLANG_UNIT_TEST (commandLineArgs ) 9{ 10RefPtr < CommandLineContext > context = new CommandLineContext ; 11 12 13// Simple scoped version 14 { 15CommandLineArgs args (context ); 16DownstreamArgs downstreamArgs (context ); 17 18DiagnosticSink sink (context -> getSourceManager (),nullptr ); 19 20const char * inArgs []= { 21"-Xa..." , 22"-blah" , 23"10" , 24"-X." , 25 }; 26 27args .setArgs (inArgs ,SLANG_COUNT_OF (inArgs )); 28 29SLANG_CHECK (SLANG_SUCCEEDED ( 30downstreamArgs .stripDownstreamArgs (args ,DownstreamArgs ::Flag ::AllowNewNames ,& sink ))); 31 32const char * aArgs []= {"-blah" ,"10" }; 33 34SLANG_CHECK (downstreamArgs .getArgsByName ("a" ).hasArgs (aArgs ,SLANG_COUNT_OF (aArgs ))); 35SLANG_CHECK (args .getArgCount ()== 0 && sink .getErrorCount ()== 0 ); 36 } 37 38// Leaving off terminating -X. is ok 39 { 40CommandLineArgs args (context ); 41DownstreamArgs downstreamArgs (context ); 42 43DiagnosticSink sink (context -> getSourceManager (),nullptr ); 44 45const char * inArgs []= { 46"-Xa..." , 47"-blah" , 48"10" , 49 }; 50 51args .setArgs (inArgs ,SLANG_COUNT_OF (inArgs )); 52 53SLANG_CHECK (SLANG_SUCCEEDED ( 54downstreamArgs .stripDownstreamArgs (args ,DownstreamArgs ::Flag ::AllowNewNames ,& sink ))); 55 56const char * aArgs []= {"-blah" ,"10" }; 57 58SLANG_CHECK (downstreamArgs .getArgsByName ("a" ).hasArgs (aArgs ,SLANG_COUNT_OF (aArgs ))); 59SLANG_CHECK (args .getArgCount ()== 0 && sink .getErrorCount ()== 0 ); 60 } 61 62// Having a nesting 63 64 { 65CommandLineArgs args (context ); 66DownstreamArgs downstreamArgs (context ); 67 68DiagnosticSink sink (context -> getSourceManager (),nullptr ); 69 70const char * inArgs []= { 71"-something" , 72"andAnother" , 73"-Xa..." , 74"-blah" , 75"-Xb..." , 76"-hey" , 77"-X." , 78"10" , 79"-X." , 80"-Xc" , 81"somethingForC" , 82 }; 83 84args .setArgs (inArgs ,SLANG_COUNT_OF (inArgs )); 85 86SLANG_CHECK (SLANG_SUCCEEDED ( 87downstreamArgs .stripDownstreamArgs (args ,DownstreamArgs ::Flag ::AllowNewNames ,& sink ))); 88 89const char * aArgs []= {"-blah" ,"-Xb..." ,"-hey" ,"-X." ,"10" }; 90 91const char * cArgs []= { 92"somethingForC" , 93 }; 94 95const char * mainArgs []= { 96"-something" , 97"andAnother" , 98 }; 99 100SLANG_CHECK (downstreamArgs .getArgsByName ("a" ).hasArgs (aArgs ,SLANG_COUNT_OF (aArgs ))); 101SLANG_CHECK (downstreamArgs .getArgsByName ("c" ).hasArgs (cArgs ,SLANG_COUNT_OF (cArgs ))); 102 103SLANG_CHECK (args .hasArgs (mainArgs ,SLANG_COUNT_OF (mainArgs ))&& sink .getErrorCount ()== 0 ); 104 } 105}