diff options
| author | Yong He <yonghe@outlook.com> | 2021-09-24 11:33:44 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-24 11:33:44 -0700 |
| commit | bec8e6aec85b6e3f875c58bdd59eb15613978358 (patch) | |
| tree | 0791fb2ce1be786c17e5a6ee489ed3065fc07332 /tools/slang-unit-test/unit-test-command-line-args.cpp | |
| parent | f2a3c933bc11a498c622fa18694c84beca8ca031 (diff) | |
Move existing unit tests to a standalone dll. (#1945)
Diffstat (limited to 'tools/slang-unit-test/unit-test-command-line-args.cpp')
| -rw-r--r-- | tools/slang-unit-test/unit-test-command-line-args.cpp | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/tools/slang-unit-test/unit-test-command-line-args.cpp b/tools/slang-unit-test/unit-test-command-line-args.cpp new file mode 100644 index 000000000..a4dc8a16c --- /dev/null +++ b/tools/slang-unit-test/unit-test-command-line-args.cpp @@ -0,0 +1,125 @@ +// unit-test-command-line-args.cpp + +#include "../../source/compiler-core/slang-command-line-args.h" + +#include "tools/unit-test/slang-unit-test.h" + +using namespace Slang; + +SLANG_UNIT_TEST(commandLineArgs) +{ + RefPtr<CommandLineContext> context = new CommandLineContext; + + + // Simple scoped version + { + CommandLineArgs args(context); + DownstreamArgs downstreamArgs(context); + + DiagnosticSink sink(context->getSourceManager(), nullptr); + + const char* inArgs[] = + { + "-Xa...", + "-blah", + "10", + "-X.", + }; + + args.setArgs(inArgs, SLANG_COUNT_OF(inArgs)); + + SLANG_CHECK(SLANG_SUCCEEDED(downstreamArgs.stripDownstreamArgs(args, DownstreamArgs::Flag::AllowNewNames, &sink))); + + const char* aArgs[] = + { + "-blah", + "10" + }; + + SLANG_CHECK(downstreamArgs.getArgsByName("a").hasArgs(aArgs, SLANG_COUNT_OF(aArgs))); + SLANG_CHECK(args.getArgCount() == 0 && sink.getErrorCount() == 0); + } + + // Leaving off terminating -X. is ok + { + CommandLineArgs args(context); + DownstreamArgs downstreamArgs(context); + + DiagnosticSink sink(context->getSourceManager(), nullptr); + + const char* inArgs[] = + { + "-Xa...", + "-blah", + "10", + }; + + args.setArgs(inArgs, SLANG_COUNT_OF(inArgs)); + + SLANG_CHECK(SLANG_SUCCEEDED(downstreamArgs.stripDownstreamArgs(args, DownstreamArgs::Flag::AllowNewNames, &sink))); + + const char* aArgs[] = + { + "-blah", + "10" + }; + + SLANG_CHECK(downstreamArgs.getArgsByName("a").hasArgs(aArgs, SLANG_COUNT_OF(aArgs))); + SLANG_CHECK(args.getArgCount() == 0 && sink.getErrorCount() == 0); + } + + // Having a nesting + + { + CommandLineArgs args(context); + DownstreamArgs downstreamArgs(context); + + DiagnosticSink sink(context->getSourceManager(), nullptr); + + const char* inArgs[] = + { + "-something", + "andAnother", + "-Xa...", + "-blah", + "-Xb...", + "-hey", + "-X.", + "10", + "-X.", + "-Xc", + "somethingForC", + }; + + args.setArgs(inArgs, SLANG_COUNT_OF(inArgs)); + + SLANG_CHECK(SLANG_SUCCEEDED(downstreamArgs.stripDownstreamArgs(args, DownstreamArgs::Flag::AllowNewNames, &sink))); + + const char* aArgs[] = + { + "-blah", + "-Xb...", + "-hey", + "-X.", + "10" + }; + + const char* cArgs[] = + { + "somethingForC", + }; + + const char* mainArgs[] = + { + "-something", + "andAnother", + }; + + SLANG_CHECK(downstreamArgs.getArgsByName("a").hasArgs(aArgs, SLANG_COUNT_OF(aArgs))); + SLANG_CHECK(downstreamArgs.getArgsByName("c").hasArgs(cArgs, SLANG_COUNT_OF(cArgs))); + + SLANG_CHECK(args.hasArgs(mainArgs, SLANG_COUNT_OF(mainArgs)) && sink.getErrorCount() == 0); + } + +} + |
