| //===- llvm/unittest/Support/raw_ostream.cpp - raw_ostream unit tests -----===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "gtest/gtest.h" |
| #include "llvm/Support/raw_ostream.h" |
| |
| using namespace llvm; |
| |
| namespace { |
| |
| template<typename T> std::string printToString(const T &Value) { |
| std::string res; |
| llvm::raw_string_ostream(res) << Value; |
| return res; |
| } |
| |
| template<typename T> std::string printToStringUnbuffered(const T &Value) { |
| std::string res; |
| llvm::raw_string_ostream OS(res); |
| OS.SetUnbuffered(); |
| OS << Value; |
| return res; |
| } |
| |
| TEST(raw_ostreamTest, Types_Buffered) { |
| // Char |
| EXPECT_EQ("c", printToString('c')); |
| |
| // String |
| EXPECT_EQ("hello", printToString("hello")); |
| EXPECT_EQ("hello", printToString(std::string("hello"))); |
| |
| // Int |
| EXPECT_EQ("0", printToString(0)); |
| EXPECT_EQ("2425", printToString(2425)); |
| EXPECT_EQ("-2425", printToString(-2425)); |
| |
| // Long long |
| EXPECT_EQ("0", printToString(0LL)); |
| EXPECT_EQ("257257257235709", printToString(257257257235709LL)); |
| EXPECT_EQ("-257257257235709", printToString(-257257257235709LL)); |
| |
| // Double |
| EXPECT_EQ("1.100000e+00", printToString(1.1)); |
| |
| // void* |
| EXPECT_EQ("0x0", printToString((void*) 0)); |
| EXPECT_EQ("0xbeef", printToString((void*) 0xbeef)); |
| EXPECT_EQ("0xdeadbeef", printToString((void*) 0xdeadbeef)); |
| } |
| |
| TEST(raw_ostreamTest, Types_Unbuffered) { |
| // Char |
| EXPECT_EQ("c", printToStringUnbuffered('c')); |
| |
| // String |
| EXPECT_EQ("hello", printToStringUnbuffered("hello")); |
| EXPECT_EQ("hello", printToStringUnbuffered(std::string("hello"))); |
| |
| // Int |
| EXPECT_EQ("0", printToStringUnbuffered(0)); |
| EXPECT_EQ("2425", printToStringUnbuffered(2425)); |
| EXPECT_EQ("-2425", printToStringUnbuffered(-2425)); |
| |
| // Long long |
| EXPECT_EQ("0", printToStringUnbuffered(0LL)); |
| EXPECT_EQ("257257257235709", printToStringUnbuffered(257257257235709LL)); |
| EXPECT_EQ("-257257257235709", printToStringUnbuffered(-257257257235709LL)); |
| |
| // Double |
| EXPECT_EQ("1.100000e+00", printToStringUnbuffered(1.1)); |
| |
| // void* |
| EXPECT_EQ("0x0", printToStringUnbuffered((void*) 0)); |
| EXPECT_EQ("0xbeef", printToStringUnbuffered((void*) 0xbeef)); |
| EXPECT_EQ("0xdeadbeef", printToStringUnbuffered((void*) 0xdeadbeef)); |
| } |
| |
| } |