VulkanFormatters

This commit is contained in:
2026-09-09 00:05:05 +02:00
parent 246ea70e93
commit 6895daa676
2 changed files with 118 additions and 0 deletions
@@ -0,0 +1,51 @@
/*********************************************************************
* \file VulkanFormatters.hpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#ifndef BIGFOOT_GRAPHICSVULKAN_VULKANFORMATTERS_HPP
#define BIGFOOT_GRAPHICSVULKAN_VULKANFORMATTERS_HPP
#include <GraphicsVulkan/VulkanInclude.hpp>
#include <Utils/TargetMacros.h>
#include <fmt/format.h>
template<>
struct fmt::formatter<vk::Result>
{
static constexpr auto parse(format_parse_context& ctx)
{
return ctx.begin();
}
static auto format(const vk::Result p_result, format_context& ctx)
{
return fmt::format_to(ctx.out(), "{}", vk::to_string(p_result));
}
};
#ifdef BIGFOOT_NOT_OPTIMIZED
#include <quill/DeferredFormatCodec.h>
template<>
struct fmtquill::formatter<vk::Result>
{
static constexpr auto parse(format_parse_context& ctx)
{
return ctx.begin();
}
static auto format(const vk::Result p_result, format_context& ctx)
{
return fmtquill::format_to(ctx.out(), "{}", vk::to_string(p_result));
}
};
template<>
struct quill::Codec<vk::Result>: quill::DeferredFormatCodec<vk::Result>
{
};
#endif
#endif
@@ -0,0 +1,67 @@
/*********************************************************************
* \file VulkanFormatters.cpp
*
* \author Romain BOULLARD
* \date September 2026
*********************************************************************/
#include <GraphicsVulkan/VulkanFormatters.hpp>
#include <Utils/Log/LogMacros.hpp>
#include <Utils/Singleton.hpp>
#include <GraphicsVulkan/GraphicsVulkanLogger_generated.hpp>
#include <fmt/format.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <fstream>
#include <sstream>
#include <string>
namespace Bigfoot::Vulkan
{
class VulkanFormattersFixture: public ::testing::Test
{
};
/****************************************************************************************/
TEST_F(VulkanFormattersFixture, FormatsASuccessResultAsItsToString)
{
EXPECT_EQ(fmt::format("{}", vk::Result::eSuccess), vk::to_string(vk::Result::eSuccess));
}
/****************************************************************************************/
TEST_F(VulkanFormattersFixture, FormatsAnErrorResultAsItsToString)
{
EXPECT_EQ(fmt::format("{}", vk::Result::eErrorDeviceLost), vk::to_string(vk::Result::eErrorDeviceLost));
}
/****************************************************************************************/
#ifdef BIGFOOT_NOT_OPTIMIZED
class VulkanFormattersLogFixture: public ::testing::Test
{
protected:
static std::string ReadFileSinkContent()
{
Singleton<Log>::GetInstance().Flush();
std::ifstream file {std::string {Log::FILE_SINK_PATH.data()}};
std::stringstream buffer;
buffer << file.rdbuf();
return buffer.str();
}
};
/****************************************************************************************/
TEST_F(VulkanFormattersLogFixture, LogsAResultArgumentAsItsToString)
{
BIGFOOT_LOG_INFO(GRAPHICSVULKAN_LOGGER, "{}", vk::Result::eErrorOutOfHostMemory);
EXPECT_THAT(ReadFileSinkContent(), ::testing::HasSubstr(vk::to_string(vk::Result::eErrorOutOfHostMemory)));
}
#endif
} // namespace Bigfoot::Vulkan