summaryrefslogtreecommitdiff
path: root/unittests
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-09-14 15:54:46 +0000
committerDouglas Gregor <dgregor@apple.com>2011-09-14 15:54:46 +0000
commitdcd999624159842886d4be21efcc3ba0e61bab99 (patch)
treebf6629e3646a1fbddcb8d79fbb3bf5bcaf59b723 /unittests
parent436fe8498a0a3368d2690290e805213a0f114d0d (diff)
downloadllvm-dcd999624159842886d4be21efcc3ba0e61bab99.tar.gz
llvm-dcd999624159842886d4be21efcc3ba0e61bab99.tar.bz2
llvm-dcd999624159842886d4be21efcc3ba0e61bab99.tar.xz
Add APInt support for converting to/from hexatridecimal strings
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139695 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests')
-rw-r--r--unittests/ADT/APIntTest.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/unittests/ADT/APIntTest.cpp b/unittests/ADT/APIntTest.cpp
index c9b3bc51c1..11bb5e1545 100644
--- a/unittests/ADT/APIntTest.cpp
+++ b/unittests/ADT/APIntTest.cpp
@@ -237,6 +237,20 @@ TEST(APIntTest, fromString) {
EXPECT_EQ(APInt(32, uint64_t(-16LL)), APInt(32, "-10", 16));
EXPECT_EQ(APInt(32, uint64_t(-31LL)), APInt(32, "-1F", 16));
EXPECT_EQ(APInt(32, uint64_t(-32LL)), APInt(32, "-20", 16));
+
+ EXPECT_EQ(APInt(32, 0), APInt(32, "0", 36));
+ EXPECT_EQ(APInt(32, 1), APInt(32, "1", 36));
+ EXPECT_EQ(APInt(32, 35), APInt(32, "Z", 36));
+ EXPECT_EQ(APInt(32, 36), APInt(32, "10", 36));
+ EXPECT_EQ(APInt(32, 71), APInt(32, "1Z", 36));
+ EXPECT_EQ(APInt(32, 72), APInt(32, "20", 36));
+
+ EXPECT_EQ(APInt(32, uint64_t(-0LL)), APInt(32, "-0", 36));
+ EXPECT_EQ(APInt(32, uint64_t(-1LL)), APInt(32, "-1", 36));
+ EXPECT_EQ(APInt(32, uint64_t(-35LL)), APInt(32, "-Z", 36));
+ EXPECT_EQ(APInt(32, uint64_t(-36LL)), APInt(32, "-10", 36));
+ EXPECT_EQ(APInt(32, uint64_t(-71LL)), APInt(32, "-1Z", 36));
+ EXPECT_EQ(APInt(32, uint64_t(-72LL)), APInt(32, "-20", 36));
}
TEST(APIntTest, FromArray) {
@@ -340,6 +354,9 @@ TEST(APIntTest, toString) {
APInt(8, 0).toString(S, 16, true, true);
EXPECT_EQ(S.str().str(), "0x0");
S.clear();
+ APInt(8, 0).toString(S, 36, true, true);
+ EXPECT_EQ(S.str().str(), "0");
+ S.clear();
isSigned = false;
APInt(8, 255, isSigned).toString(S, 2, isSigned, true);
@@ -354,6 +371,9 @@ TEST(APIntTest, toString) {
APInt(8, 255, isSigned).toString(S, 16, isSigned, true);
EXPECT_EQ(S.str().str(), "0xFF");
S.clear();
+ APInt(8, 255, isSigned).toString(S, 36, isSigned, true);
+ EXPECT_EQ(S.str().str(), "73");
+ S.clear();
isSigned = true;
APInt(8, 255, isSigned).toString(S, 2, isSigned, true);
@@ -368,6 +388,9 @@ TEST(APIntTest, toString) {
APInt(8, 255, isSigned).toString(S, 16, isSigned, true);
EXPECT_EQ(S.str().str(), "-0x1");
S.clear();
+ APInt(8, 255, isSigned).toString(S, 36, isSigned, true);
+ EXPECT_EQ(S.str().str(), "-1");
+ S.clear();
}
TEST(APIntTest, Log2) {
@@ -407,7 +430,7 @@ TEST(APIntTest, magicu) {
TEST(APIntTest, StringDeath) {
EXPECT_DEATH(APInt(0, "", 0), "Bitwidth too small");
EXPECT_DEATH(APInt(32, "", 0), "Invalid string length");
- EXPECT_DEATH(APInt(32, "0", 0), "Radix should be 2, 8, 10, or 16!");
+ EXPECT_DEATH(APInt(32, "0", 0), "Radix should be 2, 8, 10, 16, or 36!");
EXPECT_DEATH(APInt(32, "", 10), "Invalid string length");
EXPECT_DEATH(APInt(32, "-", 10), "String is only a sign, needs a value.");
EXPECT_DEATH(APInt(1, "1234", 10), "Insufficient bit width");