blob: 4bdbb2ed341fb668488f4e88131c028b6565541f [file] [log] [blame]
// Copyright 2020 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 <arpa/inet.h>
#include <zircon/errors.h>
#include <zircon/types.h>
#include <limits>
#include <string>
#include <fbl/string.h>
#include <zxtest/zxtest.h>
// Tests the formatted output value returned by the various PrintValue<> specializations.
// Test printing of primitive types.
TEST(PrintValueTest, PrimitiveTypes) {
EXPECT_EQ("2147483647", zxtest::PrintValue(static_cast<int32_t>(2147483647)));
EXPECT_EQ("4294967295", zxtest::PrintValue(static_cast<uint32_t>(4294967295u)));
EXPECT_EQ("9223372036854775807", zxtest::PrintValue(static_cast<int64_t>(9223372036854775807)));
EXPECT_EQ("18446744073709551615",
zxtest::PrintValue(static_cast<uint64_t>(18446744073709551615u)));
EXPECT_EQ("1024.000000", zxtest::PrintValue(1024.0f));
EXPECT_EQ("-0.531250", zxtest::PrintValue(-0.53125));
}
// Test printing of string types.
TEST(PrintValueTest, StringTypes) {
const char* foo = nullptr;
EXPECT_EQ("<nullptr>", zxtest::PrintValue(foo));
EXPECT_EQ("bar", zxtest::PrintValue("bar"));
EXPECT_EQ("baz", zxtest::PrintValue(std::string("baz")));
EXPECT_EQ("qux", zxtest::PrintValue(fbl::String("qux")));
}
#if !defined(__Fuchsia__)
// Test printing of status types.
TEST(PrintValueTest, StatusType) { EXPECT_EQ("0", zxtest::PrintStatus(ZX_OK)); }
#endif
// Test printing of tuple types.
TEST(PrintValueTest, TupleType) {
const auto tuple = std::make_tuple(3, "rabbits", ZX_OK);
EXPECT_EQ("{ 3, rabbits, 0 }", zxtest::PrintValue(tuple));
}
// Test that an unknown value type is printed as hex.
TEST(PrintValueTest, ValueAsHex) {
struct Foo {
uint32_t foo = 0;
};
Foo foo{htonl(0xDEADBEEF)};
EXPECT_EQ("DE AD BE EF", zxtest::PrintValue(foo));
}