// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/resources_util.h"

#include <stddef.h>

#include <array>

#include "build/build_config.h"
#include "chrome/grit/webui_theme_resources.h"
#include "components/grit/components_scaled_resources.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/resources/grit/ui_resources.h"

#if BUILDFLAG(IS_CHROMEOS)
#include "ui/chromeos/resources/grit/ui_chromeos_resources.h"
#endif

TEST(ResourcesUtil, SpotCheckIds) {
  struct Cases {
    const char* name;
    int id;
  };
  const auto kCases = std::to_array<Cases>({
#if !BUILDFLAG(IS_ANDROID)
      // IDRs from chrome/app/theme/webui_theme_resources.grd should be valid.
      {"IDR_PROFILE_AVATAR_0", IDR_PROFILE_AVATAR_0},
#endif
      // IDRs from components_scaled_resources should be valid.
      {"IDR_ERROR_NETWORK_GENERIC", IDR_ERROR_NETWORK_GENERIC},
      // IDRs from ui/resources/ui_resources.grd should be valid.
      {"IDR_DEFAULT_FAVICON", IDR_DEFAULT_FAVICON},
#if BUILDFLAG(IS_CHROMEOS)
      // Check IDRs from ui/chromeos/resources/ui_chromeos_resources.grd.
      {"IDR_LOGIN_DEFAULT_USER", IDR_LOGIN_DEFAULT_USER},
#endif
      // Unknown names should be invalid and return -1.
      {"foobar", -1},
      {"backstar", -1},
  });

  for (size_t i = 0; i < std::size(kCases); ++i)
    EXPECT_EQ(kCases[i].id, ResourcesUtil::GetThemeResourceId(kCases[i].name));
}
