Index: developer_switch_unittest.cc |
diff --git a/developer_switch_unittest.cc b/developer_switch_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bb30fd28091947baf12962f6da9bc570844b0180 |
--- /dev/null |
+++ b/developer_switch_unittest.cc |
@@ -0,0 +1,101 @@ |
+// Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+// |
+// Tests for cros_boot_mode::DeveloperSwitch default behavior. |
+// This also acts as the canonical unittest for PlatformSwitch default |
+// behavior. |
+#include "developer_switch.h" |
+ |
+#include <base/basictypes.h> |
+#include <base/file_util.h> |
+#include <gtest/gtest.h> |
+#include <string> |
+ |
+class DeveloperSwitchTest : public ::testing::Test { |
+ public: |
+ void SetUp() { |
+ EXPECT_TRUE(file_util::CreateNewTempDirectory("", &temp_dir_)); |
+ switch_file_path_ = temp_dir_.value(); |
+ switch_file_path_.append("chsw"); |
+ switch_.set_platform_file_path(switch_file_path_.c_str()); |
+ } |
+ |
+ void TearDown() { |
+ file_util::Delete(temp_dir_, true); |
+ } |
+ |
+ void ExpectPosition(int pos) { |
+ static const char *kUnsupported = "unsupported"; |
+ EXPECT_EQ(pos, switch_.value()); |
+ // If the position is -1, it is does not index. |
+ const char *expected_c_str = kUnsupported; |
+ if (pos >= 0) |
+ expected_c_str = cros_boot_mode::PlatformSwitch::kPositionText[pos]; |
+ EXPECT_STREQ(expected_c_str, switch_.c_str()); |
+ } |
+ protected: |
+ std::string switch_file_path_; |
+ FilePath temp_dir_; |
+ cros_boot_mode::DeveloperSwitch switch_; |
+}; |
+ |
+ |
+TEST_F(DeveloperSwitchTest, Disabled) { |
+ EXPECT_EQ(file_util::WriteFile(FilePath(switch_file_path_), "0", 2), 2); |
+ switch_.Initialize(); |
+ ExpectPosition(cros_boot_mode::PlatformSwitch::kDisabled); |
+} |
+ |
+TEST_F(DeveloperSwitchTest, DisabledWithOtherSwitches) { |
+ EXPECT_EQ(file_util::WriteFile(FilePath(switch_file_path_), "528", 4), 4); |
+ switch_.Initialize(); |
+ ExpectPosition(cros_boot_mode::PlatformSwitch::kDisabled); |
+} |
+ |
+TEST_F(DeveloperSwitchTest, Enabled) { |
+ EXPECT_EQ(file_util::WriteFile(FilePath(switch_file_path_), "32", 3), 3); |
+ switch_.Initialize(); |
+ ExpectPosition(cros_boot_mode::PlatformSwitch::kEnabled); |
+} |
+ |
+TEST_F(DeveloperSwitchTest, EnabledWithOtherSwitches) { |
+ EXPECT_EQ(file_util::WriteFile(FilePath(switch_file_path_), "544", 4), 4); |
+ switch_.Initialize(); |
+ ExpectPosition(cros_boot_mode::PlatformSwitch::kEnabled); |
+} |
+ |
+TEST_F(DeveloperSwitchTest, EnabledWithOtherSwitches2) { |
+ EXPECT_EQ(file_util::WriteFile(FilePath(switch_file_path_), "4128", 5), 5); |
+ switch_.Initialize(); |
+ ExpectPosition(cros_boot_mode::PlatformSwitch::kEnabled); |
+} |
+ |
+TEST_F(DeveloperSwitchTest, EnabledWithOtherSwitches3) { |
+ EXPECT_EQ(file_util::WriteFile(FilePath(switch_file_path_), "65535", 6), 6); |
+ switch_.Initialize(); |
+ ExpectPosition(cros_boot_mode::PlatformSwitch::kEnabled); |
+} |
+ |
+TEST_F(DeveloperSwitchTest, BadTruncationMakesUnsupported) { |
+ EXPECT_EQ(file_util::WriteFile(FilePath(switch_file_path_), "100000", 7), 7); |
+ switch_.Initialize(); |
+ ExpectPosition(cros_boot_mode::PlatformSwitch::kUnsupported); |
+} |
+ |
+TEST_F(DeveloperSwitchTest, MissingFile) { |
+ switch_.Initialize(); |
+ ExpectPosition(cros_boot_mode::PlatformSwitch::kUnsupported); |
+} |
+ |
+TEST_F(DeveloperSwitchTest, UnsupportedPlatform) { |
+ EXPECT_EQ(file_util::WriteFile(FilePath(switch_file_path_), "-1", 3), 3); |
+ switch_.Initialize(); |
+ ExpectPosition(cros_boot_mode::PlatformSwitch::kUnsupported); |
+} |
+ |
+TEST_F(DeveloperSwitchTest, EmptyFile) { |
+ EXPECT_EQ(file_util::WriteFile(FilePath(switch_file_path_), "", 0), 0); |
+ switch_.Initialize(); |
+ ExpectPosition(cros_boot_mode::PlatformSwitch::kUnsupported); |
+} |