// Formatting library for C++ - test utilities // // Copyright (c) 2012 - present, Victor Zverovich // All rights reserved. // // For the license information refer to format.h. #include #include #include #include "fmt/posix.h" enum {BUFFER_SIZE = 256}; #ifdef _MSC_VER # define FMT_VSNPRINTF vsprintf_s #else # define FMT_VSNPRINTF vsnprintf #endif template void safe_sprintf(char (&buffer)[SIZE], const char *format, ...) { std::va_list args; va_start(args, format); FMT_VSNPRINTF(buffer, SIZE, format, args); va_end(args); } // Increment a number in a string. void increment(char *s); std::string get_system_error(int error_code); extern const char *const FILE_CONTENT; // Opens a buffered file for reading. fmt::BufferedFile open_buffered_file(FILE **fp = 0); inline FILE *safe_fopen(const char *filename, const char *mode) { #if defined(_WIN32) && !defined(__MINGW32__) // Fix MSVC warning about "unsafe" fopen. FILE *f = 0; errno = fopen_s(&f, filename, mode); return f; #else return std::fopen(filename, mode); #endif } template class BasicTestString { private: std::basic_string value_; static const Char EMPTY[]; public: explicit BasicTestString(const Char *value = EMPTY) : value_(value) {} const std::basic_string &value() const { return value_; } }; template const Char BasicTestString::EMPTY[] = {0}; typedef BasicTestString TestString; typedef BasicTestString TestWString; template std::basic_ostream &operator<<( std::basic_ostream &os, const BasicTestString &s) { os << s.value(); return os; } class Date { int year_, month_, day_; public: Date(int year, int month, int day) : year_(year), month_(month), day_(day) {} int year() const { return year_; } int month() const { return month_; } int day() const { return day_; } };