cups_printer_status_unittest.cc 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. // Copyright 2020 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "chromeos/printing/cups_printer_status.h"
  5. #include <string>
  6. #include <vector>
  7. #include "base/test/scoped_mock_clock_override.h"
  8. #include "testing/gmock/include/gmock/gmock.h"
  9. #include "testing/gtest/include/gtest/gtest.h"
  10. namespace chromeos {
  11. using CupsPrinterStatusReason = CupsPrinterStatus::CupsPrinterStatusReason;
  12. using CupsReason = CupsPrinterStatus::CupsPrinterStatusReason::Reason;
  13. using CupsSeverity = CupsPrinterStatus::CupsPrinterStatusReason::Severity;
  14. class CupsPrinterStatusTest : public testing::Test {
  15. public:
  16. CupsPrinterStatusTest() = default;
  17. ~CupsPrinterStatusTest() override = default;
  18. protected:
  19. base::ScopedMockClockOverride clock_;
  20. };
  21. // Baseline test for creating a chromeos::CupsPrinterStatus.
  22. TEST_F(CupsPrinterStatusTest, CreateCupsPrinterStatus) {
  23. CupsPrinterStatus cups_printer_status("id");
  24. EXPECT_EQ("id", cups_printer_status.GetPrinterId());
  25. EXPECT_EQ(clock_.Now(), cups_printer_status.GetTimestamp());
  26. }
  27. TEST_F(CupsPrinterStatusTest, AddStatusReasons) {
  28. CupsPrinterStatus cups_printer_status("id");
  29. cups_printer_status.AddStatusReason(
  30. CupsPrinterStatusReason::Reason::kNoError,
  31. CupsPrinterStatusReason::Severity::kReport);
  32. cups_printer_status.AddStatusReason(
  33. CupsPrinterStatusReason::Reason::kDoorOpen,
  34. CupsPrinterStatusReason::Severity::kWarning);
  35. EXPECT_EQ(2u, cups_printer_status.GetStatusReasons().size());
  36. EXPECT_EQ("id", cups_printer_status.GetPrinterId());
  37. EXPECT_EQ(clock_.Now(), cups_printer_status.GetTimestamp());
  38. std::vector<CupsPrinterStatus::CupsPrinterStatusReason> expected_reasons{
  39. CupsPrinterStatus::CupsPrinterStatusReason(CupsReason::kNoError,
  40. CupsSeverity::kReport),
  41. CupsPrinterStatus::CupsPrinterStatusReason(CupsReason::kDoorOpen,
  42. CupsSeverity::kWarning)};
  43. EXPECT_THAT(cups_printer_status.GetStatusReasons(), expected_reasons);
  44. }
  45. // Ensure that if printer returns two of the same status but each with different
  46. // severities, make sure both are saved.
  47. TEST_F(CupsPrinterStatusTest, SameReasonDifferentSeverity) {
  48. CupsPrinterStatus cups_printer_status("id");
  49. cups_printer_status.AddStatusReason(
  50. CupsPrinterStatusReason::Reason::kDeviceError,
  51. CupsPrinterStatusReason::Severity::kReport);
  52. cups_printer_status.AddStatusReason(
  53. CupsPrinterStatusReason::Reason::kDeviceError,
  54. CupsPrinterStatusReason::Severity::kWarning);
  55. EXPECT_EQ(2u, cups_printer_status.GetStatusReasons().size());
  56. EXPECT_EQ("id", cups_printer_status.GetPrinterId());
  57. EXPECT_EQ(clock_.Now(), cups_printer_status.GetTimestamp());
  58. std::vector<CupsPrinterStatus::CupsPrinterStatusReason> expected_reasons{
  59. CupsPrinterStatus::CupsPrinterStatusReason(CupsReason::kDeviceError,
  60. CupsSeverity::kReport),
  61. CupsPrinterStatus::CupsPrinterStatusReason(CupsReason::kDeviceError,
  62. CupsSeverity::kWarning)};
  63. EXPECT_THAT(cups_printer_status.GetStatusReasons(), expected_reasons);
  64. }
  65. // Ensure if printer returns the same status and severity twice, duplicates are
  66. // not added to CupsPrinterStatus.
  67. TEST_F(CupsPrinterStatusTest, SameReasonSameSeverity) {
  68. CupsPrinterStatus cups_printer_status("id");
  69. cups_printer_status.AddStatusReason(
  70. CupsPrinterStatusReason::Reason::kPaused,
  71. CupsPrinterStatusReason::Severity::kError);
  72. cups_printer_status.AddStatusReason(
  73. CupsPrinterStatusReason::Reason::kPaused,
  74. CupsPrinterStatusReason::Severity::kError);
  75. EXPECT_EQ(1u, cups_printer_status.GetStatusReasons().size());
  76. EXPECT_EQ("id", cups_printer_status.GetPrinterId());
  77. EXPECT_EQ(clock_.Now(), cups_printer_status.GetTimestamp());
  78. std::vector<CupsPrinterStatus::CupsPrinterStatusReason> expected_reasons{
  79. CupsPrinterStatus::CupsPrinterStatusReason(CupsReason::kPaused,
  80. CupsSeverity::kError)};
  81. EXPECT_THAT(cups_printer_status.GetStatusReasons(), expected_reasons);
  82. }
  83. } // namespace chromeos