X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=folly%2Ftest%2FConvTest.cpp;h=f48c69c39e34838a89f9c63355f54c69bb854884;hb=427f1e4c658379e434f78f6e29c9f1ffff83cda0;hp=1cde6198f4b5c0b8acae7bc9036bc99a90f5dac8;hpb=4f0bc5272f90bfcb7a18e6a1a4359a202a1b8cf9;p=folly.git diff --git a/folly/test/ConvTest.cpp b/folly/test/ConvTest.cpp index 1cde6198..f48c69c3 100644 --- a/folly/test/ConvTest.cpp +++ b/folly/test/ConvTest.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2012 Facebook, Inc. + * Copyright 2013 Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -97,9 +97,58 @@ void testIntegral2String() { testIntegral2String(); } +#if FOLLY_HAVE_INT128_T +template +void test128Bit2String() { + typedef unsigned __int128 Uint; + typedef __int128 Sint; + + EXPECT_EQ(detail::digitsEnough(), 39); + + Uint value = 123; + EXPECT_EQ(to(value), "123"); + Sint svalue = 123; + EXPECT_EQ(to(svalue), "123"); + svalue = -123; + EXPECT_EQ(to(svalue), "-123"); + + value = __int128(1) << 64; + EXPECT_EQ(to(value), "18446744073709551616"); + + svalue = -(__int128(1) << 64); + EXPECT_EQ(to(svalue), "-18446744073709551616"); + + value = 0; + EXPECT_EQ(to(value), "0"); + + svalue = 0; + EXPECT_EQ(to(svalue), "0"); + + // TODO: the following do not compile to<__int128> ... + +#if 0 + value = numeric_limits::min(); + EXPECT_EQ(to(to(value)), value); + value = numeric_limits::max(); + EXPECT_EQ(to(to(value)), value); + + svalue = numeric_limits::min(); + EXPECT_EQ(to(to(svalue)), svalue); + value = numeric_limits::max(); + EXPECT_EQ(to(to(svalue)), svalue); +#endif +} + +#endif + TEST(Conv, Integral2String) { testIntegral2String(); testIntegral2String(); + +#if FOLLY_HAVE_INT128_T + test128Bit2String(); + test128Bit2String(); +#endif } template @@ -354,6 +403,22 @@ void testVariadicTo() { EXPECT_EQ(s, "Lorem ipsum 1234 dolor amet 567.89."); } +template +void testVariadicToDelim() { + String s; + toAppendDelim(":", &s); + toAppendDelim( + ":", "Lorem ipsum ", 1234, String(" dolor amet "), 567.89, '!', &s); + EXPECT_EQ(s, "Lorem ipsum :1234: dolor amet :567.89:!"); + + s = toDelim(':'); + EXPECT_TRUE(s.empty()); + + s = toDelim( + ":", "Lorem ipsum ", nullptr, 1234, " dolor amet ", 567.89, '.'); + EXPECT_EQ(s, "Lorem ipsum ::1234: dolor amet :567.89:."); +} + TEST(Conv, NullString) { string s1 = to((char *) NULL); EXPECT_TRUE(s1.empty()); @@ -366,6 +431,11 @@ TEST(Conv, VariadicTo) { testVariadicTo(); } +TEST(Conv, VariadicToDelim) { + testVariadicToDelim(); + testVariadicToDelim(); +} + template void testDoubleToString() { EXPECT_EQ(to(0.0), "0");