/ externals / fmt / test / enforce-checks-test.cc
enforce-checks-test.cc
 1  // Formatting library for C++ - formatting library tests
 2  //
 3  // Copyright (c) 2012 - present, Victor Zverovich
 4  // All rights reserved.
 5  //
 6  // For the license information refer to format.h.
 7  
 8  #include <iterator>
 9  #include <vector>
10  
11  #define I 42  // simulate https://en.cppreference.com/w/c/numeric/complex/I
12  #include "fmt/chrono.h"
13  #include "fmt/color.h"
14  #include "fmt/format.h"
15  #include "fmt/ostream.h"
16  #include "fmt/ranges.h"
17  #include "fmt/xchar.h"
18  #undef I
19  
20  // Exercise the API to verify that everything we expect to can compile.
21  void test_format_api() {
22    (void)fmt::format(FMT_STRING("{}"), 42);
23    (void)fmt::format(FMT_STRING(L"{}"), 42);
24    (void)fmt::format(FMT_STRING("noop"));
25  
26    (void)fmt::to_string(42);
27    (void)fmt::to_wstring(42);
28  
29    std::vector<char> out;
30    fmt::format_to(std::back_inserter(out), FMT_STRING("{}"), 42);
31  
32    char buffer[4];
33    fmt::format_to_n(buffer, 3, FMT_STRING("{}"), 12345);
34  
35    wchar_t wbuffer[4];
36    fmt::format_to_n(wbuffer, 3, FMT_STRING(L"{}"), 12345);
37  }
38  
39  void test_chrono() {
40    (void)fmt::format(FMT_STRING("{}"), std::chrono::seconds(42));
41    (void)fmt::format(FMT_STRING(L"{}"), std::chrono::seconds(42));
42  }
43  
44  void test_text_style() {
45    fmt::print(fg(fmt::rgb(255, 20, 30)), FMT_STRING("{}"), "rgb(255,20,30)");
46    (void)fmt::format(fg(fmt::rgb(255, 20, 30)), FMT_STRING("{}"),
47                      "rgb(255,20,30)");
48  
49    fmt::text_style ts = fg(fmt::rgb(255, 20, 30));
50    std::string out;
51    fmt::format_to(std::back_inserter(out), ts,
52                   FMT_STRING("rgb(255,20,30){}{}{}"), 1, 2, 3);
53  }
54  
55  void test_range() {
56    std::vector<char> hello = {'h', 'e', 'l', 'l', 'o'};
57    (void)fmt::format(FMT_STRING("{}"), hello);
58  }
59  
60  int main() {
61    test_format_api();
62    test_chrono();
63    test_text_style();
64    test_range();
65  }