5 #include <initializer_list>
8 #include "flutter/fml/command_line.h"
9 #include "flutter/fml/file.h"
10 #include "flutter/fml/string_conversion.h"
11 #include "flutter/testing/testing.h"
21 std::initializer_list<const char*> additional_options = {}) {
22 std::vector<const char*> options = {
"--opengl-desktop",
"--input=input.vert",
24 "--spirv=output.spirv"};
25 options.insert(options.end(), additional_options.begin(),
26 additional_options.end());
28 auto cl = fml::CommandLineFromIteratorsWithArgv0(
"impellerc", options.begin(),
33 TEST(SwitchesTest, DoesntMangleUnicodeIncludes) {
34 const char* directory_name =
"test_shader_include_�";
35 fml::CreateDirectory(flutter::testing::OpenFixturesDirectory(),
36 {directory_name}, fml::FilePermission::kRead);
39 std::string(flutter::testing::GetFixturesPath()) +
"/" + directory_name;
40 auto include_option =
"--include=" + include_path;
44 ASSERT_TRUE(switches.
AreValid(std::cout));
50 TEST(SwitchesTest, SourceLanguageDefaultsToGLSL) {
52 ASSERT_TRUE(switches.
AreValid(std::cout));
56 TEST(SwitchesTest, SourceLanguageCanBeSetToHLSL) {
58 ASSERT_TRUE(switches.
AreValid(std::cout));
62 TEST(SwitchesTest, DefaultEntryPointIsMain) {
64 ASSERT_TRUE(switches.
AreValid(std::cout));
68 TEST(SwitchesTest, EntryPointCanBeSetForHLSL) {
70 ASSERT_TRUE(switches.
AreValid(std::cout));
71 ASSERT_EQ(switches.
entry_point,
"CustomEntryPoint");
76 "mandelbrot_unrolled");
78 "mandelbrotunrolled");
85 TEST(SwitchesTest, ShaderBundleModeValid) {
88 std::vector<const char*> options = {
89 "--shader-bundle={}",
"--sl=test.shaderbundle",
"--runtime-stage-metal"};
91 auto cl = fml::CommandLineFromIteratorsWithArgv0(
"impellerc", options.begin(),
94 ASSERT_TRUE(switches.
AreValid(std::cout));
98 TEST(SwitchesTest, EntryPointPrefixIsApplied) {
101 ASSERT_TRUE(switches.
AreValid(std::cout));
106 EXPECT_EQ(options.entry_point_name,
"my_prefix_test_fragment_main");
109 TEST(SwitchesTest, CommandLinePathUtf8) {
110 std::u16string filename = u
"test\u1234";
111 std::string input_flag =
"--input=" + fml::Utf16ToUtf8(filename);
113 ASSERT_TRUE(switches.
AreValid(std::cout));
std::string entry_point_prefix
SourceLanguage source_language
std::string shader_bundle
bool AreValid(std::ostream &explain) const
SourceOptions CreateSourceOptions() const
std::vector< IncludeDir > include_directories
std::filesystem::path source_file_name
Switches MakeSwitchesDesktopGL(std::initializer_list< const char * > additional_options={})
TEST(CompilerTest, Defines)
std::string ConvertToEntrypointName(std::string_view string)
Ensure that the entrypoint name is a valid identifier in the target language.