1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be
3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file.
4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/file_util.h"
6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/sys_info.h"
7c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "testing/gtest/include/gtest/gtest.h"
8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "testing/platform_test.h"
9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scotttypedef PlatformTest SysInfoTest;
11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTEST_F(SysInfoTest, NumProcs) {
13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  // We aren't actually testing that it's correct, just that it's sane.
14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  EXPECT_GE(base::SysInfo::NumberOfProcessors(), 1);
15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTEST_F(SysInfoTest, AmountOfMem) {
18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  // We aren't actually testing that it's correct, just that it's sane.
19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  EXPECT_GT(base::SysInfo::AmountOfPhysicalMemory(), 0);
20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  EXPECT_GT(base::SysInfo::AmountOfPhysicalMemoryMB(), 0);
21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTEST_F(SysInfoTest, AmountOfFreeDiskSpace) {
24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  // We aren't actually testing that it's correct, just that it's sane.
25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  FilePath tmp_path;
26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  ASSERT_TRUE(file_util::GetTempDir(&tmp_path));
27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  EXPECT_GT(base::SysInfo::AmountOfFreeDiskSpace(tmp_path), 0)
28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott            << tmp_path.value();
29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTEST_F(SysInfoTest, OperatingSystemVersionNumbers) {
33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  int32 os_major_version = -1;
34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  int32 os_minor_version = -1;
35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  int32 os_bugfix_version = -1;
36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  base::SysInfo::OperatingSystemVersionNumbers(&os_major_version,
37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott                                               &os_minor_version,
38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott                                               &os_bugfix_version);
39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  EXPECT_GT(os_major_version, -1);
40c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  EXPECT_GT(os_minor_version, -1);
41c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  EXPECT_GT(os_bugfix_version, -1);
42c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
43c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif
44c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
45c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTEST_F(SysInfoTest, GetPrimaryDisplayDimensions) {
46c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  // We aren't actually testing that it's correct, just that it's sane.
47c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  int width, height;
48c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  base::SysInfo::GetPrimaryDisplayDimensions(&width, &height);
49c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  EXPECT_GE(width, 10);
50c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  EXPECT_GE(height, 10);
51c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
52c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
53c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTEST_F(SysInfoTest, DisplayCount) {
54c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  // We aren't actually testing that it's correct, just that it's sane.
55c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  EXPECT_GE(base::SysInfo::DisplayCount(), 1);
56c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
57c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
58c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#if defined(OS_CHROMEOS)
59c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTEST_F(SysInfoTest, GoogleChromeOSVersionNumbers) {
60c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  int32 os_major_version = -1;
61c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  int32 os_minor_version = -1;
62c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  int32 os_bugfix_version = -1;
63c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  std::string lsb_release("FOO=1234123.34.5\n");
64c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  lsb_release.append(base::SysInfo::GetLinuxStandardBaseVersionKey());
65c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  lsb_release.append("=1.2.3.4\n");
66c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  base::SysInfo::ParseLsbRelease(lsb_release,
67c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott                                 &os_major_version,
68c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott                                 &os_minor_version,
69c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott                                 &os_bugfix_version);
70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_EQ(2, os_major_version);
71ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_EQ(3, os_minor_version);
72ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_EQ(4, os_bugfix_version);
73c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
74c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
75c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTEST_F(SysInfoTest, GoogleChromeOSVersionNumbersFirst) {
76c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  int32 os_major_version = -1;
77c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  int32 os_minor_version = -1;
78c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  int32 os_bugfix_version = -1;
79c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  std::string lsb_release(base::SysInfo::GetLinuxStandardBaseVersionKey());
80c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  lsb_release.append("=1.2.3.4\n");
81c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  lsb_release.append("FOO=1234123.34.5\n");
82c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  base::SysInfo::ParseLsbRelease(lsb_release,
83c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott                                 &os_major_version,
84c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott                                 &os_minor_version,
85c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott                                 &os_bugfix_version);
86ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_EQ(2, os_major_version);
87ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_EQ(3, os_minor_version);
88ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_EQ(4, os_bugfix_version);
89c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
90c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
91c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTEST_F(SysInfoTest, GoogleChromeOSNoVersionNumbers) {
92c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  int32 os_major_version = -1;
93c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  int32 os_minor_version = -1;
94c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  int32 os_bugfix_version = -1;
95c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  std::string lsb_release("FOO=1234123.34.5\n");
96c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  base::SysInfo::ParseLsbRelease(lsb_release,
97c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott                                 &os_major_version,
98c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott                                 &os_minor_version,
99c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott                                 &os_bugfix_version);
100c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  EXPECT_EQ(-1, os_major_version);
101c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  EXPECT_EQ(-1, os_minor_version);
102c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  EXPECT_EQ(-1, os_bugfix_version);
103c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
104c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
105c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif  // OS_CHROMEOS
106