Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit e6c1beb

Browse files
committed
add tests
1 parent 3bbc2a6 commit e6c1beb

File tree

3 files changed

+101
-0
lines changed

3 files changed

+101
-0
lines changed

ci/licenses_golden/licenses_flutter

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ FILE: ../../../flutter/flow/flow_test_utils.cc
4444
FILE: ../../../flutter/flow/flow_test_utils.h
4545
FILE: ../../../flutter/flow/frame_timings.cc
4646
FILE: ../../../flutter/flow/frame_timings.h
47+
FILE: ../../../flutter/flow/frame_timings_recorder_unittests.cc
4748
FILE: ../../../flutter/flow/gl_context_switch_unittests.cc
4849
FILE: ../../../flutter/flow/instrumentation.cc
4950
FILE: ../../../flutter/flow/instrumentation.h

flow/BUILD.gn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ if (enable_unittests) {
145145
"flow_run_all_unittests.cc",
146146
"flow_test_utils.cc",
147147
"flow_test_utils.h",
148+
"frame_timings_recorder_unittests.cc",
148149
"gl_context_switch_unittests.cc",
149150
"layers/backdrop_filter_layer_unittests.cc",
150151
"layers/checkerboard_layertree_unittests.cc",
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
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+
#include "flutter/flow/frame_timings.h"
6+
7+
#include "flutter/fml/time/time_delta.h"
8+
#include "flutter/fml/time/time_point.h"
9+
10+
#include "gtest/gtest.h"
11+
12+
namespace flutter {
13+
namespace testing {
14+
15+
TEST(FrameTimingsRecorderTest, RecordVsync) {
16+
auto recorder = std::make_unique<FrameTimingsRecorder>();
17+
const auto st = fml::TimePoint::Now();
18+
const auto en = st + fml::TimeDelta::FromMillisecondsF(16);
19+
recorder->RecordVsync(st, en);
20+
21+
ASSERT_EQ(st, recorder->GetVsyncStartTime());
22+
ASSERT_EQ(en, recorder->GetVsyncTargetTime());
23+
}
24+
25+
TEST(FrameTimingsRecorderTest, RecordBuildTimes) {
26+
auto recorder = std::make_unique<FrameTimingsRecorder>();
27+
28+
const auto st = fml::TimePoint::Now();
29+
const auto en = st + fml::TimeDelta::FromMillisecondsF(16);
30+
recorder->RecordVsync(st, en);
31+
32+
const auto build_start = fml::TimePoint::Now();
33+
const auto build_end = build_start + fml::TimeDelta::FromMillisecondsF(16);
34+
recorder->RecordBuildStart(build_start);
35+
recorder->RecordBuildEnd(build_end);
36+
37+
ASSERT_EQ(build_start, recorder->GetBuildStartTime());
38+
ASSERT_EQ(build_end, recorder->GetBuildEndTime());
39+
}
40+
41+
TEST(FrameTimingsRecorderTest, RecordRasterTimes) {
42+
auto recorder = std::make_unique<FrameTimingsRecorder>();
43+
44+
const auto st = fml::TimePoint::Now();
45+
const auto en = st + fml::TimeDelta::FromMillisecondsF(16);
46+
recorder->RecordVsync(st, en);
47+
48+
const auto build_start = fml::TimePoint::Now();
49+
const auto build_end = build_start + fml::TimeDelta::FromMillisecondsF(16);
50+
recorder->RecordBuildStart(build_start);
51+
recorder->RecordBuildEnd(build_end);
52+
53+
const auto raster_start = fml::TimePoint::Now();
54+
const auto raster_end = raster_start + fml::TimeDelta::FromMillisecondsF(16);
55+
recorder->RecordRasterStart(raster_start);
56+
recorder->RecordRasterEnd(raster_end);
57+
58+
ASSERT_EQ(raster_start, recorder->GetRasterStartTime());
59+
ASSERT_EQ(raster_end, recorder->GetRasterEndTime());
60+
}
61+
62+
#ifndef OS_FUCHSIA
63+
64+
// Windows doesn't allow testing with killed by signal.
65+
#ifdef OS_WIN
66+
TEST(FrameTimingsRecorderTest, DISABLED_ThrowWhenRecordBuildBeforeVsync) {
67+
#else
68+
TEST(FrameTimingsRecorderTest, ThrowWhenRecordBuildBeforeVsync) {
69+
#endif
70+
auto recorder = std::make_unique<FrameTimingsRecorder>();
71+
72+
const auto build_start = fml::TimePoint::Now();
73+
EXPECT_EXIT(recorder->RecordBuildStart(build_start),
74+
::testing::KilledBySignal(SIGABRT),
75+
"Check failed: state_ == State::kVsync.");
76+
}
77+
78+
// Windows doesn't allow testing with killed by signal.
79+
#ifdef OS_WIN
80+
TEST(FrameTimingsRecorderTest, DISABLED_ThrowWhenRecordRasterBeforeBuildEnd) {
81+
#else
82+
TEST(FrameTimingsRecorderTest, ThrowWhenRecordRasterBeforeBuildEnd) {
83+
#endif
84+
auto recorder = std::make_unique<FrameTimingsRecorder>();
85+
86+
const auto st = fml::TimePoint::Now();
87+
const auto en = st + fml::TimeDelta::FromMillisecondsF(16);
88+
recorder->RecordVsync(st, en);
89+
90+
const auto raster_start = fml::TimePoint::Now();
91+
EXPECT_EXIT(recorder->RecordRasterStart(raster_start),
92+
::testing::KilledBySignal(SIGABRT),
93+
"Check failed: state_ == State::kBuildEnd.");
94+
}
95+
96+
#endif
97+
98+
} // namespace testing
99+
} // namespace flutter

0 commit comments

Comments
 (0)