blob: 1b96e2cbeefde4dfe14374473238a76a399993e3 [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/printing/local_printer_utils_chromeos.h"
#include <vector>
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
using ::testing::ElementsAre;
namespace printing {
TEST(ManagedPrintOptionsToMojom, MediaSize) {
chromeos::Printer::ManagedPrintOptions managed_print_options;
chromeos::Printer::PrintOption<chromeos::Printer::Size> media_size;
media_size.default_value = chromeos::Printer::Size{.width = 30, .height = 60};
media_size.allowed_values = std::vector<chromeos::Printer::Size>{
{.width = 30, .height = 60}, {.width = 45, .height = 90}};
managed_print_options.media_size = media_size;
const auto mojom_managed_print_options =
ManagedPrintOptionsToMojom(managed_print_options);
ASSERT_TRUE(mojom_managed_print_options->media_size->default_value);
EXPECT_EQ(*mojom_managed_print_options->media_size->default_value,
crosapi::mojom::Size(30u, 60u));
ASSERT_TRUE(mojom_managed_print_options->media_size->allowed_values);
ASSERT_EQ(mojom_managed_print_options->media_size->allowed_values->size(),
2u);
EXPECT_EQ(*mojom_managed_print_options->media_size->allowed_values.value()[0],
crosapi::mojom::Size(30u, 60u));
EXPECT_EQ(*mojom_managed_print_options->media_size->allowed_values.value()[1],
crosapi::mojom::Size(45u, 90u));
}
TEST(ManagedPrintOptionsToMojom, MediaType) {
chromeos::Printer::ManagedPrintOptions managed_print_options;
chromeos::Printer::PrintOption<std::string> media_type;
media_type.default_value = "paper";
media_type.allowed_values = {"paper", "metal", "wood"};
managed_print_options.media_type = media_type;
const auto mojom_managed_print_options =
ManagedPrintOptionsToMojom(managed_print_options);
EXPECT_EQ(mojom_managed_print_options->media_type->default_value, "paper");
ASSERT_TRUE(mojom_managed_print_options->media_type->allowed_values);
EXPECT_THAT(*mojom_managed_print_options->media_type->allowed_values,
ElementsAre("paper", "metal", "wood"));
}
TEST(ManagedPrintOptionsToMojom, DuplexOption) {
chromeos::Printer::ManagedPrintOptions managed_print_options;
chromeos::Printer::PrintOption<chromeos::Printer::DuplexType> duplex_option;
duplex_option.default_value = chromeos::Printer::DuplexType::kOneSided;
duplex_option.allowed_values = {chromeos::Printer::DuplexType::kOneSided,
chromeos::Printer::DuplexType::kShortEdge,
chromeos::Printer::DuplexType::kLongEdge};
managed_print_options.duplex = duplex_option;
const auto mojom_managed_print_options =
ManagedPrintOptionsToMojom(managed_print_options);
EXPECT_EQ(mojom_managed_print_options->duplex->default_value,
crosapi::mojom::DuplexType::kOneSided);
ASSERT_TRUE(mojom_managed_print_options->duplex->allowed_values);
EXPECT_THAT(*mojom_managed_print_options->duplex->allowed_values,
ElementsAre(crosapi::mojom::DuplexType::kOneSided,
crosapi::mojom::DuplexType::kShortEdge,
crosapi::mojom::DuplexType::kLongEdge));
}
TEST(ManagedPrintOptionsToMojom, Color) {
chromeos::Printer::ManagedPrintOptions managed_print_options;
chromeos::Printer::PrintOption<bool> color_option;
color_option.default_value = false;
color_option.allowed_values = {false, true};
managed_print_options.color = color_option;
const auto mojom_managed_print_options =
ManagedPrintOptionsToMojom(managed_print_options);
EXPECT_EQ(mojom_managed_print_options->color->default_value, false);
ASSERT_TRUE(mojom_managed_print_options->color->allowed_values);
EXPECT_THAT(*mojom_managed_print_options->color->allowed_values,
ElementsAre(false, true));
}
TEST(ManagedPrintOptionsToMojom, Dpi) {
chromeos::Printer::ManagedPrintOptions managed_print_options;
chromeos::Printer::PrintOption<chromeos::Printer::Dpi> dpi;
dpi.default_value =
chromeos::Printer::Dpi{.horizontal = 1000, .vertical = 1500};
dpi.allowed_values = std::vector<chromeos::Printer::Dpi>{
{.horizontal = 1000, .vertical = 1500},
{.horizontal = 1500, .vertical = 3000}};
managed_print_options.dpi = dpi;
const auto mojom_managed_print_options =
ManagedPrintOptionsToMojom(managed_print_options);
ASSERT_TRUE(mojom_managed_print_options->dpi->default_value);
EXPECT_EQ(*mojom_managed_print_options->dpi->default_value,
crosapi::mojom::Dpi(1000u, 1500u));
ASSERT_TRUE(mojom_managed_print_options->dpi->allowed_values);
ASSERT_EQ(mojom_managed_print_options->dpi->allowed_values->size(), 2u);
EXPECT_EQ(*mojom_managed_print_options->dpi->allowed_values.value()[0],
crosapi::mojom::Dpi(1000u, 1500u));
EXPECT_EQ(*mojom_managed_print_options->dpi->allowed_values.value()[1],
crosapi::mojom::Dpi(1500u, 3000u));
}
TEST(ManagedPrintOptionsToMojom, Quality) {
chromeos::Printer::ManagedPrintOptions managed_print_options;
chromeos::Printer::PrintOption<chromeos::Printer::QualityType> quality_option;
quality_option.default_value = chromeos::Printer::QualityType::kDraft;
quality_option.allowed_values = {chromeos::Printer::QualityType::kDraft,
chromeos::Printer::QualityType::kNormal,
chromeos::Printer::QualityType::kHigh};
managed_print_options.quality = quality_option;
const auto mojom_managed_print_options =
ManagedPrintOptionsToMojom(managed_print_options);
EXPECT_EQ(mojom_managed_print_options->quality->default_value,
crosapi::mojom::QualityType::kDraft);
ASSERT_TRUE(mojom_managed_print_options->quality->allowed_values);
EXPECT_THAT(*mojom_managed_print_options->quality->allowed_values,
ElementsAre(crosapi::mojom::QualityType::kDraft,
crosapi::mojom::QualityType::kNormal,
crosapi::mojom::QualityType::kHigh));
}
TEST(ManagedPrintOptionsToMojom, PrintAsImage) {
chromeos::Printer::ManagedPrintOptions managed_print_options;
chromeos::Printer::PrintOption<bool> print_as_image;
print_as_image.default_value = false;
print_as_image.allowed_values = {true, false};
managed_print_options.print_as_image = print_as_image;
const auto mojom_managed_print_options =
ManagedPrintOptionsToMojom(managed_print_options);
EXPECT_EQ(mojom_managed_print_options->print_as_image->default_value, false);
ASSERT_TRUE(mojom_managed_print_options->print_as_image->allowed_values);
EXPECT_THAT(*mojom_managed_print_options->print_as_image->allowed_values,
ElementsAre(true, false));
}
} // namespace printing