blob: b9c4f0084ce1262b97573b2500cc35dfaf9a8a74 [file] [log] [blame]
// Copyright 2018 The Fuchsia 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 <gtest/gtest.h>
#include "garnet/bin/zxdb/console/string_formatters.h"
namespace zxdb {
std::vector<uint8_t> CreateData(size_t length) {
std::vector<uint8_t> data;
data.reserve(length);
// So that we get the number backwards (0x0102...).
uint8_t base = length;
for (size_t i = 0; i < length; i++) {
data.emplace_back(base - i);
}
return data;
}
TEST(GetLittleEndianHexOutput, Lenghts) {
Err err;
std::string out;
std::vector<uint8_t> data;
err = GetLittleEndianHexOutput(data, &out);
EXPECT_TRUE(err.has_error());
EXPECT_EQ(err.msg(), "Invalid size for hex printing: 0");
data = CreateData(1);
err = GetLittleEndianHexOutput(data, &out);
EXPECT_FALSE(err.has_error()) << err.msg();
EXPECT_EQ(out, "00000001");
data = CreateData(2);
err = GetLittleEndianHexOutput(data, &out);
EXPECT_FALSE(err.has_error()) << err.msg();
EXPECT_EQ(out, "00000102");
data = CreateData(3);
err = GetLittleEndianHexOutput(data, &out);
EXPECT_FALSE(err.has_error()) << err.msg();
EXPECT_EQ(out, "00010203");
data = CreateData(4);
err = GetLittleEndianHexOutput(data, &out);
EXPECT_FALSE(err.has_error()) << err.msg();
EXPECT_EQ(out, "01020304");
data = CreateData(5);
err = GetLittleEndianHexOutput(data, &out);
EXPECT_FALSE(err.has_error()) << err.msg();
EXPECT_EQ(out, "00000001 02030405");
data = CreateData(6);
err = GetLittleEndianHexOutput(data, &out);
EXPECT_FALSE(err.has_error()) << err.msg();
EXPECT_EQ(out, "00000102 03040506");
data = CreateData(8);
err = GetLittleEndianHexOutput(data, &out);
EXPECT_FALSE(err.has_error()) << err.msg();
EXPECT_EQ(out, "01020304 05060708");
data = CreateData(10);
err = GetLittleEndianHexOutput(data, &out);
EXPECT_FALSE(err.has_error()) << err.msg();
EXPECT_EQ(out, "00000102 03040506 0708090a");
data = CreateData(12);
err = GetLittleEndianHexOutput(data, &out);
EXPECT_FALSE(err.has_error()) << err.msg();
EXPECT_EQ(out, "01020304 05060708 090a0b0c");
data = CreateData(17);
err = GetLittleEndianHexOutput(data, &out);
EXPECT_FALSE(err.has_error()) << err.msg();
EXPECT_EQ(out, "00000001 02030405 06070809 0a0b0c0d 0e0f1011");
}
TEST(GetLittleEndianHexOutput, LimitOutput) {
Err err;
std::string out;
std::vector<uint8_t> data = CreateData(17);
err = GetLittleEndianHexOutput(data, &out, 4);
EXPECT_FALSE(err.has_error()) << err.msg();
EXPECT_EQ(out, "0e0f1011");
err = GetLittleEndianHexOutput(data, &out, 6);
EXPECT_FALSE(err.has_error()) << err.msg();
EXPECT_EQ(out, "0a0b0c0d 0e0f1011");
err = GetLittleEndianHexOutput(data, &out, 8);
EXPECT_FALSE(err.has_error()) << err.msg();
EXPECT_EQ(out, "0a0b0c0d 0e0f1011");
err = GetLittleEndianHexOutput(data, &out, 12);
EXPECT_FALSE(err.has_error()) << err.msg();
EXPECT_EQ(out, "06070809 0a0b0c0d 0e0f1011");
}
} // namespace zxdb