LCOV - code coverage report
Current view: top level - test/cctest - test-fixed-dtoa.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 340 340 100.0 %
Date: 2019-04-17 Functions: 4 4 100.0 %

          Line data    Source code
       1             : // Copyright 2010 the V8 project authors. All rights reserved.
       2             : // Redistribution and use in source and binary forms, with or without
       3             : // modification, are permitted provided that the following conditions are
       4             : // met:
       5             : //
       6             : //     * Redistributions of source code must retain the above copyright
       7             : //       notice, this list of conditions and the following disclaimer.
       8             : //     * Redistributions in binary form must reproduce the above
       9             : //       copyright notice, this list of conditions and the following
      10             : //       disclaimer in the documentation and/or other materials provided
      11             : //       with the distribution.
      12             : //     * Neither the name of Google Inc. nor the names of its
      13             : //       contributors may be used to endorse or promote products derived
      14             : //       from this software without specific prior written permission.
      15             : //
      16             : // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      17             : // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      18             : // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
      19             : // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
      20             : // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
      21             : // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
      22             : // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
      23             : // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
      24             : // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
      25             : // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
      26             : // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      27             : 
      28             : #include <stdlib.h>
      29             : 
      30             : #include "src/v8.h"
      31             : 
      32             : #include "src/base/platform/platform.h"
      33             : #include "src/double.h"
      34             : #include "src/fixed-dtoa.h"
      35             : #include "test/cctest/cctest.h"
      36             : #include "test/cctest/gay-fixed.h"
      37             : 
      38             : namespace v8 {
      39             : namespace internal {
      40             : 
      41             : static const int kBufferSize = 500;
      42             : 
      43       26644 : TEST(FastFixedVariousDoubles) {
      44             :   char buffer_container[kBufferSize];
      45             :   Vector<char> buffer(buffer_container, kBufferSize);
      46             :   int length;
      47             :   int point;
      48             : 
      49           5 :   CHECK(FastFixedDtoa(1.0, 1, buffer, &length, &point));
      50           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
      51           5 :   CHECK_EQ(1, point);
      52             : 
      53           5 :   CHECK(FastFixedDtoa(1.0, 15, buffer, &length, &point));
      54           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
      55           5 :   CHECK_EQ(1, point);
      56             : 
      57           5 :   CHECK(FastFixedDtoa(1.0, 0, buffer, &length, &point));
      58           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
      59           5 :   CHECK_EQ(1, point);
      60             : 
      61           5 :   CHECK(FastFixedDtoa(0xFFFFFFFF, 5, buffer, &length, &point));
      62           5 :   CHECK_EQ(0, strcmp("4294967295", buffer.start()));
      63           5 :   CHECK_EQ(10, point);
      64             : 
      65           5 :   CHECK(FastFixedDtoa(4294967296.0, 5, buffer, &length, &point));
      66           5 :   CHECK_EQ(0, strcmp("4294967296", buffer.start()));
      67           5 :   CHECK_EQ(10, point);
      68             : 
      69           5 :   CHECK(FastFixedDtoa(1e21, 5, buffer, &length, &point));
      70           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
      71             :   // CHECK_EQ(22, point);
      72           5 :   CHECK_EQ(22, point);
      73             : 
      74           5 :   CHECK(FastFixedDtoa(999999999999999868928.00, 2, buffer, &length, &point));
      75           5 :   CHECK_EQ(0, strcmp("999999999999999868928", buffer.start()));
      76           5 :   CHECK_EQ(21, point);
      77             : 
      78           5 :   CHECK(FastFixedDtoa(6.9999999999999989514240000e+21, 5, buffer,
      79             :                       &length, &point));
      80           5 :   CHECK_EQ(0, strcmp("6999999999999998951424", buffer.start()));
      81           5 :   CHECK_EQ(22, point);
      82             : 
      83           5 :   CHECK(FastFixedDtoa(1.5, 5, buffer, &length, &point));
      84           5 :   CHECK_EQ(0, strcmp("15", buffer.start()));
      85           5 :   CHECK_EQ(1, point);
      86             : 
      87           5 :   CHECK(FastFixedDtoa(1.55, 5, buffer, &length, &point));
      88           5 :   CHECK_EQ(0, strcmp("155", buffer.start()));
      89           5 :   CHECK_EQ(1, point);
      90             : 
      91           5 :   CHECK(FastFixedDtoa(1.55, 1, buffer, &length, &point));
      92           5 :   CHECK_EQ(0, strcmp("16", buffer.start()));
      93           5 :   CHECK_EQ(1, point);
      94             : 
      95           5 :   CHECK(FastFixedDtoa(1.00000001, 15, buffer, &length, &point));
      96           5 :   CHECK_EQ(0, strcmp("100000001", buffer.start()));
      97           5 :   CHECK_EQ(1, point);
      98             : 
      99           5 :   CHECK(FastFixedDtoa(0.1, 10, buffer, &length, &point));
     100           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     101           5 :   CHECK_EQ(0, point);
     102             : 
     103           5 :   CHECK(FastFixedDtoa(0.01, 10, buffer, &length, &point));
     104           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     105           5 :   CHECK_EQ(-1, point);
     106             : 
     107           5 :   CHECK(FastFixedDtoa(0.001, 10, buffer, &length, &point));
     108           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     109           5 :   CHECK_EQ(-2, point);
     110             : 
     111           5 :   CHECK(FastFixedDtoa(0.0001, 10, buffer, &length, &point));
     112           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     113           5 :   CHECK_EQ(-3, point);
     114             : 
     115           5 :   CHECK(FastFixedDtoa(0.00001, 10, buffer, &length, &point));
     116           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     117           5 :   CHECK_EQ(-4, point);
     118             : 
     119           5 :   CHECK(FastFixedDtoa(0.000001, 10, buffer, &length, &point));
     120           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     121           5 :   CHECK_EQ(-5, point);
     122             : 
     123           5 :   CHECK(FastFixedDtoa(0.0000001, 10, buffer, &length, &point));
     124           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     125           5 :   CHECK_EQ(-6, point);
     126             : 
     127           5 :   CHECK(FastFixedDtoa(0.00000001, 10, buffer, &length, &point));
     128           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     129           5 :   CHECK_EQ(-7, point);
     130             : 
     131           5 :   CHECK(FastFixedDtoa(0.000000001, 10, buffer, &length, &point));
     132           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     133           5 :   CHECK_EQ(-8, point);
     134             : 
     135           5 :   CHECK(FastFixedDtoa(0.0000000001, 15, buffer, &length, &point));
     136           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     137           5 :   CHECK_EQ(-9, point);
     138             : 
     139           5 :   CHECK(FastFixedDtoa(0.00000000001, 15, buffer, &length, &point));
     140           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     141           5 :   CHECK_EQ(-10, point);
     142             : 
     143           5 :   CHECK(FastFixedDtoa(0.000000000001, 15, buffer, &length, &point));
     144           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     145           5 :   CHECK_EQ(-11, point);
     146             : 
     147           5 :   CHECK(FastFixedDtoa(0.0000000000001, 15, buffer, &length, &point));
     148           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     149           5 :   CHECK_EQ(-12, point);
     150             : 
     151           5 :   CHECK(FastFixedDtoa(0.00000000000001, 15, buffer, &length, &point));
     152           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     153           5 :   CHECK_EQ(-13, point);
     154             : 
     155           5 :   CHECK(FastFixedDtoa(0.000000000000001, 20, buffer, &length, &point));
     156           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     157           5 :   CHECK_EQ(-14, point);
     158             : 
     159           5 :   CHECK(FastFixedDtoa(0.0000000000000001, 20, buffer, &length, &point));
     160           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     161           5 :   CHECK_EQ(-15, point);
     162             : 
     163           5 :   CHECK(FastFixedDtoa(0.00000000000000001, 20, buffer, &length, &point));
     164           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     165           5 :   CHECK_EQ(-16, point);
     166             : 
     167           5 :   CHECK(FastFixedDtoa(0.000000000000000001, 20, buffer, &length, &point));
     168           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     169           5 :   CHECK_EQ(-17, point);
     170             : 
     171           5 :   CHECK(FastFixedDtoa(0.0000000000000000001, 20, buffer, &length, &point));
     172           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     173           5 :   CHECK_EQ(-18, point);
     174             : 
     175           5 :   CHECK(FastFixedDtoa(0.00000000000000000001, 20, buffer, &length, &point));
     176           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     177           5 :   CHECK_EQ(-19, point);
     178             : 
     179           5 :   CHECK(FastFixedDtoa(0.10000000004, 10, buffer, &length, &point));
     180           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     181           5 :   CHECK_EQ(0, point);
     182             : 
     183           5 :   CHECK(FastFixedDtoa(0.01000000004, 10, buffer, &length, &point));
     184           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     185           5 :   CHECK_EQ(-1, point);
     186             : 
     187           5 :   CHECK(FastFixedDtoa(0.00100000004, 10, buffer, &length, &point));
     188           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     189           5 :   CHECK_EQ(-2, point);
     190             : 
     191           5 :   CHECK(FastFixedDtoa(0.00010000004, 10, buffer, &length, &point));
     192           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     193           5 :   CHECK_EQ(-3, point);
     194             : 
     195           5 :   CHECK(FastFixedDtoa(0.00001000004, 10, buffer, &length, &point));
     196           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     197           5 :   CHECK_EQ(-4, point);
     198             : 
     199           5 :   CHECK(FastFixedDtoa(0.00000100004, 10, buffer, &length, &point));
     200           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     201           5 :   CHECK_EQ(-5, point);
     202             : 
     203           5 :   CHECK(FastFixedDtoa(0.00000010004, 10, buffer, &length, &point));
     204           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     205           5 :   CHECK_EQ(-6, point);
     206             : 
     207           5 :   CHECK(FastFixedDtoa(0.00000001004, 10, buffer, &length, &point));
     208           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     209           5 :   CHECK_EQ(-7, point);
     210             : 
     211           5 :   CHECK(FastFixedDtoa(0.00000000104, 10, buffer, &length, &point));
     212           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     213           5 :   CHECK_EQ(-8, point);
     214             : 
     215           5 :   CHECK(FastFixedDtoa(0.0000000001000004, 15, buffer, &length, &point));
     216           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     217           5 :   CHECK_EQ(-9, point);
     218             : 
     219           5 :   CHECK(FastFixedDtoa(0.0000000000100004, 15, buffer, &length, &point));
     220           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     221           5 :   CHECK_EQ(-10, point);
     222             : 
     223           5 :   CHECK(FastFixedDtoa(0.0000000000010004, 15, buffer, &length, &point));
     224           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     225           5 :   CHECK_EQ(-11, point);
     226             : 
     227           5 :   CHECK(FastFixedDtoa(0.0000000000001004, 15, buffer, &length, &point));
     228           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     229           5 :   CHECK_EQ(-12, point);
     230             : 
     231           5 :   CHECK(FastFixedDtoa(0.0000000000000104, 15, buffer, &length, &point));
     232           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     233           5 :   CHECK_EQ(-13, point);
     234             : 
     235           5 :   CHECK(FastFixedDtoa(0.000000000000001000004, 20, buffer, &length, &point));
     236           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     237           5 :   CHECK_EQ(-14, point);
     238             : 
     239           5 :   CHECK(FastFixedDtoa(0.000000000000000100004, 20, buffer, &length, &point));
     240           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     241           5 :   CHECK_EQ(-15, point);
     242             : 
     243           5 :   CHECK(FastFixedDtoa(0.000000000000000010004, 20, buffer, &length, &point));
     244           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     245           5 :   CHECK_EQ(-16, point);
     246             : 
     247           5 :   CHECK(FastFixedDtoa(0.000000000000000001004, 20, buffer, &length, &point));
     248           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     249           5 :   CHECK_EQ(-17, point);
     250             : 
     251           5 :   CHECK(FastFixedDtoa(0.000000000000000000104, 20, buffer, &length, &point));
     252           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     253           5 :   CHECK_EQ(-18, point);
     254             : 
     255           5 :   CHECK(FastFixedDtoa(0.000000000000000000014, 20, buffer, &length, &point));
     256           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     257           5 :   CHECK_EQ(-19, point);
     258             : 
     259           5 :   CHECK(FastFixedDtoa(0.10000000006, 10, buffer, &length, &point));
     260           5 :   CHECK_EQ(0, strcmp("1000000001", buffer.start()));
     261           5 :   CHECK_EQ(0, point);
     262             : 
     263           5 :   CHECK(FastFixedDtoa(0.01000000006, 10, buffer, &length, &point));
     264           5 :   CHECK_EQ(0, strcmp("100000001", buffer.start()));
     265           5 :   CHECK_EQ(-1, point);
     266             : 
     267           5 :   CHECK(FastFixedDtoa(0.00100000006, 10, buffer, &length, &point));
     268           5 :   CHECK_EQ(0, strcmp("10000001", buffer.start()));
     269           5 :   CHECK_EQ(-2, point);
     270             : 
     271           5 :   CHECK(FastFixedDtoa(0.00010000006, 10, buffer, &length, &point));
     272           5 :   CHECK_EQ(0, strcmp("1000001", buffer.start()));
     273           5 :   CHECK_EQ(-3, point);
     274             : 
     275           5 :   CHECK(FastFixedDtoa(0.00001000006, 10, buffer, &length, &point));
     276           5 :   CHECK_EQ(0, strcmp("100001", buffer.start()));
     277           5 :   CHECK_EQ(-4, point);
     278             : 
     279           5 :   CHECK(FastFixedDtoa(0.00000100006, 10, buffer, &length, &point));
     280           5 :   CHECK_EQ(0, strcmp("10001", buffer.start()));
     281           5 :   CHECK_EQ(-5, point);
     282             : 
     283           5 :   CHECK(FastFixedDtoa(0.00000010006, 10, buffer, &length, &point));
     284           5 :   CHECK_EQ(0, strcmp("1001", buffer.start()));
     285           5 :   CHECK_EQ(-6, point);
     286             : 
     287           5 :   CHECK(FastFixedDtoa(0.00000001006, 10, buffer, &length, &point));
     288           5 :   CHECK_EQ(0, strcmp("101", buffer.start()));
     289           5 :   CHECK_EQ(-7, point);
     290             : 
     291           5 :   CHECK(FastFixedDtoa(0.00000000106, 10, buffer, &length, &point));
     292           5 :   CHECK_EQ(0, strcmp("11", buffer.start()));
     293           5 :   CHECK_EQ(-8, point);
     294             : 
     295           5 :   CHECK(FastFixedDtoa(0.0000000001000006, 15, buffer, &length, &point));
     296           5 :   CHECK_EQ(0, strcmp("100001", buffer.start()));
     297           5 :   CHECK_EQ(-9, point);
     298             : 
     299           5 :   CHECK(FastFixedDtoa(0.0000000000100006, 15, buffer, &length, &point));
     300           5 :   CHECK_EQ(0, strcmp("10001", buffer.start()));
     301           5 :   CHECK_EQ(-10, point);
     302             : 
     303           5 :   CHECK(FastFixedDtoa(0.0000000000010006, 15, buffer, &length, &point));
     304           5 :   CHECK_EQ(0, strcmp("1001", buffer.start()));
     305           5 :   CHECK_EQ(-11, point);
     306             : 
     307           5 :   CHECK(FastFixedDtoa(0.0000000000001006, 15, buffer, &length, &point));
     308           5 :   CHECK_EQ(0, strcmp("101", buffer.start()));
     309           5 :   CHECK_EQ(-12, point);
     310             : 
     311           5 :   CHECK(FastFixedDtoa(0.0000000000000106, 15, buffer, &length, &point));
     312           5 :   CHECK_EQ(0, strcmp("11", buffer.start()));
     313           5 :   CHECK_EQ(-13, point);
     314             : 
     315           5 :   CHECK(FastFixedDtoa(0.000000000000001000006, 20, buffer, &length, &point));
     316           5 :   CHECK_EQ(0, strcmp("100001", buffer.start()));
     317           5 :   CHECK_EQ(-14, point);
     318             : 
     319           5 :   CHECK(FastFixedDtoa(0.000000000000000100006, 20, buffer, &length, &point));
     320           5 :   CHECK_EQ(0, strcmp("10001", buffer.start()));
     321           5 :   CHECK_EQ(-15, point);
     322             : 
     323           5 :   CHECK(FastFixedDtoa(0.000000000000000010006, 20, buffer, &length, &point));
     324           5 :   CHECK_EQ(0, strcmp("1001", buffer.start()));
     325           5 :   CHECK_EQ(-16, point);
     326             : 
     327           5 :   CHECK(FastFixedDtoa(0.000000000000000001006, 20, buffer, &length, &point));
     328           5 :   CHECK_EQ(0, strcmp("101", buffer.start()));
     329           5 :   CHECK_EQ(-17, point);
     330             : 
     331           5 :   CHECK(FastFixedDtoa(0.000000000000000000106, 20, buffer, &length, &point));
     332           5 :   CHECK_EQ(0, strcmp("11", buffer.start()));
     333           5 :   CHECK_EQ(-18, point);
     334             : 
     335           5 :   CHECK(FastFixedDtoa(0.000000000000000000016, 20, buffer, &length, &point));
     336           5 :   CHECK_EQ(0, strcmp("2", buffer.start()));
     337           5 :   CHECK_EQ(-19, point);
     338             : 
     339           5 :   CHECK(FastFixedDtoa(0.6, 0, buffer, &length, &point));
     340           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     341           5 :   CHECK_EQ(1, point);
     342             : 
     343           5 :   CHECK(FastFixedDtoa(0.96, 1, buffer, &length, &point));
     344           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     345           5 :   CHECK_EQ(1, point);
     346             : 
     347           5 :   CHECK(FastFixedDtoa(0.996, 2, buffer, &length, &point));
     348           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     349           5 :   CHECK_EQ(1, point);
     350             : 
     351           5 :   CHECK(FastFixedDtoa(0.9996, 3, buffer, &length, &point));
     352           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     353           5 :   CHECK_EQ(1, point);
     354             : 
     355           5 :   CHECK(FastFixedDtoa(0.99996, 4, buffer, &length, &point));
     356           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     357           5 :   CHECK_EQ(1, point);
     358             : 
     359           5 :   CHECK(FastFixedDtoa(0.999996, 5, buffer, &length, &point));
     360           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     361           5 :   CHECK_EQ(1, point);
     362             : 
     363           5 :   CHECK(FastFixedDtoa(0.9999996, 6, buffer, &length, &point));
     364           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     365           5 :   CHECK_EQ(1, point);
     366             : 
     367           5 :   CHECK(FastFixedDtoa(0.99999996, 7, buffer, &length, &point));
     368           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     369           5 :   CHECK_EQ(1, point);
     370             : 
     371           5 :   CHECK(FastFixedDtoa(0.999999996, 8, buffer, &length, &point));
     372           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     373           5 :   CHECK_EQ(1, point);
     374             : 
     375           5 :   CHECK(FastFixedDtoa(0.9999999996, 9, buffer, &length, &point));
     376           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     377           5 :   CHECK_EQ(1, point);
     378             : 
     379           5 :   CHECK(FastFixedDtoa(0.99999999996, 10, buffer, &length, &point));
     380           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     381           5 :   CHECK_EQ(1, point);
     382             : 
     383           5 :   CHECK(FastFixedDtoa(0.999999999996, 11, buffer, &length, &point));
     384           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     385           5 :   CHECK_EQ(1, point);
     386             : 
     387           5 :   CHECK(FastFixedDtoa(0.9999999999996, 12, buffer, &length, &point));
     388           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     389           5 :   CHECK_EQ(1, point);
     390             : 
     391           5 :   CHECK(FastFixedDtoa(0.99999999999996, 13, buffer, &length, &point));
     392           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     393           5 :   CHECK_EQ(1, point);
     394             : 
     395           5 :   CHECK(FastFixedDtoa(0.999999999999996, 14, buffer, &length, &point));
     396           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     397           5 :   CHECK_EQ(1, point);
     398             : 
     399           5 :   CHECK(FastFixedDtoa(0.9999999999999996, 15, buffer, &length, &point));
     400           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     401           5 :   CHECK_EQ(1, point);
     402             : 
     403           5 :   CHECK(FastFixedDtoa(0.00999999999999996, 16, buffer, &length, &point));
     404           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     405           5 :   CHECK_EQ(-1, point);
     406             : 
     407           5 :   CHECK(FastFixedDtoa(0.000999999999999996, 17, buffer, &length, &point));
     408           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     409           5 :   CHECK_EQ(-2, point);
     410             : 
     411           5 :   CHECK(FastFixedDtoa(0.0000999999999999996, 18, buffer, &length, &point));
     412           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     413           5 :   CHECK_EQ(-3, point);
     414             : 
     415           5 :   CHECK(FastFixedDtoa(0.00000999999999999996, 19, buffer, &length, &point));
     416           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     417           5 :   CHECK_EQ(-4, point);
     418             : 
     419           5 :   CHECK(FastFixedDtoa(0.000000999999999999996, 20, buffer, &length, &point));
     420           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     421           5 :   CHECK_EQ(-5, point);
     422             : 
     423           5 :   CHECK(FastFixedDtoa(323423.234234, 10, buffer, &length, &point));
     424           5 :   CHECK_EQ(0, strcmp("323423234234", buffer.start()));
     425           5 :   CHECK_EQ(6, point);
     426             : 
     427           5 :   CHECK(FastFixedDtoa(12345678.901234, 4, buffer, &length, &point));
     428           5 :   CHECK_EQ(0, strcmp("123456789012", buffer.start()));
     429           5 :   CHECK_EQ(8, point);
     430             : 
     431           5 :   CHECK(FastFixedDtoa(98765.432109, 5, buffer, &length, &point));
     432           5 :   CHECK_EQ(0, strcmp("9876543211", buffer.start()));
     433           5 :   CHECK_EQ(5, point);
     434             : 
     435           5 :   CHECK(FastFixedDtoa(42, 20, buffer, &length, &point));
     436           5 :   CHECK_EQ(0, strcmp("42", buffer.start()));
     437           5 :   CHECK_EQ(2, point);
     438             : 
     439           5 :   CHECK(FastFixedDtoa(0.5, 0, buffer, &length, &point));
     440           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     441           5 :   CHECK_EQ(1, point);
     442             : 
     443           5 :   CHECK(FastFixedDtoa(1e-23, 10, buffer, &length, &point));
     444           5 :   CHECK_EQ(0, strcmp("", buffer.start()));
     445           5 :   CHECK_EQ(-10, point);
     446             : 
     447           5 :   CHECK(FastFixedDtoa(1e-123, 2, buffer, &length, &point));
     448           5 :   CHECK_EQ(0, strcmp("", buffer.start()));
     449           5 :   CHECK_EQ(-2, point);
     450             : 
     451           5 :   CHECK(FastFixedDtoa(1e-123, 0, buffer, &length, &point));
     452           5 :   CHECK_EQ(0, strcmp("", buffer.start()));
     453           5 :   CHECK_EQ(0, point);
     454             : 
     455           5 :   CHECK(FastFixedDtoa(1e-23, 20, buffer, &length, &point));
     456           5 :   CHECK_EQ(0, strcmp("", buffer.start()));
     457           5 :   CHECK_EQ(-20, point);
     458             : 
     459           5 :   CHECK(FastFixedDtoa(1e-21, 20, buffer, &length, &point));
     460           5 :   CHECK_EQ(0, strcmp("", buffer.start()));
     461           5 :   CHECK_EQ(-20, point);
     462             : 
     463           5 :   CHECK(FastFixedDtoa(1e-22, 20, buffer, &length, &point));
     464           5 :   CHECK_EQ(0, strcmp("", buffer.start()));
     465           5 :   CHECK_EQ(-20, point);
     466             : 
     467           5 :   CHECK(FastFixedDtoa(6e-21, 20, buffer, &length, &point));
     468           5 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     469           5 :   CHECK_EQ(-19, point);
     470             : 
     471           5 :   CHECK(FastFixedDtoa(9.1193616301674545152000000e+19, 0,
     472             :                       buffer, &length, &point));
     473           5 :   CHECK_EQ(0, strcmp("91193616301674545152", buffer.start()));
     474           5 :   CHECK_EQ(20, point);
     475             : 
     476           5 :   CHECK(FastFixedDtoa(4.8184662102767651659096515e-04, 19,
     477             :                       buffer, &length, &point));
     478           5 :   CHECK_EQ(0, strcmp("4818466210276765", buffer.start()));
     479           5 :   CHECK_EQ(-3, point);
     480             : 
     481           5 :   CHECK(FastFixedDtoa(1.9023164229540652612705182e-23, 8,
     482             :                       buffer, &length, &point));
     483           5 :   CHECK_EQ(0, strcmp("", buffer.start()));
     484           5 :   CHECK_EQ(-8, point);
     485             : 
     486           5 :   CHECK(FastFixedDtoa(1000000000000000128.0, 0,
     487             :                       buffer, &length, &point));
     488           5 :   CHECK_EQ(0, strcmp("1000000000000000128", buffer.start()));
     489           5 :   CHECK_EQ(19, point);
     490           5 : }
     491             : 
     492             : 
     493       26644 : TEST(FastFixedDtoaGayFixed) {
     494             :   char buffer_container[kBufferSize];
     495             :   Vector<char> buffer(buffer_container, kBufferSize);
     496             :   bool status;
     497             :   int length;
     498             :   int point;
     499             : 
     500             :   Vector<const PrecomputedFixed> precomputed =
     501           5 :       PrecomputedFixedRepresentations();
     502     1000005 :   for (int i = 0; i < precomputed.length(); ++i) {
     503     1000000 :     const PrecomputedFixed current_test = precomputed[i];
     504             :     double v = current_test.v;
     505             :     int number_digits = current_test.number_digits;
     506             :     status = FastFixedDtoa(v, number_digits,
     507      500000 :                            buffer, &length, &point);
     508      500000 :     CHECK(status);
     509      500000 :     CHECK_EQ(current_test.decimal_point, point);
     510      500000 :     CHECK_GE(number_digits, length - point);
     511      500000 :     CHECK_EQ(0, strcmp(current_test.representation, buffer.start()));
     512             :   }
     513           5 : }
     514             : 
     515             : }  // namespace internal
     516       79917 : }  // namespace v8

Generated by: LCOV version 1.10