yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Ellie HermaszewskaCorrect include dir for libslang (#5539)7b570feed

master
2.9 KiB105 linesraw
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{
10    RefPtr<CommandLineContext> context = new CommandLineContext;
11
12
13    // Simple scoped version
14    {
15        CommandLineArgs args(context);
16        DownstreamArgs downstreamArgs(context);
17
18        DiagnosticSink sink(context->getSourceManager(), nullptr);
19
20        const char* inArgs[] = {
21            "-Xa...",
22            "-blah",
23            "10",
24            "-X.",
25        };
26
27        args.setArgs(inArgs, SLANG_COUNT_OF(inArgs));
28
29        SLANG_CHECK(SLANG_SUCCEEDED(
30            downstreamArgs.stripDownstreamArgs(args, DownstreamArgs::Flag::AllowNewNames, &sink)));
31
32        const char* aArgs[] = {"-blah", "10"};
33
34        SLANG_CHECK(downstreamArgs.getArgsByName("a").hasArgs(aArgs, SLANG_COUNT_OF(aArgs)));
35        SLANG_CHECK(args.getArgCount() == 0 && sink.getErrorCount() == 0);
36    }
37
38    // Leaving off terminating -X. is ok
39    {
40        CommandLineArgs args(context);
41        DownstreamArgs downstreamArgs(context);
42
43        DiagnosticSink sink(context->getSourceManager(), nullptr);
44
45        const char* inArgs[] = {
46            "-Xa...",
47            "-blah",
48            "10",
49        };
50
51        args.setArgs(inArgs, SLANG_COUNT_OF(inArgs));
52
53        SLANG_CHECK(SLANG_SUCCEEDED(
54            downstreamArgs.stripDownstreamArgs(args, DownstreamArgs::Flag::AllowNewNames, &sink)));
55
56        const char* aArgs[] = {"-blah", "10"};
57
58        SLANG_CHECK(downstreamArgs.getArgsByName("a").hasArgs(aArgs, SLANG_COUNT_OF(aArgs)));
59        SLANG_CHECK(args.getArgCount() == 0 && sink.getErrorCount() == 0);
60    }
61
62    // Having a nesting
63
64    {
65        CommandLineArgs args(context);
66        DownstreamArgs downstreamArgs(context);
67
68        DiagnosticSink sink(context->getSourceManager(), nullptr);
69
70        const 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
84        args.setArgs(inArgs, SLANG_COUNT_OF(inArgs));
85
86        SLANG_CHECK(SLANG_SUCCEEDED(
87            downstreamArgs.stripDownstreamArgs(args, DownstreamArgs::Flag::AllowNewNames, &sink)));
88
89        const char* aArgs[] = {"-blah", "-Xb...", "-hey", "-X.", "10"};
90
91        const char* cArgs[] = {
92            "somethingForC",
93        };
94
95        const char* mainArgs[] = {
96            "-something",
97            "andAnother",
98        };
99
100        SLANG_CHECK(downstreamArgs.getArgsByName("a").hasArgs(aArgs, SLANG_COUNT_OF(aArgs)));
101        SLANG_CHECK(downstreamArgs.getArgsByName("c").hasArgs(cArgs, SLANG_COUNT_OF(cArgs)));
102
103        SLANG_CHECK(args.hasArgs(mainArgs, SLANG_COUNT_OF(mainArgs)) && sink.getErrorCount() == 0);
104    }
105}