Commit 56d57d57 authored by tqcq's avatar tqcq
Browse files

fix fmt can't format enum

parent dbdc3427
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -124,6 +124,7 @@ if(SLED_BUILD_TESTS)
		src/any_test.cc
        src/filesystem/path_test.cc
		src/futures/future_test.cc
        src/log/fmt_test.cc
		# src/profiling/profiling_test.cc
        src/strings/base64_test.cc
        src/synchronization/sequence_checker_test.cc
+8 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@
#ifndef SLED_LOG_LOG_H
#define SLED_LOG_LOG_H
#pragma once

#include "sled/system/location.h"
#include <assert.h>
#include <fmt/chrono.h>
@@ -19,6 +20,13 @@
#include <fmt/std.h>
#include <fmt/xchar.h>

template<typename T, typename std::enable_if<std::is_enum<T>::value, int>::type = 0>
auto
format_as(const T &value) -> int
{
    return static_cast<int>(value);
}

namespace sled {
enum class LogLevel {
    kTrace = 0,

src/log/fmt_test.cc

0 → 100644
+24 −0
Original line number Diff line number Diff line
#include <gtest/gtest.h>
#include <sled/log/log.h>

TEST(format, enum)
{
    enum EnumType {
        kOne = 1,
        kTwo = 2,
        kThree = 3,
    };

    EXPECT_EQ(fmt::format("{}{}{}", kOne, kTwo, kThree), "123");
}

TEST(format, neg_enum)
{
    enum EnumType {
        kOne = -1,
        kTwo = -2,
        kThree = -3,
    };

    EXPECT_EQ(fmt::format("{}{}{}", kOne, kTwo, kThree), "-1-2-3");
}