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
1.7 KiB72 linesraw
1// unit-test-rtti.cpp
2
3#include "../../source/core/slang-rtti-info.h"
4#include "unit-test/slang-unit-test.h"
5
6using namespace Slang;
7
8namespace
9{ // anonymous
10
11struct SomeStruct
12{
13    int a = 0;
14    float b = 2.0f;
15    String s;
16    List<String> list;
17
18    static const StructRttiInfo g_rttiInfo;
19};
20
21} // namespace
22
23static const StructRttiInfo _makeSomeStructRtti()
24{
25    SomeStruct obj;
26    StructRttiBuilder builder(&obj, "SomeStruct", nullptr);
27
28    builder.addField("a", &obj.a);
29    builder.addField("b", &obj.b);
30    builder.addField("s", &obj.s);
31    builder.addField("list", &obj.list);
32
33    return builder.make();
34}
35/* static */ const StructRttiInfo SomeStruct::g_rttiInfo = _makeSomeStructRtti();
36
37SLANG_UNIT_TEST(Rtti)
38{
39    using namespace Slang;
40
41    const RttiInfo* types[] = {
42        GetRttiInfo<int32_t>::get(),
43        GetRttiInfo<int32_t[10]>::get(),
44        GetRttiInfo<String>::get(),
45        GetRttiInfo<List<String>>::get(),
46        GetRttiInfo<List<List<String>>>::get(),
47        GetRttiInfo<int32_t[2][3]>::get(),
48        GetRttiInfo<SomeStruct>::get(),
49        GetRttiInfo<SomeStruct*>::get(),
50        GetRttiInfo<const float* const>::get(),
51    };
52
53    StringBuilder buf;
54
55    for (auto type : types)
56    {
57        RttiInfo::append(type, buf);
58        buf << "\n";
59    }
60
61    const char expected[] = "int32_t\n"
62                            "int32_t[10]\n"
63                            "String\n"
64                            "List<String>\n"
65                            "List<List<String>>\n"
66                            "int32_t[2][3]\n"
67                            "SomeStruct\n"
68                            "SomeStruct*\n"
69                            "float*\n";
70
71    SLANG_CHECK(buf == expected)
72}