Flutter iOS Embedder
VsyncWaiterIOSTest.mm
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #import <XCTest/XCTest.h>
6 
8 
9 @interface VsyncWaiterIOSTest : XCTestCase
10 @end
11 
12 @implementation VsyncWaiterIOSTest
13 
14 - (void)testSnapDurationWithValidDuration {
15  // 60Hz: 1/60 = 0.016666...
16  CFTimeInterval duration = 0.016667;
17  CFTimeInterval snapped = flutter::VsyncWaiterIOS::SnapDuration(duration, 60.0);
18  XCTAssertEqualWithAccuracy(snapped, 1.0 / 60.0, 0.0001);
19 
20  // 120Hz: 1/120 = 0.008333...
21  duration = 0.008334;
22  snapped = flutter::VsyncWaiterIOS::SnapDuration(duration, 120.0);
23  XCTAssertEqualWithAccuracy(snapped, 1.0 / 120.0, 0.0001);
24 }
25 
26 - (void)testSnapDurationWithInvalidDuration {
27  // Zero duration should fallback to max_refresh_rate.
28  CFTimeInterval snapped = flutter::VsyncWaiterIOS::SnapDuration(0.0, 120.0);
29  XCTAssertEqualWithAccuracy(snapped, 1.0 / 120.0, 0.0001);
30 
31  // Negative duration should fallback to max_refresh_rate.
32  snapped = flutter::VsyncWaiterIOS::SnapDuration(-0.1, 80.0);
33  XCTAssertEqualWithAccuracy(snapped, 1.0 / 80.0, 0.0001);
34 }
35 
36 - (void)testSnapDurationWithZeroMaxRefreshRateFallback {
37  // If duration is invalid AND max_refresh_rate is 0, fallback to 60Hz.
38  CFTimeInterval snapped = flutter::VsyncWaiterIOS::SnapDuration(0.0, 0.0);
39  XCTAssertEqualWithAccuracy(snapped, 1.0 / 60.0, 0.0001);
40 
41  snapped = flutter::VsyncWaiterIOS::SnapDuration(-1.0, -10.0);
42  XCTAssertEqualWithAccuracy(snapped, 1.0 / 60.0, 0.0001);
43 }
44 
45 @end
static CFTimeInterval SnapDuration(CFTimeInterval duration, double max_refresh_rate)