// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "shell/platform/android/flutter_main.h"
#include "third_party/googletest/googlemock/include/gmock/gmock-nice-strict.h"

namespace flutter {
namespace testing {

TEST(AndroidPlatformView, SelectsVulkanBasedOnApiLevel) {
  Settings settings;
  settings.enable_software_rendering = false;
  settings.enable_impeller = true;

  int api_level = android_get_device_api_level();
  EXPECT_GT(api_level, 0);
  if (api_level >= 29) {
    EXPECT_EQ(FlutterMain::SelectedRenderingAPI(settings),
              AndroidRenderingAPI::kImpellerVulkan);
  } else {
    EXPECT_EQ(FlutterMain::SelectedRenderingAPI(settings),
              AndroidRenderingAPI::kSkiaOpenGLES);
  }
}

TEST(AndroidPlatformView, SoftwareRenderingNotSupportedWithImpeller) {
  Settings settings;
  settings.enable_software_rendering = true;
  settings.enable_impeller = true;

  ASSERT_DEATH(FlutterMain::SelectedRenderingAPI(settings), "");
}

}  // namespace testing
}  // namespace flutter
