1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // Copyright 2019 The Chromium 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 "chromeos/printing/usb_printer_id.h"
- #include <algorithm>
- #include <map>
- #include <string>
- #include "base/strings/string_util.h"
- #include "testing/gmock/include/gmock/gmock.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace chromeos {
- namespace {
- using testing::IsEmpty;
- using MapType = std::map<std::string, std::vector<std::string>>;
- MapType GetDefaultDeviceId() {
- MapType ret;
- // Make.
- ret["MFG"].push_back("EPSON");
- // Model.
- ret["MDL"].push_back("ET-2700");
- // Command set.
- ret["CMD"].push_back("ESCPL2");
- ret["CMD"].push_back("BDC");
- ret["CMD"].push_back("D4");
- ret["CMD"].push_back("END4");
- ret["CMD"].push_back("GENEP");
- return ret;
- }
- std::string MapToString(const MapType& map) {
- std::vector<std::string> terms;
- for (auto& term : map) {
- std::string values = base::JoinString(term.second, ",");
- terms.push_back(base::JoinString({term.first, values}, ":"));
- }
- std::string device_id_str = "xx"; // Two unused bytes for the length.
- device_id_str += base::JoinString(terms, ";") + ";";
- return device_id_str;
- }
- std::vector<uint8_t> MapToBuffer(const MapType& map) {
- std::string device_id_str = MapToString(map);
- std::vector<uint8_t> ret;
- std::copy(device_id_str.begin(), device_id_str.end(),
- std::back_inserter(ret));
- return ret;
- }
- TEST(UsbPrinterIdTest, EmptyDeviceId) {
- EXPECT_THAT(BuildDeviceIdMapping({}), IsEmpty());
- }
- // Tests that we get the same map back after parsing.
- TEST(UsbPrinterIdTest, SimpleSanityTest) {
- MapType mapping = GetDefaultDeviceId();
- std::vector<uint8_t> buffer = MapToBuffer(mapping);
- EXPECT_EQ(mapping, BuildDeviceIdMapping(buffer));
- }
- } // namespace
- } // namespace chromeos
|