101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// Copyright 2010 the V8 project authors. All rights reserved. 201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// Redistribution and use in source and binary forms, with or without 301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// modification, are permitted provided that the following conditions are 401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// met: 501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// 601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// * Redistributions of source code must retain the above copyright 701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// notice, this list of conditions and the following disclaimer. 801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// * Redistributions in binary form must reproduce the above 901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// copyright notice, this list of conditions and the following 1001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// disclaimer in the documentation and/or other materials provided 1101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// with the distribution. 1201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// * Neither the name of Google Inc. nor the names of its 1301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// contributors may be used to endorse or promote products derived 1401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// from this software without specific prior written permission. 1501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// 1601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 2801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org#include <stdlib.h> 2901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 30196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/v8.h" 3101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 325de0074a922429f5e0ec2cf140c2d2989bf88140yangguo@chromium.org#include "src/base/platform/platform.h" 33196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/bignum.h" 34196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "test/cctest/cctest.h" 3501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 3601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgusing namespace v8::internal; 3701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 3801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 3901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgstatic const int kBufferSize = 1024; 4001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 4101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgstatic void AssignHexString(Bignum* bignum, const char* str) { 4201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum->AssignHexString(Vector<const char>(str, StrLength(str))); 4301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org} 4401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 4501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 4601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgstatic void AssignDecimalString(Bignum* bignum, const char* str) { 4701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum->AssignDecimalString(Vector<const char>(str, StrLength(str))); 4801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org} 4901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 5001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 5101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgTEST(Assign) { 5201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org char buffer[kBufferSize]; 5301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum bignum; 5401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum bignum2; 5501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0); 5601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 5701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("0", buffer); 5801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0xA); 5901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 6001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("A", buffer); 6101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0x20); 6201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 6301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("20", buffer); 6401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 6501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 6601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt64(0); 6701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 6801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("0", buffer); 6901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt64(0xA); 7001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 7101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("A", buffer); 7201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt64(0x20); 7301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 7401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("20", buffer); 7501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt64(0x100); 7601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 7701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("100", buffer); 7801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 7901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // The first real test, since this will not fit into one bigit. 8001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt64(0x12345678); 8101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 8201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("12345678", buffer); 8301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 8401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org uint64_t big = V8_2PART_UINT64_C(0xFFFFFFFF, FFFFFFFF); 8501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt64(big); 8601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 8701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFFFFFFFFFFFFFF", buffer); 8801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 8901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org big = V8_2PART_UINT64_C(0x12345678, 9ABCDEF0); 9001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt64(big); 9101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 9201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("123456789ABCDEF0", buffer); 9301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 9401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.AssignBignum(bignum); 9501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum2.ToHexString(buffer, kBufferSize)); 9601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("123456789ABCDEF0", buffer); 9701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 9801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "0"); 9901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 10001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("0", buffer); 10101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 10201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1"); 10301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 10401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1", buffer); 10501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 10601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234567890"); 10701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 10801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("499602D2", buffer); 10901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 11001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "0"); 11101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 11201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("0", buffer); 11301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 11401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "123456789ABCDEF0"); 11501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 11601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("123456789ABCDEF0", buffer); 11701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org} 11801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 11901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 12001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgTEST(ShiftLeft) { 12101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org char buffer[kBufferSize]; 12201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum bignum; 12301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "0"); 12401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 12501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 12601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("0", buffer); 12701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 12801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1"); 12901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(1); 13001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 13101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("2", buffer); 13201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 13301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1"); 13401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(4); 13501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 13601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10", buffer); 13701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 13801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1"); 13901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(32); 14001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 14101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("100000000", buffer); 14201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 14301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1"); 14401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(64); 14501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 14601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000000000000", buffer); 14701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 14801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "123456789ABCDEF"); 14901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(64); 15001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 15101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("123456789ABCDEF0000000000000000", buffer); 15201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(1); 15301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 15401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("2468ACF13579BDE0000000000000000", buffer); 15501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org} 15601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 15701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 15801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgTEST(AddUInt64) { 15901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org char buffer[kBufferSize]; 16001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum bignum; 16101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "0"); 16201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(0xA); 16301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 16401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("A", buffer); 16501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 16601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1"); 16701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(0xA); 16801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 16901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("B", buffer); 17001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 17101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1"); 17201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(0x100); 17301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 17401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("101", buffer); 17501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 17601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1"); 17701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(0xFFFF); 17801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 17901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000", buffer); 18001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 18101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFF"); 18201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(0x1); 18301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 18401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000", buffer); 18501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 18601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "10000000000000000000000000000000000000000000"); 18701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(0xFFFF); 18801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 18901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1000000000000000000000000000000000000000FFFF", buffer); 19001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 19101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"); 19201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(0x1); 19301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 19401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("100000000000000000000000000000000000000000000", buffer); 19501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 19601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0x1); 19701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 19801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(1); 19901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 20001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000000000000000000001", buffer); 20101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 20201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0x1); 20301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 20401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(0xFFFF); 20501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 20601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1000000000000000000000FFFF", buffer); 20701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 20801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "0"); 20901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(V8_2PART_UINT64_C(0xA, 00000000)); 21001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 21101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("A00000000", buffer); 21201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 21301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1"); 21401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(V8_2PART_UINT64_C(0xA, 00000000)); 21501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 21601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("A00000001", buffer); 21701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 21801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1"); 21901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(V8_2PART_UINT64_C(0x100, 00000000)); 22001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 22101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000001", buffer); 22201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 22301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1"); 22401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(V8_2PART_UINT64_C(0xFFFF, 00000000)); 22501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 22601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFF00000001", buffer); 22701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 22801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFF"); 22901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(V8_2PART_UINT64_C(0x1, 00000000)); 23001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 23101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10FFFFFFF", buffer); 23201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 23301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "10000000000000000000000000000000000000000000"); 23401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(V8_2PART_UINT64_C(0xFFFF, 00000000)); 23501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 23601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000000000000000000000000000FFFF00000000", buffer); 23701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 23801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"); 23901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(V8_2PART_UINT64_C(0x1, 00000000)); 24001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 24101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1000000000000000000000000000000000000FFFFFFFF", buffer); 24201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 24301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0x1); 24401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 24501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(V8_2PART_UINT64_C(0x1, 00000000)); 24601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 24701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000000000000100000000", buffer); 24801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 24901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0x1); 25001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 25101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddUInt64(V8_2PART_UINT64_C(0xFFFF, 00000000)); 25201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 25301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000000000FFFF00000000", buffer); 25401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org} 25501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 25601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 25701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgTEST(AddBignum) { 25801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org char buffer[kBufferSize]; 25901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum bignum; 26001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum other; 26101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 26201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "1"); 26301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "0"); 26401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(other); 26501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 26601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1", buffer); 26701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 26801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1"); 26901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(other); 27001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 27101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("2", buffer); 27201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 27301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFF"); 27401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(other); 27501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 27601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000", buffer); 27701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 27801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFFFFFFFFF"); 27901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(other); 28001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 28101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("100000000000000", buffer); 28201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 28301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "10000000000000000000000000000000000000000000"); 28401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(other); 28501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 28601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000000000000000000000000000000000000001", buffer); 28701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 28801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "1000000000000"); 28901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 29001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1"); 29101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(other); 29201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 29301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1000000000001", buffer); 29401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 29501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFF"); 29601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(other); 29701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 29801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("100000FFFFFFF", buffer); 29901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 30001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "10000000000000000000000000000000000000000000"); 30101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(other); 30201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 30301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000000000000000000000000001000000000000", buffer); 30401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 30501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"); 30601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(other); 30701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 30801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1000000000000000000000000000000FFFFFFFFFFFF", buffer); 30901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 31001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0x1); 31101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 31201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(other); 31301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 31401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000000001000000000000", buffer); 31501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 31601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org other.ShiftLeft(64); 31701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // other == "10000000000000000000000000000" 31801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 31901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0x1); 32001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(other); 32101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 32201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000000000000000000000001", buffer); 32301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 32401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFF"); 32501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(other); 32601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 32701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1000000000000000000000FFFFFFF", buffer); 32801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 32901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "10000000000000000000000000000000000000000000"); 33001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(other); 33101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 33201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000000000010000000000000000000000000000", buffer); 33301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 33401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"); 33501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(other); 33601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 33701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("100000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF", buffer); 33801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 33901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0x1); 34001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 34101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(other); 34201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 34301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10010000000000000000000000000", buffer); 34401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org} 34501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 34601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 34701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgTEST(SubtractBignum) { 34801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org char buffer[kBufferSize]; 34901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum bignum; 35001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum other; 35101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 35201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1"); 35301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "0"); 35401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.SubtractBignum(other); 35501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 35601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1", buffer); 35701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 35801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "2"); 35901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "0"); 36001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.SubtractBignum(other); 36101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 36201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("2", buffer); 36301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 36401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "10000000"); 36501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "1"); 36601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.SubtractBignum(other); 36701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 36801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFFFFF", buffer); 36901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 37001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "100000000000000"); 37101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "1"); 37201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.SubtractBignum(other); 37301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 37401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFFFFFFFFFFFF", buffer); 37501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 37601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "10000000000000000000000000000000000000000001"); 37701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "1"); 37801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.SubtractBignum(other); 37901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 38001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000000000000000000000000000000000000000", buffer); 38101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 38201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1000000000001"); 38301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "1000000000000"); 38401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.SubtractBignum(other); 38501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 38601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1", buffer); 38701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 38801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "100000FFFFFFF"); 38901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "1000000000000"); 39001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.SubtractBignum(other); 39101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 39201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFFFFF", buffer); 39301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 39401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "10000000000000000000000000000001000000000000"); 39501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "1000000000000"); 39601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.SubtractBignum(other); 39701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 39801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000000000000000000000000000000000000000", buffer); 39901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 40001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1000000000000000000000000000000FFFFFFFFFFFF"); 40101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "1000000000000"); 40201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.SubtractBignum(other); 40301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 40401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", buffer); 40501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 40601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0x1); 40701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 40801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // "10 0000 0000 0000 0000 0000 0000" 40901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "1000000000000"); 41001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.SubtractBignum(other); 41101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 41201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFFFFFFFFFFF000000000000", buffer); 41301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 41401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "1000000000000"); 41501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org other.ShiftLeft(48); 41601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // other == "1000000000000000000000000" 41701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 41801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0x1); 41901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 42001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // bignum == "10000000000000000000000000" 42101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.SubtractBignum(other); 42201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 42301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("F000000000000000000000000", buffer); 42401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 42501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org other.AssignUInt16(0x1); 42601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org other.ShiftLeft(35); 42701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // other == "800000000" 42801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFF"); 42901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(60); 43001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // bignum = FFFFFFF000000000000000 43101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.SubtractBignum(other); 43201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 43301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFFFFEFFFFFF800000000", buffer); 43401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 43501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "10000000000000000000000000000000000000000000"); 43601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.SubtractBignum(other); 43701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 43801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000", buffer); 43901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 44001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"); 44101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.SubtractBignum(other); 44201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 44301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFF", buffer); 44401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org} 44501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 44601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 44701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgTEST(MultiplyUInt32) { 44801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org char buffer[kBufferSize]; 44901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum bignum; 45001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 45101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "0"); 45201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0x25); 45301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 45401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("0", buffer); 45501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 45601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "2"); 45701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0x5); 45801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 45901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("A", buffer); 46001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 46101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "10000000"); 46201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0x9); 46301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 46401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("90000000", buffer); 46501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 46601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "100000000000000"); 46701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0xFFFF); 46801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 46901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFF00000000000000", buffer); 47001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 47101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "100000000000000"); 47201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0xFFFFFFFF); 47301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 47401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFFFFFF00000000000000", buffer); 47501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 47601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1234567ABCD"); 47701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0xFFF); 47801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 47901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("12333335552433", buffer); 48001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 48101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1234567ABCD"); 48201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0xFFFFFFF); 48301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 48401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("12345679998A985433", buffer); 48501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 48601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFFFFFFFFFFF"); 48701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0x2); 48801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 48901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1FFFFFFFFFFFFFFFE", buffer); 49001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 49101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFFFFFFFFFFF"); 49201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0x4); 49301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 49401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("3FFFFFFFFFFFFFFFC", buffer); 49501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 49601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFFFFFFFFFFF"); 49701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0xF); 49801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 49901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("EFFFFFFFFFFFFFFF1", buffer); 50001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 50101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFFFFFFFFFFF"); 50201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0xFFFFFF); 50301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 50401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFFFEFFFFFFFFFF000001", buffer); 50501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 50601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0x1); 50701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 50801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // "10 0000 0000 0000 0000 0000 0000" 50901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(2); 51001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 51101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("20000000000000000000000000", buffer); 51201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 51301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0x1); 51401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 51501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // "10 0000 0000 0000 0000 0000 0000" 51601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0xF); 51701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 51801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("F0000000000000000000000000", buffer); 51901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 52001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0xFFFF); 52101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 52201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // "FFFF0 0000 0000 0000 0000 0000 0000" 52301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0xFFFF); 52401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 52501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFE00010000000000000000000000000", buffer); 52601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 52701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0xFFFF); 52801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 52901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // "FFFF0 0000 0000 0000 0000 0000 0000" 53001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0xFFFFFFFF); 53101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 53201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFEFFFF00010000000000000000000000000", buffer); 53301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 53401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0xFFFF); 53501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 53601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // "FFFF0 0000 0000 0000 0000 0000 0000" 53701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0xFFFFFFFF); 53801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 53901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFEFFFF00010000000000000000000000000", buffer); 54001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 54101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "15611230384529777"); 54201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(10000000); 54301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 54401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("210EDD6D4CDD2580EE80", buffer); 54501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org} 54601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 54701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 54801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgTEST(MultiplyUInt64) { 54901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org char buffer[kBufferSize]; 55001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum bignum; 55101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 55201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "0"); 55301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(0x25); 55401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 55501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("0", buffer); 55601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 55701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "2"); 55801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(0x5); 55901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 56001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("A", buffer); 56101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 56201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "10000000"); 56301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(0x9); 56401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 56501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("90000000", buffer); 56601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 56701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "100000000000000"); 56801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(0xFFFF); 56901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 57001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFF00000000000000", buffer); 57101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 57201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "100000000000000"); 57301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(V8_2PART_UINT64_C(0xFFFFFFFF, FFFFFFFF)); 57401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 57501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFFFFFFFFFFFFFF00000000000000", buffer); 57601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 57701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1234567ABCD"); 57801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(0xFFF); 57901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 58001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("12333335552433", buffer); 58101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 58201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "1234567ABCD"); 58301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(V8_2PART_UINT64_C(0xFF, FFFFFFFF)); 58401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 58501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1234567ABCBDCBA985433", buffer); 58601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 58701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFFFFFFFFFFF"); 58801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(0x2); 58901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 59001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1FFFFFFFFFFFFFFFE", buffer); 59101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 59201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFFFFFFFFFFF"); 59301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(0x4); 59401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 59501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("3FFFFFFFFFFFFFFFC", buffer); 59601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 59701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFFFFFFFFFFF"); 59801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(0xF); 59901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 60001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("EFFFFFFFFFFFFFFF1", buffer); 60101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 60201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFFFFFFFFFFF"); 60301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(V8_2PART_UINT64_C(0xFFFFFFFF, FFFFFFFF)); 60401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 60501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFFFFFFFFFFFFFE0000000000000001", buffer); 60601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 60701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0x1); 60801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 60901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // "10 0000 0000 0000 0000 0000 0000" 61001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(2); 61101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 61201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("20000000000000000000000000", buffer); 61301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 61401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0x1); 61501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 61601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // "10 0000 0000 0000 0000 0000 0000" 61701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(0xF); 61801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 61901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("F0000000000000000000000000", buffer); 62001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 62101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0xFFFF); 62201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 62301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // "FFFF0 0000 0000 0000 0000 0000 0000" 62401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(0xFFFF); 62501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 62601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFE00010000000000000000000000000", buffer); 62701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 62801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0xFFFF); 62901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 63001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // "FFFF0 0000 0000 0000 0000 0000 0000" 63101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(0xFFFFFFFF); 63201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 63301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFEFFFF00010000000000000000000000000", buffer); 63401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 63501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(0xFFFF); 63601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(100); 63701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org // "FFFF0 0000 0000 0000 0000 0000 0000" 63801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(V8_2PART_UINT64_C(0xFFFFFFFF, FFFFFFFF)); 63901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 64001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFEFFFFFFFFFFFF00010000000000000000000000000", buffer); 64101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 64201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "15611230384529777"); 64301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt64(V8_2PART_UINT64_C(0x8ac72304, 89e80000)); 64401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 64501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1E10EE4B11D15A7F3DE7F3C7680000", buffer); 64601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org} 64701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 64801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 64901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgTEST(MultiplyPowerOfTen) { 65001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org char buffer[kBufferSize]; 65101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum bignum; 65201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 65301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 65401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(1); 65501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 65601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("3034", buffer); 65701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 65801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 65901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(2); 66001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 66101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1E208", buffer); 66201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 66301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 66401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(3); 66501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 66601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("12D450", buffer); 66701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 66801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 66901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(4); 67001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 67101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("BC4B20", buffer); 67201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 67301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 67401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(5); 67501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 67601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("75AEF40", buffer); 67701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 67801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 67901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(6); 68001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 68101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("498D5880", buffer); 68201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 68301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 68401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(7); 68501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 68601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("2DF857500", buffer); 68701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 68801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 68901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(8); 69001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 69101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1CBB369200", buffer); 69201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 69301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 69401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(9); 69501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 69601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("11F5021B400", buffer); 69701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 69801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 69901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(10); 70001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 70101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("B3921510800", buffer); 70201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 70301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 70401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(11); 70501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 70601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("703B4D2A5000", buffer); 70701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 70801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 70901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(12); 71001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 71101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("4625103A72000", buffer); 71201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 71301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 71401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(13); 71501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 71601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("2BD72A24874000", buffer); 71701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 71801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 71901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(14); 72001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 72101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1B667A56D488000", buffer); 72201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 72301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 72401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(15); 72501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 72601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("11200C7644D50000", buffer); 72701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 72801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 72901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(16); 73001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 73101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("AB407C9EB0520000", buffer); 73201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 73301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 73401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(17); 73501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 73601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("6B084DE32E3340000", buffer); 73701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 73801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 73901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(18); 74001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 74101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("42E530ADFCE0080000", buffer); 74201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 74301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 74401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(19); 74501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 74601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("29CF3E6CBE0C0500000", buffer); 74701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 74801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 74901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(20); 75001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 75101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1A218703F6C783200000", buffer); 75201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 75301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 75401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(21); 75501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 75601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1054F4627A3CB1F400000", buffer); 75701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 75801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 75901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(22); 76001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 76101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("A3518BD8C65EF38800000", buffer); 76201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 76301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 76401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(23); 76501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 76601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("6612F7677BFB5835000000", buffer); 76701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 76801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 76901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(24); 77001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 77101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("3FCBDAA0AD7D17212000000", buffer); 77201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 77301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 77401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(25); 77501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 77601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("27DF68A46C6E2E74B4000000", buffer); 77701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 77801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 77901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(26); 78001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 78101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("18EBA166C3C4DD08F08000000", buffer); 78201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 78301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 78401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(27); 78501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 78601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("F9344E03A5B0A259650000000", buffer); 78701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 78801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 78901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(28); 79001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 79101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("9BC0B0C2478E6577DF20000000", buffer); 79201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 79301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 79401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(29); 79501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 79601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("61586E796CB8FF6AEB740000000", buffer); 79701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 79801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 79901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(30); 80001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 80101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("3CD7450BE3F39FA2D32880000000", buffer); 80201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 80301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 80401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(31); 80501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 80601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("26068B276E7843C5C3F9500000000", buffer); 80701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 80801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 80901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(50); 81001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 81101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("149D1B4CFED03B23AB5F4E1196EF45C08000000000000", buffer); 81201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 81301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 81401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(100); 81501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 81601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("5827249F27165024FBC47DFCA9359BF316332D1B91ACEECF471FBAB06D9B2" 81701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "0000000000000000000000000", buffer); 81801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 81901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 82001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(200); 82101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 82201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("64C1F5C06C3816AFBF8DAFD5A3D756365BB0FD020E6F084E759C1F7C99E4F" 82301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "55B9ACC667CEC477EB958C2AEEB3C6C19BA35A1AD30B35C51EB72040920000" 82401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "0000000000000000000000000000000000000000000000", buffer); 82501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 82601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 82701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(500); 82801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 82901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("96741A625EB5D7C91039FEB5C5ACD6D9831EDA5B083D800E6019442C8C8223" 83001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "3EAFB3501FE2058062221E15121334928880827DEE1EC337A8B26489F3A40A" 83101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "CB440A2423734472D10BFCE886F41B3AF9F9503013D86D088929CA86EEB4D8" 83201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "B9C831D0BD53327B994A0326227CFD0ECBF2EB48B02387AAE2D4CCCDF1F1A1" 83301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "B8CC4F1FA2C56AD40D0E4DAA9C28CDBF0A549098EA13200000000000000000" 83401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "00000000000000000000000000000000000000000000000000000000000000" 83501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "0000000000000000000000000000000000000000000000", buffer); 83601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 83701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignDecimalString(&bignum, "1234"); 83801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(1000); 83901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 84001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1258040F99B1CD1CC9819C676D413EA50E4A6A8F114BB0C65418C62D399B81" 84101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "6361466CA8E095193E1EE97173553597C96673AF67FAFE27A66E7EF2E5EF2E" 84201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "E3F5F5070CC17FE83BA53D40A66A666A02F9E00B0E11328D2224B8694C7372" 84301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "F3D536A0AD1985911BD361496F268E8B23112500EAF9B88A9BC67B2AB04D38" 84401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "7FEFACD00F5AF4F764F9ABC3ABCDE54612DE38CD90CB6647CA389EA0E86B16" 84501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "BF7A1F34086E05ADBE00BD1673BE00FAC4B34AF1091E8AD50BA675E0381440" 84601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "EA8E9D93E75D816BAB37C9844B1441C38FC65CF30ABB71B36433AF26DD97BD" 84701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "ABBA96C03B4919B8F3515B92826B85462833380DC193D79F69D20DD6038C99" 84801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "6114EF6C446F0BA28CC772ACBA58B81C04F8FFDE7B18C4E5A3ABC51E637FDF" 84901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "6E37FDFF04C940919390F4FF92000000000000000000000000000000000000" 85001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "00000000000000000000000000000000000000000000000000000000000000" 85101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "00000000000000000000000000000000000000000000000000000000000000" 85201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "00000000000000000000000000000000000000000000000000000000000000" 85301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "0000000000000000000000000000", buffer); 85401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 85501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum bignum2; 85601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum2, "3DA774C07FB5DF54284D09C675A492165B830D5DAAEB2A7501" 85701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "DA17CF9DFA1CA2282269F92A25A97314296B717E3DCBB9FE17" 85801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "41A842FE2913F540F40796F2381155763502C58B15AF7A7F88" 85901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "6F744C9164FF409A28F7FA0C41F89ED79C1BE9F322C8578B97" 86001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "841F1CBAA17D901BE1230E3C00E1C643AF32638B5674E01FEA" 86101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "96FC90864E621B856A9E1CE56E6EB545B9C2F8F0CC10DDA88D" 86201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "CC6D282605F8DB67044F2DFD3695E7BA63877AE16701536AE6" 86301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "567C794D0BFE338DFBB42D92D4215AF3BB22BF0A8B283FDDC2" 86401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "C667A10958EA6D2"); 86501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum2.ToHexString(buffer, kBufferSize)); 86601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("3DA774C07FB5DF54284D09C675A492165B830D5DAAEB2A7501" 86701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "DA17CF9DFA1CA2282269F92A25A97314296B717E3DCBB9FE17" 86801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "41A842FE2913F540F40796F2381155763502C58B15AF7A7F88" 86901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "6F744C9164FF409A28F7FA0C41F89ED79C1BE9F322C8578B97" 87001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "841F1CBAA17D901BE1230E3C00E1C643AF32638B5674E01FEA" 87101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "96FC90864E621B856A9E1CE56E6EB545B9C2F8F0CC10DDA88D" 87201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "CC6D282605F8DB67044F2DFD3695E7BA63877AE16701536AE6" 87301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "567C794D0BFE338DFBB42D92D4215AF3BB22BF0A8B283FDDC2" 87401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "C667A10958EA6D2", buffer); 87501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 87601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignBignum(bignum2); 87701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(1); 87801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 87901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("2688A8F84FD1AB949930261C0986DB4DF931E85A8AD2FA8921284EE1C2BC51" 88001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "E55915823BBA5789E7EC99E326EEE69F543ECE890929DED9AC79489884BE57" 88101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "630AD569E121BB76ED8DAC8FB545A8AFDADF1F8860599AFC47A93B6346C191" 88201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "7237F5BD36B73EB29371F4A4EE7A116CB5E8E5808D1BEA4D7F7E3716090C13" 88301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "F29E5DDA53F0FD513362A2D20F6505314B9419DB967F8A8A89589FC43917C3" 88401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "BB892062B17CBE421DB0D47E34ACCCE060D422CFF60DCBD0277EE038BD509C" 88501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "7BC494D8D854F5B76696F927EA99BC00C4A5D7928434", buffer); 88601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 88701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignBignum(bignum2); 88801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(2); 88901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 89001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1815699B31E30B3CDFBE17D185F44910BBBF313896C3DC95B4B9314D19B5B32" 89101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "F57AD71655476B630F3E02DF855502394A74115A5BA2B480BCBCD5F52F6F69D" 89201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "E6C5622CB5152A54788BD9D14B896DE8CB73B53C3800DDACC9C51E0C38FAE76" 89301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "2F9964232872F9C2738E7150C4AE3F1B18F70583172706FAEE26DC5A78C77A2" 89401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "FAA874769E52C01DA5C3499F233ECF3C90293E0FB69695D763DAA3AEDA5535B" 89501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "43DAEEDF6E9528E84CEE0EC000C3C8495C1F9C89F6218AF4C23765261CD5ADD" 89601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "0787351992A01E5BB8F2A015807AE7A6BB92A08", buffer); 89701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 89801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignBignum(bignum2); 89901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(5); 90001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 90101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("5E13A4863ADEE3E5C9FE8D0A73423D695D62D8450CED15A8C9F368952C6DC3" 90201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "F0EE7D82F3D1EFB7AF38A3B3920D410AFCAD563C8F5F39116E141A3C5C14B3" 90301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "58CD73077EA35AAD59F6E24AD98F10D5555ABBFBF33AC361EAF429FD5FBE94" 90401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "17DA9EF2F2956011F9F93646AA38048A681D984ED88127073443247CCC167C" 90501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "B354A32206EF5A733E73CF82D795A1AD598493211A6D613C39515E0E0F6304" 90601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "DCD9C810F3518C7F6A7CB6C81E99E02FCC65E8FDB7B7AE97306CC16A8631CE" 90701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "0A2AEF6568276BE4C176964A73C153FDE018E34CB4C2F40", buffer); 90801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 90901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignBignum(bignum2); 91001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(10); 91101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 91201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("8F8CB8EB51945A7E815809F6121EF2F4E61EF3405CD9432CAD2709749EEAFD" 91301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "1B81E843F14A3667A7BDCCC9E0BB795F63CDFDB62844AC7438976C885A0116" 91401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "29607DA54F9C023CC366570B7637ED0F855D931752038A614922D0923E382C" 91501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "B8E5F6C975672DB76E0DE471937BB9EDB11E28874F1C122D5E1EF38CECE9D0" 91601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "0723056BCBD4F964192B76830634B1D322B7EB0062F3267E84F5C824343A77" 91701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "4B7DCEE6DD464F01EBDC8C671BB18BB4EF4300A42474A6C77243F2A12B03BF" 91801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "0443C38A1C0D2701EDB393135AE0DEC94211F9D4EB51F990800", buffer); 91901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 92001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignBignum(bignum2); 92101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(50); 92201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 92301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("107A8BE345E24407372FC1DE442CBA696BC23C4FFD5B4BDFD9E5C39559815" 92401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "86628CF8472D2D589F2FC2BAD6E0816EC72CBF85CCA663D8A1EC6C51076D8" 92501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "2D247E6C26811B7EC4D4300FB1F91028DCB7B2C4E7A60C151161AA7E65E79" 92601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "B40917B12B2B5FBE7745984D4E8EFA31F9AE6062427B068B144A9CB155873" 92701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "E7C0C9F0115E5AC72DC5A73C4796DB970BF9205AB8C77A6996EB1B417F9D1" 92801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "6232431E6313C392203601B9C22CC10DDA88DCC6D282605F8DB67044F2DFD" 92901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "3695E7BA63877AE16701536AE6567C794D0BFE338DFBB42D924CF964BD2C0" 93001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "F586E03A2FCD35A408000000000000", buffer); 93101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 93201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignBignum(bignum2); 93301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(100); 93401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 93501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("46784A90ACD0ED3E7759CC585FB32D36EB6034A6F78D92604E3BAA5ED3D8B" 93601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "6E60E854439BE448897FB4B7EA5A3D873AA0FCB3CFFD80D0530880E45F511" 93701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "722A50CE7E058B5A6F5464DB7500E34984EE3202A9441F44FA1554C0CEA96" 93801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "B438A36F25E7C9D56D71AE2CD313EC37534DA299AC0854FC48591A7CF3171" 93901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "31265AA4AE62DE32344CE7BEEEF894AE686A2DAAFE5D6D9A10971FFD9C064" 94001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "5079B209E1048F58B5192D41D84336AC4C8C489EEF00939CFC9D55C122036" 94101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "01B9C22CC10DDA88DCC6D282605F8DB67044F2DFD3695E7BA3F67B96D3A32" 94201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "E11FB5561B68744C4035B0800DC166D49D98E3FD1D5BB2000000000000000" 94301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "0000000000", buffer); 94401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 94501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignBignum(bignum2); 94601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(200); 94701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 94801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("508BD351221DF139D72D88CDC0416845A53EE2D0E6B98352509A9AC312F8C" 94901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "6CB1A144889416201E0B6CE66EA3EBE259B5FD79ECFC1FD77963CE516CC7E" 95001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "2FE73D4B5B710C19F6BCB092C7A2FD76286543B8DBD2C596DFF2C896720BA" 95101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "DFF7BC9C366ACEA3A880AEC287C5E6207DF2739B5326FC19D773BD830B109" 95201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "ED36C7086544BF8FDB9D4B73719C2B5BC2F571A5937EC46876CD428281F6B" 95301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "F287E1E07F25C1B1D46BC37324FF657A8B2E0071DB83B86123CA34004F406" 95401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "001082D7945E90C6E8C9A9FEC2B44BE0DDA46E9F52B152E4D1336D2FCFBC9" 95501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "96E30CA0082256737365158FE36482AA7EB9DAF2AB128F10E7551A3CD5BE6" 95601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "0A922F3A7D5EED38B634A7EC95BCF7021BA6820A292000000000000000000" 95701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "00000000000000000000000000000000", buffer); 95801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 95901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignBignum(bignum2); 96001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByPowerOfTen(500); 96101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 96201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("7845F900E475B5086885BAAAE67C8E85185ACFE4633727F82A4B06B5582AC" 96301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "BE933C53357DA0C98C20C5AC900C4D76A97247DF52B79F48F9E35840FB715" 96401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "D392CE303E22622B0CF82D9471B398457DD3196F639CEE8BBD2C146873841" 96501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "F0699E6C41F04FC7A54B48CEB995BEB6F50FE81DE9D87A8D7F849CC523553" 96601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "7B7BBBC1C7CAAFF6E9650BE03B308C6D31012AEF9580F70D3EE2083ADE126" 96701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "8940FA7D6308E239775DFD2F8C97FF7EBD525DAFA6512216F7047A62A93DC" 96801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "38A0165BDC67E250DCC96A0181DE935A70B38704DC71819F02FC5261FF7E1" 96901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "E5F11907678B0A3E519FF4C10A867B0C26CE02BE6960BA8621A87303C101C" 97001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "3F88798BB9F7739655946F8B5744E6B1EAF10B0C5621330F0079209033C69" 97101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "20DE2E2C8D324F0624463735D482BF291926C22A910F5B80FA25170B6B57D" 97201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "8D5928C7BCA3FE87461275F69BD5A1B83181DAAF43E05FC3C72C4E93111B6" 97301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "6205EBF49B28FEDFB7E7526CBDA658A332000000000000000000000000000" 97401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "0000000000000000000000000000000000000000000000000000000000000" 97501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "0000000000000000000000000000000000000", buffer); 97601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org} 97701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 97801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 97901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgTEST(DivideModuloIntBignum) { 98001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org char buffer[kBufferSize]; 98101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum bignum; 98201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum other; 98301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum third; 98401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 98501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(10); 98601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org other.AssignUInt16(2); 98701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(5, bignum.DivideModuloIntBignum(other)); 98801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 98901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("0", buffer); 99001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 99101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(10); 99201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(500); 99301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org other.AssignUInt16(2); 99401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org other.ShiftLeft(500); 99501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(5, bignum.DivideModuloIntBignum(other)); 99601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("0", buffer); 99701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 99801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(11); 99901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org other.AssignUInt16(2); 100001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(5, bignum.DivideModuloIntBignum(other)); 100101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 100201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1", buffer); 100301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 100401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(10); 100501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(500); 100601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org other.AssignUInt16(1); 100701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(other); 100801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org other.AssignUInt16(2); 100901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org other.ShiftLeft(500); 101001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(5, bignum.DivideModuloIntBignum(other)); 101101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 101201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1", buffer); 101301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 101401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(10); 101501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(500); 101601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org other.AssignBignum(bignum); 101701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0x1234); 101801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org third.AssignUInt16(0xFFF); 101901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AddBignum(third); 102001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0x1234, bignum.DivideModuloIntBignum(other)); 102101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 102201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFF", buffer); 102301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 102401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(10); 102501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "1234567890"); 102601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0, bignum.DivideModuloIntBignum(other)); 102701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 102801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("A", buffer); 102901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 103001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "12345678"); 103101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "3789012"); 103201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(5, bignum.DivideModuloIntBignum(other)); 103301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 103401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("D9861E", buffer); 103501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 103601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "70000001"); 103701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "1FFFFFFF"); 103801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(3, bignum.DivideModuloIntBignum(other)); 103901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 104001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000004", buffer); 104101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 104201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "28000000"); 104301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&other, "12A05F20"); 104401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(2, bignum.DivideModuloIntBignum(other)); 104501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 104601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("2BF41C0", buffer); 104701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 104801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(10); 104901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.ShiftLeft(500); 105001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org other.AssignBignum(bignum); 105101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.MultiplyByUInt32(0x1234); 105201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org third.AssignUInt16(0xFFF); 105301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org other.SubtractBignum(third); 105401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0x1234, bignum.DivideModuloIntBignum(other)); 105501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 105601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1232DCC", buffer); 105701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0, bignum.DivideModuloIntBignum(other)); 105801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 105901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1232DCC", buffer); 106001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org} 106101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 106201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 106301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgTEST(Compare) { 106401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum bignum1; 106501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum bignum2; 106601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum1.AssignUInt16(1); 106701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.AssignUInt16(1); 106801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0, Bignum::Compare(bignum1, bignum2)); 106901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(Bignum::Equal(bignum1, bignum2)); 107001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(Bignum::LessEqual(bignum1, bignum2)); 107101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(!Bignum::Less(bignum1, bignum2)); 107201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 107301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum1.AssignUInt16(0); 107401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.AssignUInt16(1); 107501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::Compare(bignum1, bignum2)); 107601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(+1, Bignum::Compare(bignum2, bignum1)); 107701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(!Bignum::Equal(bignum1, bignum2)); 107801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(!Bignum::Equal(bignum2, bignum1)); 107901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(Bignum::LessEqual(bignum1, bignum2)); 108001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(!Bignum::LessEqual(bignum2, bignum1)); 108101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(Bignum::Less(bignum1, bignum2)); 108201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(!Bignum::Less(bignum2, bignum1)); 108301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 108401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum1, "1234567890ABCDEF12345"); 108501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum2, "1234567890ABCDEF12345"); 108601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0, Bignum::Compare(bignum1, bignum2)); 108701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 108801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum1, "1234567890ABCDEF12345"); 108901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum2, "1234567890ABCDEF12346"); 109001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::Compare(bignum1, bignum2)); 109101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(+1, Bignum::Compare(bignum2, bignum1)); 109201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 109301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum1, "1234567890ABCDEF12345"); 109401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum1.ShiftLeft(500); 109501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum2, "1234567890ABCDEF12345"); 109601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.ShiftLeft(500); 109701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0, Bignum::Compare(bignum1, bignum2)); 109801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 109901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum1, "1234567890ABCDEF12345"); 110001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum1.ShiftLeft(500); 110101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum2, "1234567890ABCDEF12346"); 110201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.ShiftLeft(500); 110301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::Compare(bignum1, bignum2)); 110401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(+1, Bignum::Compare(bignum2, bignum1)); 110501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 110601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum1.AssignUInt16(1); 110701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum1.ShiftLeft(64); 110801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum2, "10000000000000000"); 110901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0, Bignum::Compare(bignum1, bignum2)); 111001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0, Bignum::Compare(bignum2, bignum1)); 111101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 111201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum1.AssignUInt16(1); 111301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum1.ShiftLeft(64); 111401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum2, "10000000000000001"); 111501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::Compare(bignum1, bignum2)); 111601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(+1, Bignum::Compare(bignum2, bignum1)); 111701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 111801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum1.AssignUInt16(1); 111901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum1.ShiftLeft(96); 112001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum2, "10000000000000001"); 112101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.ShiftLeft(32); 112201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::Compare(bignum1, bignum2)); 112301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(+1, Bignum::Compare(bignum2, bignum1)); 112401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 112501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum1, "FFFFFFFFFFFFFFFF"); 112601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.AssignUInt16(1); 112701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.ShiftLeft(64); 112801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::Compare(bignum1, bignum2)); 112901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(+1, Bignum::Compare(bignum2, bignum1)); 113001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 113101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum1, "FFFFFFFFFFFFFFFF"); 113201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum1.ShiftLeft(32); 113301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.AssignUInt16(1); 113401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.ShiftLeft(96); 113501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::Compare(bignum1, bignum2)); 113601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(+1, Bignum::Compare(bignum2, bignum1)); 113701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 113801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum1, "FFFFFFFFFFFFFFFF"); 113901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum1.ShiftLeft(32); 114001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.AssignUInt16(1); 114101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.ShiftLeft(95); 114201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(+1, Bignum::Compare(bignum1, bignum2)); 114301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::Compare(bignum2, bignum1)); 114401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 114501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum1, "FFFFFFFFFFFFFFFF"); 114601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum1.ShiftLeft(32); 114701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.AssignUInt16(1); 114801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.ShiftLeft(100); 114901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::Compare(bignum1, bignum2)); 115001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(+1, Bignum::Compare(bignum2, bignum1)); 115101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 115201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum1, "100000000000000"); 115301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.AssignUInt16(1); 115401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.ShiftLeft(14*4); 115501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0, Bignum::Compare(bignum1, bignum2)); 115601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0, Bignum::Compare(bignum2, bignum1)); 115701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 115801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum1, "100000000000001"); 115901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.AssignUInt16(1); 116001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.ShiftLeft(14*4); 116101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(+1, Bignum::Compare(bignum1, bignum2)); 116201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::Compare(bignum2, bignum1)); 116301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 116401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum1, "200000000000000"); 116501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.AssignUInt16(3); 116601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum2.ShiftLeft(14*4); 116701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::Compare(bignum1, bignum2)); 116801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(+1, Bignum::Compare(bignum2, bignum1)); 116901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org} 117001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 117101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 117201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgTEST(PlusCompare) { 117301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum a; 117401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum b; 117501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum c; 117601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.AssignUInt16(1); 117701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.AssignUInt16(0); 117801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org c.AssignUInt16(1); 117901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0, Bignum::PlusCompare(a, b, c)); 118001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(Bignum::PlusEqual(a, b, c)); 118101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(Bignum::PlusLessEqual(a, b, c)); 118201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(!Bignum::PlusLess(a, b, c)); 118301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 118401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.AssignUInt16(0); 118501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.AssignUInt16(0); 118601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org c.AssignUInt16(1); 118701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::PlusCompare(a, b, c)); 118801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(+1, Bignum::PlusCompare(c, b, a)); 118901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(!Bignum::PlusEqual(a, b, c)); 119001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(!Bignum::PlusEqual(c, b, a)); 119101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(Bignum::PlusLessEqual(a, b, c)); 119201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(!Bignum::PlusLessEqual(c, b, a)); 119301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(Bignum::PlusLess(a, b, c)); 119401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(!Bignum::PlusLess(c, b, a)); 119501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 119601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890ABCDEF12345"); 119701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.AssignUInt16(1); 119801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF12345"); 119901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(+1, Bignum::PlusCompare(a, b, c)); 120001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 120101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890ABCDEF12344"); 120201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.AssignUInt16(1); 120301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF12345"); 120401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0, Bignum::PlusCompare(a, b, c)); 120501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 120601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890"); 120701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4); 120801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12345"); 120901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF12345"); 121001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0, Bignum::PlusCompare(a, b, c)); 121101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 121201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890"); 121301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4); 121401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12344"); 121501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF12345"); 121601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::PlusCompare(a, b, c)); 121701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 121801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890"); 121901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4); 122001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12346"); 122101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF12345"); 122201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(1, Bignum::PlusCompare(a, b, c)); 122301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 122401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567891"); 122501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4); 122601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12345"); 122701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF12345"); 122801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(1, Bignum::PlusCompare(a, b, c)); 122901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 123001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567889"); 123101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4); 123201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12345"); 123301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF12345"); 123401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::PlusCompare(a, b, c)); 123501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 123601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890"); 123701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 123801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12345"); 123901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.ShiftLeft(32); 124001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF12345"); 124101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org c.ShiftLeft(32); 124201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0, Bignum::PlusCompare(a, b, c)); 124301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 124401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890"); 124501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 124601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12344"); 124701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.ShiftLeft(32); 124801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF12345"); 124901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org c.ShiftLeft(32); 125001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::PlusCompare(a, b, c)); 125101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 125201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890"); 125301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 125401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12346"); 125501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.ShiftLeft(32); 125601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF12345"); 125701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org c.ShiftLeft(32); 125801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(1, Bignum::PlusCompare(a, b, c)); 125901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 126001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567891"); 126101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 126201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12345"); 126301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.ShiftLeft(32); 126401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF12345"); 126501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org c.ShiftLeft(32); 126601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(1, Bignum::PlusCompare(a, b, c)); 126701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 126801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567889"); 126901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 127001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12345"); 127101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.ShiftLeft(32); 127201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF12345"); 127301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org c.ShiftLeft(32); 127401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::PlusCompare(a, b, c)); 127501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 127601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890"); 127701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 127801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12345"); 127901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.ShiftLeft(32); 128001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF1234500000000"); 128101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0, Bignum::PlusCompare(a, b, c)); 128201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 128301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890"); 128401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 128501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12344"); 128601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.ShiftLeft(32); 128701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF1234500000000"); 128801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::PlusCompare(a, b, c)); 128901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 129001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890"); 129101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 129201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12346"); 129301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.ShiftLeft(32); 129401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF1234500000000"); 129501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(1, Bignum::PlusCompare(a, b, c)); 129601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 129701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567891"); 129801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 129901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12345"); 130001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.ShiftLeft(32); 130101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF1234500000000"); 130201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(1, Bignum::PlusCompare(a, b, c)); 130301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 130401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567889"); 130501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 130601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12345"); 130701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.ShiftLeft(32); 130801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "1234567890ABCDEF1234500000000"); 130901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::PlusCompare(a, b, c)); 131001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 131101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890"); 131201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 131301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12345"); 131401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "123456789000000000ABCDEF12345"); 131501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0, Bignum::PlusCompare(a, b, c)); 131601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 131701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890"); 131801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 131901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12346"); 132001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "123456789000000000ABCDEF12345"); 132101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(1, Bignum::PlusCompare(a, b, c)); 132201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 132301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890"); 132401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 132501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12344"); 132601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "123456789000000000ABCDEF12345"); 132701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::PlusCompare(a, b, c)); 132801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 132901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890"); 133001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 133101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12345"); 133201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.ShiftLeft(16); 133301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "12345678900000ABCDEF123450000"); 133401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(0, Bignum::PlusCompare(a, b, c)); 133501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 133601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890"); 133701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 133801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12344"); 133901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.ShiftLeft(16); 134001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "12345678900000ABCDEF123450000"); 134101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::PlusCompare(a, b, c)); 134201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 134301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890"); 134401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 134501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12345"); 134601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.ShiftLeft(16); 134701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "12345678900000ABCDEF123450001"); 134801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(-1, Bignum::PlusCompare(a, b, c)); 134901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 135001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&a, "1234567890"); 135101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org a.ShiftLeft(11*4 + 32); 135201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&b, "ABCDEF12346"); 135301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org b.ShiftLeft(16); 135401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&c, "12345678900000ABCDEF123450000"); 135501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ(+1, Bignum::PlusCompare(a, b, c)); 135601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org} 135701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 135801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 135901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgTEST(Square) { 136001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum bignum; 136101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org char buffer[kBufferSize]; 136201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 136301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(1); 136401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.Square(); 136501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 136601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1", buffer); 136701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 136801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(2); 136901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.Square(); 137001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 137101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("4", buffer); 137201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 137301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignUInt16(10); 137401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.Square(); 137501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 137601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("64", buffer); 137701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 137801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFF"); 137901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.Square(); 138001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 138101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFFFFE0000001", buffer); 138201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 138301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org AssignHexString(&bignum, "FFFFFFFFFFFFFF"); 138401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.Square(); 138501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 138601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FFFFFFFFFFFFFE00000000000001", buffer); 138701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org} 138801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 138901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 139001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.orgTEST(AssignPowerUInt16) { 139101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org Bignum bignum; 139201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org char buffer[kBufferSize]; 139301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 139401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(1, 0); 139501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 139601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1", buffer); 139701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 139801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(1, 1); 139901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 140001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1", buffer); 140101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 140201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(1, 2); 140301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 140401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1", buffer); 140501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 140601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(2, 0); 140701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 140801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1", buffer); 140901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 141001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(2, 1); 141101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 141201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("2", buffer); 141301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 141401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(2, 2); 141501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 141601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("4", buffer); 141701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 141801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(16, 1); 141901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 142001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10", buffer); 142101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 142201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(16, 2); 142301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 142401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("100", buffer); 142501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 142601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(16, 5); 142701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 142801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("100000", buffer); 142901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 143001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(16, 8); 143101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 143201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("100000000", buffer); 143301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 143401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(16, 16); 143501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 143601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000000000000", buffer); 143701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 143801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(16, 30); 143901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 144001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1000000000000000000000000000000", buffer); 144101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 144201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(10, 0); 144301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 144401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1", buffer); 144501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 144601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(10, 1); 144701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 144801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("A", buffer); 144901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 145001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(10, 2); 145101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 145201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("64", buffer); 145301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 145401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(10, 5); 145501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 145601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("186A0", buffer); 145701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 145801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(10, 8); 145901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 146001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("5F5E100", buffer); 146101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 146201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(10, 16); 146301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 146401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("2386F26FC10000", buffer); 146501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 146601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(10, 30); 146701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 146801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("C9F2C9CD04674EDEA40000000", buffer); 146901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 147001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(10, 31); 147101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 147201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("7E37BE2022C0914B2680000000", buffer); 147301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 147401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(2, 0); 147501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 147601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1", buffer); 147701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 147801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(2, 100); 147901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 148001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("10000000000000000000000000", buffer); 148101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 148201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(17, 0); 148301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 148401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1", buffer); 148501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 148601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(17, 99); 148701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 148801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("1942BB9853FAD924A3D4DD92B89B940E0207BEF05DB9C26BC1B757" 148901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "80BE0C5A2C2990E02A681224F34ED68558CE4C6E33760931", 149001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org buffer); 149101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org 149201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org bignum.AssignPowerUInt16(0xFFFF, 99); 149301fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK(bignum.ToHexString(buffer, kBufferSize)); 149401fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org CHECK_EQ("FF9D12F09B886C54E77E7439C7D2DED2D34F669654C0C2B6B8C288250" 149501fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "5A2211D0E3DC9A61831349EAE674B11D56E3049D7BD79DAAD6C9FA2BA" 149601fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "528E3A794299F2EE9146A324DAFE3E88967A0358233B543E233E575B9" 149701fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "DD4E3AA7942146426C328FF55BFD5C45E0901B1629260AF9AE2F310C5" 149801fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "50959FAF305C30116D537D80CF6EBDBC15C5694062AF1AC3D956D0A41" 149901fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "B7E1B79FF11E21D83387A1CE1F5882B31E4B5D8DE415BDBE6854466DF" 150001fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org "343362267A7E8833119D31D02E18DB5B0E8F6A64B0ED0D0062FFFF", 150101fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org buffer); 150201fe7df37ce9858e3d0069ec6a2d7c667256b95aager@chromium.org} 1503