yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
7b570feed
master
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{ 13int a = 0 ; 14float b = 2.0f ; 15String s ; 16List < String > list ; 17 18static const StructRttiInfo g_rttiInfo ; 19}; 20 21}// namespace 22 23static const StructRttiInfo _makeSomeStructRtti () 24{ 25SomeStruct obj ; 26StructRttiBuilder builder (& obj ,"SomeStruct" ,nullptr ); 27 28builder .addField ("a" ,& obj .a ); 29builder .addField ("b" ,& obj .b ); 30builder .addField ("s" ,& obj .s ); 31builder .addField ("list" ,& obj .list ); 32 33return builder .make (); 34} 35/* static */ const StructRttiInfo SomeStruct ::g_rttiInfo = _makeSomeStructRtti (); 36 37SLANG_UNIT_TEST (Rtti ) 38{ 39using namespace Slang ; 40 41const RttiInfo * types []= { 42GetRttiInfo < int32_t > ::get (), 43GetRttiInfo < int32_t [10 ]> ::get (), 44GetRttiInfo < String > ::get (), 45GetRttiInfo < List < String >> ::get (), 46GetRttiInfo < List < List < String >>> ::get (), 47GetRttiInfo < int32_t [2 ][3 ]> ::get (), 48GetRttiInfo < SomeStruct > ::get (), 49GetRttiInfo < SomeStruct *> ::get (), 50GetRttiInfo < const float * const > ::get (), 51 }; 52 53StringBuilder buf ; 54 55for (auto type :types ) 56 { 57RttiInfo ::append (type ,buf ); 58buf <<"\n" ; 59 } 60 61const 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 71SLANG_CHECK (buf == expected ) 72}