Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(287)

Unified Diff: runtime/vm/bigint_operations_test.cc

Issue 8351050: Print Bigints in decimal format. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/vm/bigint_operations_test.cc
===================================================================
--- runtime/vm/bigint_operations_test.cc (revision 1042)
+++ runtime/vm/bigint_operations_test.cc (working copy)
@@ -367,6 +367,107 @@
}
+TEST_CASE(BigintDecStrings) {
+ {
+ const Bigint& bigint = Bigint::Handle(
+ BigintOperations::NewFromCString("0x123"));
+ const char* str = BigintOperations::ToDecCString(bigint, &ZoneAllocator);
+ EXPECT_STREQ("291", str);
+ }
+
+ {
+ const Bigint& bigint = Bigint::Handle(
+ BigintOperations::NewFromCString("0xaBcEf"));
+ const char* str = BigintOperations::ToDecCString(bigint, &ZoneAllocator);
+ EXPECT_STREQ("703727", str);
+ }
+
+ {
+ const char* in = "0x123456789";
+ const Bigint& bigint = Bigint::Handle(
+ BigintOperations::NewFromCString(in));
+ const char* str = BigintOperations::ToDecCString(bigint, &ZoneAllocator);
+ EXPECT_STREQ("4886718345", str);
+ }
+
+ {
+ const char* in = "0xFFFFFFF";
+ const Bigint& bigint = Bigint::Handle(
+ BigintOperations::NewFromCString(in));
+ const char* str = BigintOperations::ToDecCString(bigint, &ZoneAllocator);
+ EXPECT_STREQ("268435455", str);
+ }
+
+ {
+ const char* in = "0x10000000";
+ const Bigint& bigint = Bigint::Handle(
+ BigintOperations::NewFromCString(in));
+ const char* str = BigintOperations::ToDecCString(bigint, &ZoneAllocator);
+ EXPECT_STREQ("268435456", str);
+ }
+
+ {
+ const char* in = "0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0";
+ const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromCString(in));
+ const char* str = BigintOperations::ToDecCString(bigint, &ZoneAllocator);
+ EXPECT_STREQ("7141946863373290020600059860922167424469804758405880798960",
+ str);
+ }
+
+ {
+ const Bigint& bigint = Bigint::Handle(
+ BigintOperations::NewFromCString("-0x123"));
+ EXPECT(BigintOperations::FitsIntoSmi(bigint));
+ const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint));
+ EXPECT_EQ(-291, smi.Value());
+ }
+
+ {
+ const Bigint& bigint = Bigint::Handle(
+ BigintOperations::NewFromCString("-0x123"));
+ const char* str = BigintOperations::ToDecCString(bigint, &ZoneAllocator);
+ EXPECT_STREQ("-291", str);
+ }
+
+ {
+ const Bigint& bigint = Bigint::Handle(
+ BigintOperations::NewFromCString("-0xaBcEf"));
+ const char* str = BigintOperations::ToDecCString(bigint, &ZoneAllocator);
+ EXPECT_STREQ("-703727", str);
+ }
+
+ {
+ const char* in = "-0x123456789";
+ const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromCString(in));
+ const char* str = BigintOperations::ToDecCString(bigint, &ZoneAllocator);
+ EXPECT_STREQ("-4886718345", str);
+ }
+
+ {
+ const char* in = "-0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0";
+ const Bigint& bigint = Bigint::Handle(BigintOperations::NewFromCString(in));
+ const char* str = BigintOperations::ToDecCString(bigint, &ZoneAllocator);
+ EXPECT_STREQ("-7141946863373290020600059860922167424469804758405880798960",
+ str);
+ }
+
+ {
+ const Bigint& bigint = Bigint::Handle(
+ BigintOperations::NewFromCString("0x00000123"));
+ EXPECT(BigintOperations::FitsIntoSmi(bigint));
+ const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint));
+ EXPECT_EQ(0x123, smi.Value());
+ }
+
+ {
+ const Bigint& bigint = Bigint::Handle(
+ BigintOperations::NewFromCString("0x000000123"));
+ const char* str = BigintOperations::ToDecCString(bigint, &ZoneAllocator);
+ EXPECT_STREQ("291", str);
+ }
+}
+
+
static void TestBigintCompare(const char* a, const char* b, int compare) {
const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a));
const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b));

Powered by Google App Engine
This is Rietveld 408576698