Index: bootloader_type_unittest.cc |
diff --git a/bootloader_type_unittest.cc b/bootloader_type_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..57ab2f582c67c056029a38ca200bce7771de4c77 |
--- /dev/null |
+++ b/bootloader_type_unittest.cc |
@@ -0,0 +1,114 @@ |
+// 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::BootloaderType default behavior. |
+#include "bootloader_type.h" |
+ |
+#include <base/basictypes.h> |
+#include <base/file_util.h> |
+#include <base/stringprintf.h> |
+#include <gtest/gtest.h> |
+#include <string> |
+ |
+class BootloaderTypeTest : public ::testing::Test { |
+ public: |
+ void SetUp() { |
+ EXPECT_TRUE(file_util::CreateNewTempDirectory("", &temp_dir_)); |
+ type_file_path_ = temp_dir_.value(); |
+ type_file_path_.append("cmdline"); |
+ type_.set_platform_file_path(type_file_path_.c_str()); |
+ } |
+ void TearDown() { |
+ file_util::Delete(temp_dir_, true); |
+ } |
+ |
+ void ExpectType(int type) { |
+ static const char *kUnsupported = "unsupported"; |
+ EXPECT_EQ(type, type_.value()); |
+ // If the position is -1, it is does not index. |
+ const char *expected_c_str = kUnsupported; |
+ if (type >= 0) |
+ expected_c_str = |
+ cros_boot_mode::BootloaderType::kBootloaderTypeText[type]; |
+ EXPECT_STREQ(expected_c_str, type_.c_str()); |
+ } |
+ protected: |
+ std::string type_file_path_; |
+ FilePath temp_dir_; |
+ cros_boot_mode::BootloaderType type_; |
+}; |
+ |
+TEST_F(BootloaderTypeTest, ChromeOSBare) { |
+ std::string contents = StringPrintf("%s", |
+ cros_boot_mode::BootloaderType::kSupportedBootloaders[ |
+ cros_boot_mode::BootloaderType::kChromeOS]); |
+ |
+ EXPECT_EQ(file_util::WriteFile(FilePath(type_file_path_), |
+ contents.c_str(), contents.length()), |
+ contents.length()); |
+ type_.Initialize(); |
+ ExpectType(cros_boot_mode::BootloaderType::kChromeOS); |
+} |
+ |
+TEST_F(BootloaderTypeTest, ChromeOSSpaces) { |
+ std::string contents = StringPrintf(" %s ", |
+ cros_boot_mode::BootloaderType::kSupportedBootloaders[ |
+ cros_boot_mode::BootloaderType::kChromeOS]); |
+ |
+ EXPECT_EQ(file_util::WriteFile(FilePath(type_file_path_), |
+ contents.c_str(), contents.length()), |
+ contents.length()); |
+ type_.Initialize(); |
+ ExpectType(cros_boot_mode::BootloaderType::kChromeOS); |
+} |
+ |
+TEST_F(BootloaderTypeTest, NoBoundaries) { |
+ std::string contents = StringPrintf("x%sx", |
+ cros_boot_mode::BootloaderType::kSupportedBootloaders[ |
+ cros_boot_mode::BootloaderType::kChromeOS]); |
+ |
+ EXPECT_EQ(file_util::WriteFile(FilePath(type_file_path_), |
+ contents.c_str(), contents.length()), |
+ contents.length()); |
+ type_.Initialize(); |
+ ExpectType(cros_boot_mode::BootloaderType::kUnsupported); |
+} |
+ |
+TEST_F(BootloaderTypeTest, NoStartingBoundary) { |
+ std::string contents = StringPrintf("x%s", |
+ cros_boot_mode::BootloaderType::kSupportedBootloaders[ |
+ cros_boot_mode::BootloaderType::kChromeOS]); |
+ |
+ EXPECT_EQ(file_util::WriteFile(FilePath(type_file_path_), |
+ contents.c_str(), contents.length()), |
+ contents.length()); |
+ type_.Initialize(); |
+ ExpectType(cros_boot_mode::BootloaderType::kUnsupported); |
+} |
+ |
+TEST_F(BootloaderTypeTest, NoTrailingBoundary) { |
+ std::string contents = StringPrintf("%sx", |
+ cros_boot_mode::BootloaderType::kSupportedBootloaders[ |
+ cros_boot_mode::BootloaderType::kChromeOS]); |
+ |
+ EXPECT_EQ(file_util::WriteFile(FilePath(type_file_path_), |
+ contents.c_str(), contents.length()), |
+ contents.length()); |
+ type_.Initialize(); |
+ ExpectType(cros_boot_mode::BootloaderType::kUnsupported); |
+} |
+ |
+TEST_F(BootloaderTypeTest, FirstMatchIsUsed) { |
+ std::string contents = StringPrintf(" %s %s ", |
+ cros_boot_mode::BootloaderType::kSupportedBootloaders[ |
+ cros_boot_mode::BootloaderType::kChromeOS], |
+ cros_boot_mode::BootloaderType::kSupportedBootloaders[ |
+ cros_boot_mode::BootloaderType::kEFI]); |
+ |
+ EXPECT_EQ(file_util::WriteFile(FilePath(type_file_path_), |
+ contents.c_str(), contents.length()), |
+ contents.length()); |
+ type_.Initialize(); |
+ ExpectType(cros_boot_mode::BootloaderType::kChromeOS); |
+} |