55import Testing
66
77struct MetadataTests {
8+ class T1 {
9+ var a = 0
10+ var b : Double = 0
11+ }
12+
13+ struct T2 {
14+ var a : Int
15+ var b : Double
16+ }
17+
18+ enum T3 {
19+ case a, b
20+ }
21+
22+ protocol P {
23+ var a : Int { get }
24+ var b : Double { get }
25+ }
26+
827 @Test ( . enabled( if: swiftToolchainSupported) )
9- func kindCases( ) throws {
10- class T1 { }
11- struct T2 { }
12- enum T3 { }
13- protocol P { }
14-
28+ func kind( ) throws {
1529 #expect( Metadata ( T1 . self) . kind == . class)
1630 #expect( Metadata ( T2 . self) . kind == . struct)
1731 #expect( Metadata ( T3 . self) . kind == . enum)
@@ -34,29 +48,25 @@ struct MetadataTests {
3448 #expect( Metadata ( type ( of: Int . self) ) . kind == . metatype)
3549 }
3650
37- @Test ( . disabled( if: !compatibilityTestEnabled, " Metadata is not implemented " ) )
38- func descriptor( ) throws {
39- let n1 = try #require( Metadata ( Int . self) . nominalDescriptor)
40- let n2 = try #require( Metadata ( String . self) . nominalDescriptor)
41- let n3 = try #require( Metadata ( Int . self) . nominalDescriptor)
42-
43- #expect( n1 != n2)
44- #expect( n1 == n3)
45- }
46-
47- class T1 {
48- var a = 0
49- var b : Double = 0
50- }
51+ #if OPENGRAPH_RELEASE_2024
52+ @Test ( . enabled( if: swiftToolchainSupported) )
53+ func descriptor( ) {
54+ let t1 = Metadata ( T1 . self) . descriptor
55+ let t2 = Metadata ( T2 . self) . descriptor
56+ let t3 = Metadata ( T3 . self) . descriptor
57+ let p = Metadata ( P . self) . descriptor
58+ let optionalP = Metadata ( P ? . self) . descriptor
5159
52- struct T2 {
53- var a : Int
54- var b : Double
55- }
60+ #expect( t1 != nil )
61+ #expect( t2 != nil )
62+ #expect( t3 != nil )
5663
57- enum T3 {
58- case a, b
64+ #expect( p == nil )
65+ #expect( optionalP != nil )
66+
67+ #expect( t1 == Metadata ( T1 . self) . descriptor)
5968 }
69+ #endif
6070
6171 @Test ( . disabled( if: !compatibilityTestEnabled, " Metadata is not implemented " ) )
6272 func description( ) {
@@ -65,6 +75,36 @@ struct MetadataTests {
6575 #expect( Metadata ( T3 . self) . description == " MetadataTests.T3 " )
6676 }
6777
78+ @Test ( . enabled( if: swiftToolchainSupported) )
79+ func nominalDescriptor( ) {
80+ let t1 = Metadata ( T1 . self) . nominalDescriptor
81+ let t2 = Metadata ( T2 . self) . nominalDescriptor
82+ let t3 = Metadata ( T3 . self) . nominalDescriptor
83+ let p = Metadata ( P . self) . nominalDescriptor
84+ let optionalP = Metadata ( P ? . self) . nominalDescriptor
85+
86+ #expect( t1 == nil )
87+ #expect( t2 != nil )
88+ #expect( t3 != nil )
89+ #expect( p == nil )
90+ #expect( optionalP != nil )
91+ }
92+
93+ @Test ( . enabled( if: swiftToolchainSupported) )
94+ func nominalDescriptorName( ) throws {
95+ let t1 = Metadata ( T1 . self) . nominalDescriptorName
96+ let t2 = Metadata ( T2 . self) . nominalDescriptorName
97+ let t3 = Metadata ( T3 . self) . nominalDescriptorName
98+ let p = Metadata ( P . self) . nominalDescriptorName
99+ let optionalP = Metadata ( P ? . self) . nominalDescriptorName
100+
101+ #expect( t1 == nil )
102+ try #expect( String ( cString: #require( t2) ) == " T2 " )
103+ try #expect( String ( cString: #require( t3) ) == " T3 " )
104+ #expect( p == nil )
105+ try #expect( String ( cString: #require( optionalP) ) == " Optional " )
106+ }
107+
68108 @Test ( . disabled( if: !compatibilityTestEnabled, " Metadata is not implemented " ) )
69109 func forEachField( ) throws {
70110 for options in [ OGTypeApplyOptions . _1] {
0 commit comments