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

Side by Side Diff: runtime/vm/bigint_test.cc

Issue 2481873005: clang-format runtime/vm (Closed)
Patch Set: Merge Created 4 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « runtime/vm/benchmark_test.cc ('k') | runtime/vm/bit_set.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "platform/assert.h" 5 #include "platform/assert.h"
6 #include "vm/object.h" 6 #include "vm/object.h"
7 #include "vm/object_store.h" 7 #include "vm/object_store.h"
8 #include "vm/unit_test.h" 8 #include "vm/unit_test.h"
9 9
10 namespace dart { 10 namespace dart {
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 bigint = Bigint::NewFromCString("0x377777777777790000001"); 146 bigint = Bigint::NewFromCString("0x377777777777790000001");
147 EXPECT_EQ(4.190942841330715e+24, bigint.AsDoubleValue()); 147 EXPECT_EQ(4.190942841330715e+24, bigint.AsDoubleValue());
148 148
149 bigint = Bigint::NewFromCString("0x377777777777730000000"); 149 bigint = Bigint::NewFromCString("0x377777777777730000000");
150 EXPECT_EQ(4.1909428413307135e+24, bigint.AsDoubleValue()); 150 EXPECT_EQ(4.1909428413307135e+24, bigint.AsDoubleValue());
151 151
152 bigint = Bigint::NewFromCString("0x377777777777730000001"); 152 bigint = Bigint::NewFromCString("0x377777777777730000001");
153 EXPECT_EQ(4.1909428413307135e+24, bigint.AsDoubleValue()); 153 EXPECT_EQ(4.1909428413307135e+24, bigint.AsDoubleValue());
154 154
155 // Reduced precision. 155 // Reduced precision.
156 bigint = Bigint::NewFromCString( 156 bigint = Bigint::NewFromCString("9876543210987654321098765432109876543210");
157 "9876543210987654321098765432109876543210");
158 EXPECT_EQ(9.8765432109876546e+39, bigint.AsDoubleValue()); 157 EXPECT_EQ(9.8765432109876546e+39, bigint.AsDoubleValue());
159 158
160 bigint = Bigint::NewFromCString( 159 bigint = Bigint::NewFromCString(
161 "12345678901234567890123456789012345678901234567890" 160 "12345678901234567890123456789012345678901234567890"
162 "12345678901234567890123456789012345678901234567890" 161 "12345678901234567890123456789012345678901234567890"
163 "12345678901234567890123456789012345678901234567890" 162 "12345678901234567890123456789012345678901234567890"
164 "12345678901234567890123456789012345678901234567890" 163 "12345678901234567890123456789012345678901234567890"
165 "12345678901234567890123456789012345678901234567890" 164 "12345678901234567890123456789012345678901234567890"
166 "12345678901234567890123456789012345678901234567890" 165 "12345678901234567890123456789012345678901234567890"
167 "12345678901234567890123456789012345678901234567890" 166 "12345678901234567890123456789012345678901234567890"
168 "12345678901234567890123456789012345678901234567890" 167 "12345678901234567890123456789012345678901234567890"
169 "12345678901234567890123456789012345678901234567890" 168 "12345678901234567890123456789012345678901234567890"
170 "12345678901234567890123456789012345678901234567890"); 169 "12345678901234567890123456789012345678901234567890");
171 double zero = 0.0; 170 double zero = 0.0;
172 EXPECT_EQ(1.0/zero, bigint.AsDoubleValue()); 171 EXPECT_EQ(1.0 / zero, bigint.AsDoubleValue());
173 172
174 bigint = Bigint::NewFromCString( 173 bigint = Bigint::NewFromCString(
175 "17976931348623157081452742373170435679807056752584" 174 "17976931348623157081452742373170435679807056752584"
176 "49965989174768031572607800285387605895586327668781" 175 "49965989174768031572607800285387605895586327668781"
177 "71540458953514382464234321326889464182768467546703" 176 "71540458953514382464234321326889464182768467546703"
178 "53751698604991057655128207624549009038932894407586" 177 "53751698604991057655128207624549009038932894407586"
179 "85084551339423045832369032229481658085593321233482" 178 "85084551339423045832369032229481658085593321233482"
180 "74797826204144723168738177180919299881250404026184" 179 "74797826204144723168738177180919299881250404026184"
181 "124858368"); 180 "124858368");
182 EXPECT_EQ(1.7976931348623157e308, bigint.AsDoubleValue()); 181 EXPECT_EQ(1.7976931348623157e308, bigint.AsDoubleValue());
183 182
184 bigint = Bigint::NewFromCString( 183 bigint = Bigint::NewFromCString(
185 "17976931348623159077293051907890247336179769789423" 184 "17976931348623159077293051907890247336179769789423"
186 "06572734300811577326758055009631327084773224075360" 185 "06572734300811577326758055009631327084773224075360"
187 "21120113879871393357658789768814416622492847430639" 186 "21120113879871393357658789768814416622492847430639"
188 "47412437776789342486548527630221960124609411945308" 187 "47412437776789342486548527630221960124609411945308"
189 "29520850057688381506823424628814739131105408272371" 188 "29520850057688381506823424628814739131105408272371"
190 "63350510684586298239947245938479716304835356329624" 189 "63350510684586298239947245938479716304835356329624"
191 "224137216"); 190 "224137216");
192 EXPECT_EQ(1.0/zero, bigint.AsDoubleValue()); 191 EXPECT_EQ(1.0 / zero, bigint.AsDoubleValue());
193 192
194 bigint = Bigint::NewFromCString( 193 bigint = Bigint::NewFromCString(
195 "17976931348623158079372897140530341507993413271003" 194 "17976931348623158079372897140530341507993413271003"
196 "78269361737789804449682927647509466490179775872070" 195 "78269361737789804449682927647509466490179775872070"
197 "96330286416692887910946555547851940402630657488671" 196 "96330286416692887910946555547851940402630657488671"
198 "50582068190890200070838367627385484581771153176447" 197 "50582068190890200070838367627385484581771153176447"
199 "57302700698555713669596228429148198608349364752927" 198 "57302700698555713669596228429148198608349364752927"
200 "19074168444365510704342711559699508093042880177904" 199 "19074168444365510704342711559699508093042880177904"
201 "174497792"); 200 "174497792");
202 EXPECT_EQ(1.0/zero, bigint.AsDoubleValue()); 201 EXPECT_EQ(1.0 / zero, bigint.AsDoubleValue());
203 202
204 bigint = Bigint::NewFromCString( 203 bigint = Bigint::NewFromCString(
205 "17976931348623158079372897140530341507993413271003" 204 "17976931348623158079372897140530341507993413271003"
206 "78269361737789804449682927647509466490179775872070" 205 "78269361737789804449682927647509466490179775872070"
207 "96330286416692887910946555547851940402630657488671" 206 "96330286416692887910946555547851940402630657488671"
208 "50582068190890200070838367627385484581771153176447" 207 "50582068190890200070838367627385484581771153176447"
209 "57302700698555713669596228429148198608349364752927" 208 "57302700698555713669596228429148198608349364752927"
210 "19074168444365510704342711559699508093042880177904" 209 "19074168444365510704342711559699508093042880177904"
211 "174497791"); 210 "174497791");
212 EXPECT_EQ(1.7976931348623157e308, bigint.AsDoubleValue()); 211 EXPECT_EQ(1.7976931348623157e308, bigint.AsDoubleValue());
213 212
214 bigint = Bigint::NewFromCString("100000000000000000000000"); 213 bigint = Bigint::NewFromCString("100000000000000000000000");
215 EXPECT_EQ(1e+23, bigint.AsDoubleValue()); 214 EXPECT_EQ(1e+23, bigint.AsDoubleValue());
216 215
217 bigint = Bigint::NewFromCString("100000000000000000000001"); 216 bigint = Bigint::NewFromCString("100000000000000000000001");
218 EXPECT_EQ(1.0000000000000001e+23, bigint.AsDoubleValue()); 217 EXPECT_EQ(1.0000000000000001e+23, bigint.AsDoubleValue());
219 218
220 // Same but shifted 64 bits to the left. 219 // Same but shifted 64 bits to the left.
221 bigint = Bigint::NewFromCString( 220 bigint =
222 "1844674407370955161600000000000000000000000"); 221 Bigint::NewFromCString("1844674407370955161600000000000000000000000");
223 EXPECT_EQ(1.844674407370955e+42, bigint.AsDoubleValue()); 222 EXPECT_EQ(1.844674407370955e+42, bigint.AsDoubleValue());
224 223
225 bigint = Bigint::NewFromCString( 224 bigint =
226 "1844674407370955161600000000000000000000001"); 225 Bigint::NewFromCString("1844674407370955161600000000000000000000001");
227 EXPECT_EQ(1.8446744073709553e+42, bigint.AsDoubleValue()); 226 EXPECT_EQ(1.8446744073709553e+42, bigint.AsDoubleValue());
228 } 227 }
229 228
230 229
231 TEST_CASE(BigintHexStrings) { 230 TEST_CASE(BigintHexStrings) {
232 Zone* zone = Thread::Current()->zone(); 231 Zone* zone = Thread::Current()->zone();
233 { 232 {
234 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString("0x0")); 233 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString("0x0"));
235 EXPECT(bigint.FitsIntoSmi()); 234 EXPECT(bigint.FitsIntoSmi());
236 EXPECT_EQ(0, bigint.AsInt64Value()); 235 EXPECT_EQ(0, bigint.AsInt64Value());
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 EXPECT_STREQ(in, str); 319 EXPECT_STREQ(in, str);
321 } 320 }
322 321
323 { 322 {
324 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString("0x00000123")); 323 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString("0x00000123"));
325 EXPECT(bigint.FitsIntoSmi()); 324 EXPECT(bigint.FitsIntoSmi());
326 EXPECT_EQ(0x123, bigint.AsInt64Value()); 325 EXPECT_EQ(0x123, bigint.AsInt64Value());
327 } 326 }
328 327
329 { 328 {
330 const Bigint& bigint = Bigint::Handle( 329 const Bigint& bigint =
331 Bigint::NewFromCString("0x000000123")); 330 Bigint::Handle(Bigint::NewFromCString("0x000000123"));
332 const char* str = bigint.ToHexCString(zone); 331 const char* str = bigint.ToHexCString(zone);
333 EXPECT_STREQ("0x123", str); 332 EXPECT_STREQ("0x123", str);
334 } 333 }
335 334
336 { 335 {
337 const Bigint& bigint = Bigint::Handle( 336 const Bigint& bigint =
338 Bigint::NewFromCString("0x0000aBcEf")); 337 Bigint::Handle(Bigint::NewFromCString("0x0000aBcEf"));
339 const char* str = bigint.ToHexCString(zone); 338 const char* str = bigint.ToHexCString(zone);
340 EXPECT_STREQ("0xABCEF", str); 339 EXPECT_STREQ("0xABCEF", str);
341 } 340 }
342 341
343 { 342 {
344 const char* in = "0x00000000000000000000000000000000000000000000123456789"; 343 const char* in = "0x00000000000000000000000000000000000000000000123456789";
345 const char* out = "0x123456789"; 344 const char* out = "0x123456789";
346 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(in)); 345 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(in));
347 const char* str = bigint.ToHexCString(zone); 346 const char* str = bigint.ToHexCString(zone);
348 EXPECT_STREQ(out, str); 347 EXPECT_STREQ(out, str);
349 } 348 }
350 349
351 { 350 {
352 const char* in = "0x00000123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0"; 351 const char* in = "0x00000123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0";
353 const char* out = "0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0"; 352 const char* out = "0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0";
354 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(in)); 353 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(in));
355 const char* str = bigint.ToHexCString(zone); 354 const char* str = bigint.ToHexCString(zone);
356 EXPECT_STREQ(out, str); 355 EXPECT_STREQ(out, str);
357 } 356 }
358 357
359 { 358 {
360 const Bigint& bigint = Bigint::Handle( 359 const Bigint& bigint =
361 Bigint::NewFromCString("-0x00000123")); 360 Bigint::Handle(Bigint::NewFromCString("-0x00000123"));
362 EXPECT(bigint.FitsIntoSmi()); 361 EXPECT(bigint.FitsIntoSmi());
363 EXPECT_EQ(-0x123, bigint.AsInt64Value()); 362 EXPECT_EQ(-0x123, bigint.AsInt64Value());
364 } 363 }
365 364
366 { 365 {
367 const Bigint& bigint = Bigint::Handle( 366 const Bigint& bigint =
368 Bigint::NewFromCString("-0x00000123")); 367 Bigint::Handle(Bigint::NewFromCString("-0x00000123"));
369 const char* str = bigint.ToHexCString(zone); 368 const char* str = bigint.ToHexCString(zone);
370 EXPECT_STREQ("-0x123", str); 369 EXPECT_STREQ("-0x123", str);
371 } 370 }
372 371
373 { 372 {
374 const Bigint& bigint = Bigint::Handle( 373 const Bigint& bigint =
375 Bigint::NewFromCString("-0x000aBcEf")); 374 Bigint::Handle(Bigint::NewFromCString("-0x000aBcEf"));
376 const char* str = bigint.ToHexCString(zone); 375 const char* str = bigint.ToHexCString(zone);
377 EXPECT_STREQ("-0xABCEF", str); 376 EXPECT_STREQ("-0xABCEF", str);
378 } 377 }
379 378
380 { 379 {
381 const char* in = "-0x00000000000000000000000000000000000000000000123456789"; 380 const char* in = "-0x00000000000000000000000000000000000000000000123456789";
382 const char* out = "-0x123456789"; 381 const char* out = "-0x123456789";
383 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(in)); 382 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(in));
384 const char* str = bigint.ToHexCString(zone); 383 const char* str = bigint.ToHexCString(zone);
385 EXPECT_STREQ(out, str); 384 EXPECT_STREQ(out, str);
386 } 385 }
387 386
388 { 387 {
389 const char* in = "-0x0000123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0"; 388 const char* in = "-0x0000123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0";
390 const char* out = "-0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0"; 389 const char* out = "-0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0";
391 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(in)); 390 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(in));
392 const char* str = bigint.ToHexCString(zone); 391 const char* str = bigint.ToHexCString(zone);
393 EXPECT_STREQ(out, str); 392 EXPECT_STREQ(out, str);
394 } 393 }
395 { 394 {
396 const char* test = "12345678901234567890"; 395 const char* test = "12345678901234567890";
397 const char* out = "0xAB54A98CEB1F0AD2"; 396 const char* out = "0xAB54A98CEB1F0AD2";
398 const Bigint& bigint = Bigint::Handle( 397 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(test));
399 Bigint::NewFromCString(test));
400 const char* str = bigint.ToHexCString(zone); 398 const char* str = bigint.ToHexCString(zone);
401 EXPECT_STREQ(out, str); 399 EXPECT_STREQ(out, str);
402 } 400 }
403 { 401 {
404 const char* test = "-12345678901234567890"; 402 const char* test = "-12345678901234567890";
405 const char* out = "-0xAB54A98CEB1F0AD2"; 403 const char* out = "-0xAB54A98CEB1F0AD2";
406 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(test)); 404 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(test));
407 const char* str = bigint.ToHexCString(zone); 405 const char* str = bigint.ToHexCString(zone);
408 EXPECT_STREQ(out, str); 406 EXPECT_STREQ(out, str);
409 } 407 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(in)); 447 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(in));
450 const char* str = bigint.ToDecCString(zone); 448 const char* str = bigint.ToDecCString(zone);
451 EXPECT_STREQ("268435456", str); 449 EXPECT_STREQ("268435456", str);
452 } 450 }
453 451
454 { 452 {
455 const char* in = "0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0"; 453 const char* in = "0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0";
456 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(in)); 454 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(in));
457 const char* str = bigint.ToDecCString(zone); 455 const char* str = bigint.ToDecCString(zone);
458 EXPECT_STREQ("7141946863373290020600059860922167424469804758405880798960", 456 EXPECT_STREQ("7141946863373290020600059860922167424469804758405880798960",
459 str); 457 str);
460 } 458 }
461 459
462 { 460 {
463 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString("-0x123")); 461 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString("-0x123"));
464 EXPECT(bigint.FitsIntoSmi()); 462 EXPECT(bigint.FitsIntoSmi());
465 EXPECT_EQ(-291, bigint.AsInt64Value()); 463 EXPECT_EQ(-291, bigint.AsInt64Value());
466 } 464 }
467 465
468 { 466 {
469 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString("-0x123")); 467 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString("-0x123"));
(...skipping 12 matching lines...) Expand all
482 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(in)); 480 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(in));
483 const char* str = bigint.ToDecCString(zone); 481 const char* str = bigint.ToDecCString(zone);
484 EXPECT_STREQ("-4886718345", str); 482 EXPECT_STREQ("-4886718345", str);
485 } 483 }
486 484
487 { 485 {
488 const char* in = "-0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0"; 486 const char* in = "-0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0";
489 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(in)); 487 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString(in));
490 const char* str = bigint.ToDecCString(zone); 488 const char* str = bigint.ToDecCString(zone);
491 EXPECT_STREQ("-7141946863373290020600059860922167424469804758405880798960", 489 EXPECT_STREQ("-7141946863373290020600059860922167424469804758405880798960",
492 str); 490 str);
493 } 491 }
494 492
495 { 493 {
496 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString("0x00000123")); 494 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString("0x00000123"));
497 EXPECT(bigint.FitsIntoSmi()); 495 EXPECT(bigint.FitsIntoSmi());
498 EXPECT_EQ(0x123, bigint.AsInt64Value()); 496 EXPECT_EQ(0x123, bigint.AsInt64Value());
499 } 497 }
500 498
501 { 499 {
502 const Bigint& bigint = Bigint::Handle( 500 const Bigint& bigint =
503 Bigint::NewFromCString("0x000000123")); 501 Bigint::Handle(Bigint::NewFromCString("0x000000123"));
504 const char* str = bigint.ToDecCString(zone); 502 const char* str = bigint.ToDecCString(zone);
505 EXPECT_STREQ("291", str); 503 EXPECT_STREQ("291", str);
506 } 504 }
507 505
508 { 506 {
509 const Bigint& bigint = Bigint::Handle( 507 const Bigint& bigint = Bigint::Handle(
510 Bigint::NewFromCString("100000000000000000000000000000000")); 508 Bigint::NewFromCString("100000000000000000000000000000000"));
511 const char* str = bigint.ToDecCString(zone); 509 const char* str = bigint.ToDecCString(zone);
512 EXPECT_STREQ("100000000000000000000000000000000", str); 510 EXPECT_STREQ("100000000000000000000000000000000", str);
513 } 511 }
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 EXPECT_STREQ("-0xABCDE", str); 634 EXPECT_STREQ("-0xABCDE", str);
637 } 635 }
638 636
639 { 637 {
640 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString("-11259375")); 638 const Bigint& bigint = Bigint::Handle(Bigint::NewFromCString("-11259375"));
641 const char* str = bigint.ToHexCString(zone); 639 const char* str = bigint.ToHexCString(zone);
642 EXPECT_STREQ("-0xABCDEF", str); 640 EXPECT_STREQ("-0xABCDEF", str);
643 } 641 }
644 642
645 { 643 {
646 const Bigint& bigint = Bigint::Handle( 644 const Bigint& bigint =
647 Bigint::NewFromCString("-1311768467463790320")); 645 Bigint::Handle(Bigint::NewFromCString("-1311768467463790320"));
648 const char* str = bigint.ToHexCString(zone); 646 const char* str = bigint.ToHexCString(zone);
649 EXPECT_STREQ("-0x123456789ABCDEF0", str); 647 EXPECT_STREQ("-0x123456789ABCDEF0", str);
650 } 648 }
651 } 649 }
652 650
653 } // namespace dart 651 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/benchmark_test.cc ('k') | runtime/vm/bit_set.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698