@@ -21,10 +21,40 @@ class SentryFrameTests: XCTestCase {
21
21
XCTAssertEqual ( frame. imageAddress, actual [ " image_addr " ] as? String )
22
22
XCTAssertEqual ( frame. instructionAddress, actual [ " instruction_addr " ] as? String )
23
23
XCTAssertEqual ( frame. platform, actual [ " platform " ] as? String )
24
+ XCTAssertEqual ( frame. contextLine, actual [ " context_line " ] as? String )
25
+ XCTAssertEqual ( frame. preContext, actual [ " pre_context " ] as? [ String ] )
26
+ XCTAssertEqual ( frame. postContext, actual [ " post_context " ] as? [ String ] )
27
+ XCTAssertEqual ( frame. vars as? [ String : AnyHashable ] , actual [ " vars " ] as? [ String : AnyHashable ] )
24
28
XCTAssertEqual ( frame. inApp, actual [ " in_app " ] as? NSNumber )
25
29
XCTAssertEqual ( frame. stackStart, actual [ " stack_start " ] as? NSNumber )
26
30
}
27
-
31
+
32
+ func testSerialize_WithGodotFrame( ) {
33
+ // Arrange
34
+ let frame = TestData . godotFrame
35
+
36
+ // Act
37
+ let actual = frame. serialize ( )
38
+
39
+ // Assert
40
+ XCTAssertEqual ( frame. symbolAddress, actual [ " symbol_addr " ] as? String )
41
+ XCTAssertEqual ( frame. fileName, actual [ " filename " ] as? String )
42
+ XCTAssertEqual ( frame. function, actual [ " function " ] as? String )
43
+ XCTAssertEqual ( frame. module, actual [ " module " ] as? String )
44
+ XCTAssertEqual ( frame. lineNumber, actual [ " lineno " ] as? NSNumber )
45
+ XCTAssertEqual ( frame. columnNumber, actual [ " colno " ] as? NSNumber )
46
+ XCTAssertEqual ( frame. package , actual [ " package " ] as? String )
47
+ XCTAssertEqual ( frame. imageAddress, actual [ " image_addr " ] as? String )
48
+ XCTAssertEqual ( frame. instructionAddress, actual [ " instruction_addr " ] as? String )
49
+ XCTAssertEqual ( frame. platform, actual [ " platform " ] as? String )
50
+ XCTAssertEqual ( frame. contextLine, actual [ " context_line " ] as? String )
51
+ XCTAssertEqual ( frame. preContext, actual [ " pre_context " ] as? [ String ] )
52
+ XCTAssertEqual ( frame. postContext, actual [ " post_context " ] as? [ String ] )
53
+ XCTAssertEqual ( frame. vars as? [ String : AnyHashable ] , actual [ " vars " ] as? [ String : AnyHashable ] )
54
+ XCTAssertEqual ( frame. inApp, actual [ " in_app " ] as? NSNumber )
55
+ XCTAssertEqual ( frame. stackStart, actual [ " stack_start " ] as? NSNumber )
56
+ }
57
+
28
58
func testDecode_WithAllProperties( ) throws {
29
59
// Arrange
30
60
let frame = TestData . mainFrame
@@ -42,11 +72,43 @@ class SentryFrameTests: XCTestCase {
42
72
XCTAssertEqual ( frame. columnNumber, decoded. columnNumber)
43
73
XCTAssertEqual ( frame. package , decoded. package )
44
74
XCTAssertEqual ( frame. imageAddress, decoded. imageAddress)
75
+ XCTAssertEqual ( frame. instructionAddress, decoded. instructionAddress)
45
76
XCTAssertEqual ( frame. platform, decoded. platform)
77
+ XCTAssertEqual ( frame. contextLine, decoded. contextLine)
78
+ XCTAssertEqual ( frame. preContext, decoded. preContext)
79
+ XCTAssertEqual ( frame. postContext, decoded. postContext)
80
+ XCTAssertEqual ( frame. vars as? [ String : AnyHashable ] , decoded. vars as? [ String : AnyHashable ] )
46
81
XCTAssertEqual ( frame. inApp, decoded. inApp)
47
82
XCTAssertEqual ( frame. stackStart, decoded. stackStart)
48
83
}
49
-
84
+
85
+ func testDecode_WithGodotFrame( ) throws {
86
+ // Arrange
87
+ let frame = TestData . godotFrame
88
+ let data = try XCTUnwrap ( SentrySerialization . data ( withJSONObject: frame. serialize ( ) ) )
89
+
90
+ // Act
91
+ let decoded = try XCTUnwrap ( decodeFromJSONData ( jsonData: data) as Frame ? )
92
+
93
+ // Assert
94
+ XCTAssertEqual ( frame. symbolAddress, decoded. symbolAddress)
95
+ XCTAssertEqual ( frame. fileName, decoded. fileName)
96
+ XCTAssertEqual ( frame. function, decoded. function)
97
+ XCTAssertEqual ( frame. module, decoded. module)
98
+ XCTAssertEqual ( frame. lineNumber, decoded. lineNumber)
99
+ XCTAssertEqual ( frame. columnNumber, decoded. columnNumber)
100
+ XCTAssertEqual ( frame. package , decoded. package )
101
+ XCTAssertEqual ( frame. imageAddress, decoded. imageAddress)
102
+ XCTAssertEqual ( frame. instructionAddress, decoded. instructionAddress)
103
+ XCTAssertEqual ( frame. platform, decoded. platform)
104
+ XCTAssertEqual ( frame. contextLine, decoded. contextLine)
105
+ XCTAssertEqual ( frame. preContext, decoded. preContext)
106
+ XCTAssertEqual ( frame. postContext, decoded. postContext)
107
+ XCTAssertEqual ( frame. vars as? [ String : AnyHashable ] , decoded. vars as? [ String : AnyHashable ] )
108
+ XCTAssertEqual ( frame. inApp, decoded. inApp)
109
+ XCTAssertEqual ( frame. stackStart, decoded. stackStart)
110
+ }
111
+
50
112
func testDecode_WithAllPropertiesNil( ) throws {
51
113
// Arrange
52
114
let frame = Frame ( )
@@ -66,12 +128,16 @@ class SentryFrameTests: XCTestCase {
66
128
XCTAssertNil ( decoded. imageAddress)
67
129
XCTAssertNil ( decoded. instructionAddress)
68
130
XCTAssertNil ( decoded. platform)
131
+ XCTAssertNil ( decoded. contextLine)
132
+ XCTAssertNil ( decoded. preContext)
133
+ XCTAssertNil ( decoded. postContext)
134
+ XCTAssertNil ( decoded. vars)
69
135
XCTAssertNil ( decoded. inApp)
70
136
XCTAssertNil ( decoded. stackStart)
71
137
}
72
138
73
139
func testSerialize_Bools( ) {
74
140
SentryBooleanSerialization . test ( Frame ( ) , property: " inApp " , serializedProperty: " in_app " )
75
141
SentryBooleanSerialization . test ( Frame ( ) , property: " stackStart " , serializedProperty: " stack_start " )
76
- }
142
+ }
77
143
}
0 commit comments