5
5
import Testing
6
6
7
7
struct 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
+
8
27
@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 {
15
29
#expect( Metadata ( T1 . self) . kind == . class)
16
30
#expect( Metadata ( T2 . self) . kind == . struct)
17
31
#expect( Metadata ( T3 . self) . kind == . enum)
@@ -34,29 +48,25 @@ struct MetadataTests {
34
48
#expect( Metadata ( type ( of: Int . self) ) . kind == . metatype)
35
49
}
36
50
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
51
59
52
- struct T2 {
53
- var a : Int
54
- var b : Double
55
- }
60
+ #expect( t1 != nil )
61
+ #expect( t2 != nil )
62
+ #expect( t3 != nil )
56
63
57
- enum T3 {
58
- case a, b
64
+ #expect( p == nil )
65
+ #expect( optionalP != nil )
66
+
67
+ #expect( t1 == Metadata ( T1 . self) . descriptor)
59
68
}
69
+ #endif
60
70
61
71
@Test ( . disabled( if: !compatibilityTestEnabled, " Metadata is not implemented " ) )
62
72
func description( ) {
@@ -65,6 +75,36 @@ struct MetadataTests {
65
75
#expect( Metadata ( T3 . self) . description == " MetadataTests.T3 " )
66
76
}
67
77
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
+
68
108
@Test ( . disabled( if: !compatibilityTestEnabled, " Metadata is not implemented " ) )
69
109
func forEachField( ) throws {
70
110
for options in [ OGTypeApplyOptions . _1] {
0 commit comments