| // Copyright 2020 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. |
| |
| #include "init/clobber_ui.h" |
| |
| #include <string> |
| #include <utility> |
| |
| #include <base/time/time.h> |
| #include <gtest/gtest.h> |
| |
| namespace { |
| |
| base::TimeDelta BuildTimeDelta(int hours, int minutes, int seconds) { |
| return base::TimeDelta::FromHours(hours) + |
| base::TimeDelta::FromMinutes(minutes) + |
| base::TimeDelta::FromSeconds(seconds); |
| } |
| |
| } // namespace |
| |
| TEST(BuildUiString, NoProgressBarEmpty) { |
| base::TimeDelta elapsed = BuildTimeDelta(0, 40, 27); |
| double progress = 0.0; |
| std::string ui_string = ClobberUi::BuildUiStringForTest(0, elapsed, progress); |
| EXPECT_NE(ui_string.find("0:40:27"), std::string::npos); |
| EXPECT_NE(ui_string.find("0%"), std::string::npos); |
| } |
| |
| TEST(BuildUiString, NoProgressBarStarted) { |
| base::TimeDelta elapsed = BuildTimeDelta(0, 21, 0); |
| double progress = 0.27; |
| std::string ui_string = ClobberUi::BuildUiStringForTest(0, elapsed, progress); |
| EXPECT_NE(ui_string.find("0:21:00"), std::string::npos); |
| EXPECT_NE(ui_string.find("27%"), std::string::npos); |
| } |
| |
| TEST(BuildUiString, NoProgressBarFinishing) { |
| base::TimeDelta elapsed = BuildTimeDelta(1, 0, 7); |
| double progress = 0.95; |
| std::string ui_string = ClobberUi::BuildUiStringForTest(0, elapsed, progress); |
| EXPECT_NE(ui_string.find("1:00:07"), std::string::npos); |
| EXPECT_NE(ui_string.find("95%"), std::string::npos); |
| } |
| |
| TEST(BuildUiString, NoProgressBarFinished) { |
| base::TimeDelta elapsed = BuildTimeDelta(12, 2, 14); |
| double progress = 1.0; |
| std::string ui_string = ClobberUi::BuildUiStringForTest(0, elapsed, progress); |
| EXPECT_NE(ui_string.find("12:02:14"), std::string::npos); |
| EXPECT_NE(ui_string.find("100%"), std::string::npos); |
| } |
| |
| TEST(BuildUiString, WithProgressBarEmpty) { |
| int terminal_width = 80; |
| base::TimeDelta elapsed = BuildTimeDelta(0, 40, 27); |
| double progress = 0.0; |
| std::string ui_string = |
| ClobberUi::BuildUiStringForTest(terminal_width, elapsed, progress); |
| EXPECT_NE(ui_string.find("0:40:27"), std::string::npos); |
| EXPECT_NE(ui_string.find("0%"), std::string::npos); |
| } |
| |
| TEST(BuildUiString, WithProgressBarStarted) { |
| int terminal_width = 80; |
| base::TimeDelta elapsed = BuildTimeDelta(0, 21, 0); |
| double progress = 0.27; |
| std::string ui_string = |
| ClobberUi::BuildUiStringForTest(terminal_width, elapsed, progress); |
| EXPECT_NE(ui_string.find("0:21:00"), std::string::npos); |
| EXPECT_NE(ui_string.find("27%"), std::string::npos); |
| } |
| |
| TEST(BuildUiString, WithProgressBarFinishing) { |
| int terminal_width = 80; |
| base::TimeDelta elapsed = BuildTimeDelta(1, 0, 7); |
| double progress = 0.95; |
| std::string ui_string = |
| ClobberUi::BuildUiStringForTest(terminal_width, elapsed, progress); |
| EXPECT_NE(ui_string.find("1:00:07"), std::string::npos); |
| EXPECT_NE(ui_string.find("95%"), std::string::npos); |
| } |
| |
| TEST(BuildUiString, WithProgressBarFinished) { |
| base::TimeDelta elapsed = BuildTimeDelta(12, 2, 14); |
| double progress = 1.0; |
| std::string ui_string = ClobberUi::BuildUiStringForTest(0, elapsed, progress); |
| EXPECT_NE(ui_string.find("12:02:14"), std::string::npos); |
| EXPECT_NE(ui_string.find("100%"), std::string::npos); |
| } |
| |
| TEST(CallSequencing, WipeProgress) { |
| base::File dev_null(base::FilePath("/dev/null"), |
| base::File::FLAG_OPEN | base::File::FLAG_WRITE); |
| ClobberUi ui(std::move(dev_null)); |
| base::TimeDelta zero = base::TimeDelta::FromSeconds(0); |
| ASSERT_TRUE(ui.ShowCountdownTimer(zero)); |
| ASSERT_TRUE(ui.StartWipeUi(100)); |
| ASSERT_FALSE(ui.ShowCountdownTimer(zero)); |
| ASSERT_TRUE(ui.UpdateWipeProgress(50)); |
| ASSERT_FALSE(ui.ShowCountdownTimer(zero)); |
| ASSERT_TRUE(ui.UpdateWipeProgress(100)); |
| ASSERT_FALSE(ui.ShowCountdownTimer(zero)); |
| ASSERT_TRUE(ui.StopWipeUi()); |
| ASSERT_TRUE(ui.ShowCountdownTimer(zero)); |
| } |