// Copyright 2026 The Chromium 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 "util/sys_info.h"

#include "util/build_config.h"
#include "util/test/test.h"

TEST(SysInfoTest, NumberOfProcessors) {
  int num_processors = NumberOfProcessors();
  EXPECT_GT(num_processors, 0);
}

TEST(SysInfoTest, NumberOfPerformanceProcessors) {
  int num_perf_processors = NumberOfPerformanceProcessors();
  // On all platforms this should be at least 1 (if implemented) or same as
  // NumberOfProcessors
  EXPECT_GT(num_perf_processors, 0);

#if defined(OS_MACOSX) && defined(ARCH_CPU_ARM64)
  // Apple Silicon has both performance and efficiency cores, so the number of
  // performance cores should be less than the total number of processors.
  EXPECT_LE(num_perf_processors, NumberOfProcessors());
#else
  // On other platforms, it returns NumberOfProcessors().
  EXPECT_EQ(num_perf_processors, NumberOfProcessors());
#endif
}