@@ -9,7 +9,12 @@ import XCTest
99
1010class ReporterTests : XCTestCase {
1111
12- enum ExpectedJSONStrings {
12+ /// There was a change in JSONEncoder behavior between
13+ /// iOS 16 and 17 that affected precision when encoding
14+ /// floats. It's immaterial in terms of data but does
15+ /// require slightly different expected values when
16+ /// testing.
17+ enum ExpectedJSONStringsiOS16AndBelow {
1318 static let inputStandardizationFailed = #"{"data":{"app_name":"AcmeApp","app_version":"3.2.1","device_model":"iPad","error_description":"foo","input_duration":3.1400000000000001,"input_size":1500000,"maximum_resolution":"default","non_standard_input_reasons":[],"platform_name":"iPadOS","platform_version":"15.0.0","sdk_version":"0.4.1","standardization_end_time":"2023-07-07T03:43:58Z","standardization_start_time":"2023-07-07T03:38:58Z","upload_canceled":false,"upload_url":"https:\/\/www.example.com"},"session_id":"xyz789","type":"upload_input_standardization_failed","version":"1"}"#
1419
1520 static let inputStandardizationSucceeded = #"{"data":{"app_name":"AcmeApp","app_version":"3.2.1","device_model":"iPad","input_duration":3.1400000000000001,"input_size":1500000,"maximum_resolution":"default","non_standard_input_reasons":[],"platform_name":"iPadOS","platform_version":"15.0.0","sdk_version":"0.4.1","standardization_end_time":"2023-07-07T03:43:58Z","standardization_start_time":"2023-07-07T03:38:58Z","upload_url":"https:\/\/www.example.com"},"session_id":"jkl567","type":"upload_input_standardization_succeeded","version":"1"}"#
@@ -19,6 +24,16 @@ class ReporterTests: XCTestCase {
1924 static let uploadSucceeded = #"{"data":{"app_name":"AcmeApp","app_version":"3.2.1","device_model":"iPad","input_duration":3.1400000000000001,"input_size":1500000,"input_standardization_requested":true,"platform_name":"iPadOS","platform_version":"16.2.0","region_code":"US","sdk_version":"0.3.0","upload_end_time":"2023-07-07T04:12:48Z","upload_start_time":"2023-07-07T04:12:18Z","upload_url":"https:\/\/www.example.com"},"session_id":"abc123","type":"upload_succeeded","version":"1"}"#
2025 }
2126
27+ enum ExpectedJSONStringsiOS17 {
28+ static let inputStandardizationFailed = #"{"data":{"app_name":"AcmeApp","app_version":"3.2.1","device_model":"iPad","error_description":"foo","input_duration":3.14,"input_size":1500000,"maximum_resolution":"default","non_standard_input_reasons":[],"platform_name":"iPadOS","platform_version":"15.0.0","sdk_version":"0.4.1","standardization_end_time":"2023-07-07T03:43:58Z","standardization_start_time":"2023-07-07T03:38:58Z","upload_canceled":false,"upload_url":"https:\/\/www.example.com"},"session_id":"xyz789","type":"upload_input_standardization_failed","version":"1"}"#
29+
30+ static let inputStandardizationSucceeded = #"{"data":{"app_name":"AcmeApp","app_version":"3.2.1","device_model":"iPad","input_duration":3.14,"input_size":1500000,"maximum_resolution":"default","non_standard_input_reasons":[],"platform_name":"iPadOS","platform_version":"15.0.0","sdk_version":"0.4.1","standardization_end_time":"2023-07-07T03:43:58Z","standardization_start_time":"2023-07-07T03:38:58Z","upload_url":"https:\/\/www.example.com"},"session_id":"jkl567","type":"upload_input_standardization_succeeded","version":"1"}"#
31+
32+ static let uploadFailed = #"{"data":{"app_name":"AcmeApp","app_version":"3.2.1","device_model":"iPad","error_description":"foo","input_duration":3.14,"input_size":1500000,"input_standardization_requested":false,"platform_name":"iPadOS","platform_version":"16.2.0","region_code":"US","sdk_version":"0.3.0","upload_end_time":"2023-07-07T04:12:48Z","upload_start_time":"2023-07-07T04:12:18Z","upload_url":"https:\/\/www.example.com"},"session_id":"abc123","type":"upload_failed","version":"1"}"#
33+
34+ static let uploadSucceeded = #"{"data":{"app_name":"AcmeApp","app_version":"3.2.1","device_model":"iPad","input_duration":3.14,"input_size":1500000,"input_standardization_requested":true,"platform_name":"iPadOS","platform_version":"16.2.0","region_code":"US","sdk_version":"0.3.0","upload_end_time":"2023-07-07T04:12:48Z","upload_start_time":"2023-07-07T04:12:18Z","upload_url":"https:\/\/www.example.com"},"session_id":"abc123","type":"upload_succeeded","version":"1"}"#
35+ }
36+
2237 var jsonEncoder = Reporter ( ) . jsonEncoder
2338
2439 func testInputStandardizationFailedEventSerialization( ) throws {
@@ -52,10 +67,18 @@ class ReporterTests: XCTestCase {
5267 )
5368 )
5469
55- XCTAssertEqual (
56- json,
57- ExpectedJSONStrings . inputStandardizationFailed
58- )
70+ if #available( iOS 17 , * ) {
71+ XCTAssertEqual (
72+ json,
73+ ExpectedJSONStringsiOS17 . inputStandardizationFailed
74+ )
75+ } else {
76+ XCTAssertEqual (
77+ json,
78+ ExpectedJSONStringsiOS16AndBelow . inputStandardizationFailed
79+ )
80+ }
81+
5982 }
6083
6184 func testInputStandardizationSucceededEventSerialization( ) throws {
@@ -87,10 +110,17 @@ class ReporterTests: XCTestCase {
87110 )
88111 )
89112
90- XCTAssertEqual (
91- json,
92- ExpectedJSONStrings . inputStandardizationSucceeded
93- )
113+ if #available( iOS 17 , * ) {
114+ XCTAssertEqual (
115+ json,
116+ ExpectedJSONStringsiOS17 . inputStandardizationSucceeded
117+ )
118+ } else {
119+ XCTAssertEqual (
120+ json,
121+ ExpectedJSONStringsiOS16AndBelow . inputStandardizationSucceeded
122+ )
123+ }
94124 }
95125
96126 func testUploadFailedEventSerialization( ) throws {
@@ -123,10 +153,17 @@ class ReporterTests: XCTestCase {
123153 )
124154 )
125155
126- XCTAssertEqual (
127- json,
128- ExpectedJSONStrings . uploadFailed
129- )
156+ if #available( iOS 17 , * ) {
157+ XCTAssertEqual (
158+ json,
159+ ExpectedJSONStringsiOS17 . uploadFailed
160+ )
161+ } else {
162+ XCTAssertEqual (
163+ json,
164+ ExpectedJSONStringsiOS16AndBelow . uploadFailed
165+ )
166+ }
130167 }
131168
132169 func testUploadSucceededEventSerialization( ) throws {
@@ -159,10 +196,17 @@ class ReporterTests: XCTestCase {
159196 )
160197 )
161198
162- XCTAssertEqual (
163- json,
164- ExpectedJSONStrings . uploadSucceeded
165- )
199+ if #available( iOS 17 , * ) {
200+ XCTAssertEqual (
201+ json,
202+ ExpectedJSONStringsiOS17 . uploadSucceeded
203+ )
204+ } else {
205+ XCTAssertEqual (
206+ json,
207+ ExpectedJSONStringsiOS16AndBelow . uploadSucceeded
208+ )
209+ }
166210 }
167211
168212}
0 commit comments