Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
switches_unittests.cc
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#include <initializer_list>
6
7#include "flutter/common/settings.h"
8#include "flutter/fml/command_line.h"
9#include "flutter/shell/common/switches.h"
10
11#include "gtest/gtest.h"
12
13// TODO(zanderso): https://github.com/flutter/flutter/issues/127701
14// NOLINTBEGIN(bugprone-unchecked-optional-access)
15
16namespace flutter {
17namespace testing {
18
19TEST(SwitchesTest, SkiaTraceAllowlistFlag) {
20 fml::CommandLine command_line =
22 Settings settings = SettingsFromCommandLine(command_line);
23#if !FLUTTER_RELEASE
24 EXPECT_TRUE(settings.trace_skia);
25 EXPECT_TRUE(settings.trace_skia_allowlist.has_value());
26 EXPECT_EQ(settings.trace_skia_allowlist->size(), 1ul);
27#else
28 EXPECT_FALSE(settings.trace_skia);
29#endif
30
31 command_line =
32 fml::CommandLineFromInitializerList({"command", "--trace-skia"});
33 settings = SettingsFromCommandLine(command_line);
34#if !FLUTTER_RELEASE
35 EXPECT_TRUE(settings.trace_skia);
36 EXPECT_FALSE(settings.trace_skia_allowlist.has_value());
37#else
38 EXPECT_FALSE(settings.trace_skia);
39#endif
40
42 {"command", "--trace-skia-allowlist=aaa,bbb,ccc"});
43 settings = SettingsFromCommandLine(command_line);
44#if !FLUTTER_RELEASE
45 EXPECT_TRUE(settings.trace_skia);
46 EXPECT_TRUE(settings.trace_skia_allowlist.has_value());
47 EXPECT_EQ(settings.trace_skia_allowlist->size(), 3ul);
48 EXPECT_EQ(settings.trace_skia_allowlist->back(), "ccc");
49#else
50 EXPECT_FALSE(settings.trace_skia);
51#endif
52}
53
54TEST(SwitchesTest, TraceToFile) {
56 {"command", "--trace-to-file=trace.binpb"});
57 EXPECT_TRUE(command_line.HasOption("trace-to-file"));
58 Settings settings = SettingsFromCommandLine(command_line);
59 EXPECT_EQ(settings.trace_to_file, "trace.binpb");
60}
61
62TEST(SwitchesTest, RouteParsedFlag) {
63 fml::CommandLine command_line =
64 fml::CommandLineFromInitializerList({"command", "--route=/animation"});
65 Settings settings = SettingsFromCommandLine(command_line);
66 EXPECT_EQ(settings.route, "/animation");
67 command_line = fml::CommandLineFromInitializerList({"command", "--route"});
68 settings = SettingsFromCommandLine(command_line);
69 EXPECT_TRUE(settings.route.empty());
70}
71
72TEST(SwitchesTest, MsaaSamples) {
73 for (int samples : {0, 1, 2, 4, 8, 16}) {
75 {"command", ("--msaa-samples=" + std::to_string(samples)).c_str()});
76 Settings settings = SettingsFromCommandLine(command_line);
77 EXPECT_EQ(settings.msaa_samples, samples);
78 }
79 fml::CommandLine command_line =
80 fml::CommandLineFromInitializerList({"command", "--msaa-samples=3"});
81 Settings settings = SettingsFromCommandLine(command_line);
82 EXPECT_EQ(settings.msaa_samples, 0);
83
84 command_line =
85 fml::CommandLineFromInitializerList({"command", "--msaa-samples=foobar"});
86 settings = SettingsFromCommandLine(command_line);
87 EXPECT_EQ(settings.msaa_samples, 0);
88}
89
90TEST(SwitchesTest, EnableEmbedderAPI) {
91 {
92 // enable
94 {"command", "--enable-embedder-api"});
95 Settings settings = SettingsFromCommandLine(command_line);
96 EXPECT_EQ(settings.enable_embedder_api, true);
97 }
98 {
99 // default
100 fml::CommandLine command_line =
102 Settings settings = SettingsFromCommandLine(command_line);
103 EXPECT_EQ(settings.enable_embedder_api, false);
104 }
105}
106
107TEST(SwitchesTest, NoEnableImpeller) {
108 {
109 // enable
110 fml::CommandLine command_line =
111 fml::CommandLineFromInitializerList({"command", "--enable-impeller"});
112 EXPECT_TRUE(command_line.HasOption("enable-impeller"));
113 Settings settings = SettingsFromCommandLine(command_line);
114 EXPECT_EQ(settings.enable_impeller, true);
115 }
116 {
117 // disable
119 {"command", "--enable-impeller=false"});
120 EXPECT_TRUE(command_line.HasOption("enable-impeller"));
121 Settings settings = SettingsFromCommandLine(command_line);
122 EXPECT_EQ(settings.enable_impeller, false);
123 }
124}
125
126#if !FLUTTER_RELEASE
127TEST(SwitchesTest, EnableAsserts) {
129 {"command", "--dart-flags=--enable-asserts"});
130 Settings settings = SettingsFromCommandLine(command_line);
131 ASSERT_EQ(settings.dart_flags.size(), 1ul);
132 EXPECT_EQ(settings.dart_flags[0], "--enable-asserts");
133}
134#endif
135
136} // namespace testing
137} // namespace flutter
138
139// NOLINTEND(bugprone-unchecked-optional-access)
#define TEST(S, s, D, expected)
bool HasOption(std::string_view name, size_t *index=nullptr) const
Settings SettingsFromCommandLine(const fml::CommandLine &command_line)
Definition switches.cc:228
CommandLine CommandLineFromInitializerList(std::initializer_list< StringType > argv)
#define EXPECT_TRUE(handle)
Definition unit_test.h:685