| Misha Brukman | 1757a81 | 2009-04-01 21:36:40 +0000 | [diff] [blame] | 1 | //===- llvm/unittest/Support/raw_ostream_test.cpp - raw_ostream tests -----===// | 
| Daniel Dunbar | af41991 | 2009-03-17 16:14:59 +0000 | [diff] [blame] | 2 | // | 
|  | 3 | //                     The LLVM Compiler Infrastructure | 
|  | 4 | // | 
|  | 5 | // This file is distributed under the University of Illinois Open Source | 
|  | 6 | // License. See LICENSE.TXT for details. | 
|  | 7 | // | 
|  | 8 | //===----------------------------------------------------------------------===// | 
|  | 9 |  | 
|  | 10 | #include "gtest/gtest.h" | 
|  | 11 | #include "llvm/Support/raw_ostream.h" | 
|  | 12 |  | 
|  | 13 | using namespace llvm; | 
|  | 14 |  | 
|  | 15 | namespace { | 
|  | 16 |  | 
|  | 17 | template<typename T> std::string printToString(const T &Value) { | 
|  | 18 | std::string res; | 
|  | 19 | llvm::raw_string_ostream(res) << Value; | 
|  | 20 | return res; | 
|  | 21 | } | 
|  | 22 |  | 
|  | 23 | template<typename T> std::string printToStringUnbuffered(const T &Value) { | 
|  | 24 | std::string res; | 
|  | 25 | llvm::raw_string_ostream OS(res); | 
|  | 26 | OS.SetUnbuffered(); | 
|  | 27 | OS << Value; | 
|  | 28 | return res; | 
|  | 29 | } | 
|  | 30 |  | 
|  | 31 | TEST(raw_ostreamTest, Types_Buffered) { | 
|  | 32 | // Char | 
|  | 33 | EXPECT_EQ("c", printToString('c')); | 
|  | 34 |  | 
|  | 35 | // String | 
|  | 36 | EXPECT_EQ("hello", printToString("hello")); | 
|  | 37 | EXPECT_EQ("hello", printToString(std::string("hello"))); | 
|  | 38 |  | 
|  | 39 | // Int | 
|  | 40 | EXPECT_EQ("0", printToString(0)); | 
|  | 41 | EXPECT_EQ("2425", printToString(2425)); | 
|  | 42 | EXPECT_EQ("-2425", printToString(-2425)); | 
|  | 43 |  | 
|  | 44 | // Long long | 
|  | 45 | EXPECT_EQ("0", printToString(0LL)); | 
|  | 46 | EXPECT_EQ("257257257235709", printToString(257257257235709LL)); | 
|  | 47 | EXPECT_EQ("-257257257235709", printToString(-257257257235709LL)); | 
|  | 48 |  | 
|  | 49 | // Double | 
|  | 50 | EXPECT_EQ("1.100000e+00", printToString(1.1)); | 
|  | 51 |  | 
|  | 52 | // void* | 
|  | 53 | EXPECT_EQ("0x0", printToString((void*) 0)); | 
|  | 54 | EXPECT_EQ("0xbeef", printToString((void*) 0xbeef)); | 
|  | 55 | EXPECT_EQ("0xdeadbeef", printToString((void*) 0xdeadbeef)); | 
|  | 56 | } | 
|  | 57 |  | 
|  | 58 | TEST(raw_ostreamTest, Types_Unbuffered) { | 
|  | 59 | // Char | 
|  | 60 | EXPECT_EQ("c", printToStringUnbuffered('c')); | 
|  | 61 |  | 
|  | 62 | // String | 
|  | 63 | EXPECT_EQ("hello", printToStringUnbuffered("hello")); | 
|  | 64 | EXPECT_EQ("hello", printToStringUnbuffered(std::string("hello"))); | 
|  | 65 |  | 
|  | 66 | // Int | 
|  | 67 | EXPECT_EQ("0", printToStringUnbuffered(0)); | 
|  | 68 | EXPECT_EQ("2425", printToStringUnbuffered(2425)); | 
|  | 69 | EXPECT_EQ("-2425", printToStringUnbuffered(-2425)); | 
|  | 70 |  | 
|  | 71 | // Long long | 
|  | 72 | EXPECT_EQ("0", printToStringUnbuffered(0LL)); | 
|  | 73 | EXPECT_EQ("257257257235709", printToStringUnbuffered(257257257235709LL)); | 
|  | 74 | EXPECT_EQ("-257257257235709", printToStringUnbuffered(-257257257235709LL)); | 
|  | 75 |  | 
|  | 76 | // Double | 
|  | 77 | EXPECT_EQ("1.100000e+00", printToStringUnbuffered(1.1)); | 
|  | 78 |  | 
|  | 79 | // void* | 
|  | 80 | EXPECT_EQ("0x0", printToStringUnbuffered((void*) 0)); | 
|  | 81 | EXPECT_EQ("0xbeef", printToStringUnbuffered((void*) 0xbeef)); | 
|  | 82 | EXPECT_EQ("0xdeadbeef", printToStringUnbuffered((void*) 0xdeadbeef)); | 
|  | 83 | } | 
|  | 84 |  | 
|  | 85 | } |