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: 2017-10-20 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       23724 : TEST(FastFixedVariousDoubles) {
      44             :   char buffer_container[kBufferSize];
      45             :   Vector<char> buffer(buffer_container, kBufferSize);
      46             :   int length;
      47             :   int point;
      48             : 
      49           6 :   CHECK(FastFixedDtoa(1.0, 1, buffer, &length, &point));
      50           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
      51           6 :   CHECK_EQ(1, point);
      52             : 
      53           6 :   CHECK(FastFixedDtoa(1.0, 15, buffer, &length, &point));
      54           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
      55           6 :   CHECK_EQ(1, point);
      56             : 
      57           6 :   CHECK(FastFixedDtoa(1.0, 0, buffer, &length, &point));
      58           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
      59           6 :   CHECK_EQ(1, point);
      60             : 
      61           6 :   CHECK(FastFixedDtoa(0xFFFFFFFF, 5, buffer, &length, &point));
      62           6 :   CHECK_EQ(0, strcmp("4294967295", buffer.start()));
      63           6 :   CHECK_EQ(10, point);
      64             : 
      65           6 :   CHECK(FastFixedDtoa(4294967296.0, 5, buffer, &length, &point));
      66           6 :   CHECK_EQ(0, strcmp("4294967296", buffer.start()));
      67           6 :   CHECK_EQ(10, point);
      68             : 
      69           6 :   CHECK(FastFixedDtoa(1e21, 5, buffer, &length, &point));
      70           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
      71             :   // CHECK_EQ(22, point);
      72           6 :   CHECK_EQ(22, point);
      73             : 
      74           6 :   CHECK(FastFixedDtoa(999999999999999868928.00, 2, buffer, &length, &point));
      75           6 :   CHECK_EQ(0, strcmp("999999999999999868928", buffer.start()));
      76           6 :   CHECK_EQ(21, point);
      77             : 
      78           6 :   CHECK(FastFixedDtoa(6.9999999999999989514240000e+21, 5, buffer,
      79             :                       &length, &point));
      80           6 :   CHECK_EQ(0, strcmp("6999999999999998951424", buffer.start()));
      81           6 :   CHECK_EQ(22, point);
      82             : 
      83           6 :   CHECK(FastFixedDtoa(1.5, 5, buffer, &length, &point));
      84           6 :   CHECK_EQ(0, strcmp("15", buffer.start()));
      85           6 :   CHECK_EQ(1, point);
      86             : 
      87           6 :   CHECK(FastFixedDtoa(1.55, 5, buffer, &length, &point));
      88           6 :   CHECK_EQ(0, strcmp("155", buffer.start()));
      89           6 :   CHECK_EQ(1, point);
      90             : 
      91           6 :   CHECK(FastFixedDtoa(1.55, 1, buffer, &length, &point));
      92           6 :   CHECK_EQ(0, strcmp("16", buffer.start()));
      93           6 :   CHECK_EQ(1, point);
      94             : 
      95           6 :   CHECK(FastFixedDtoa(1.00000001, 15, buffer, &length, &point));
      96           6 :   CHECK_EQ(0, strcmp("100000001", buffer.start()));
      97           6 :   CHECK_EQ(1, point);
      98             : 
      99           6 :   CHECK(FastFixedDtoa(0.1, 10, buffer, &length, &point));
     100           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     101           6 :   CHECK_EQ(0, point);
     102             : 
     103           6 :   CHECK(FastFixedDtoa(0.01, 10, buffer, &length, &point));
     104           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     105           6 :   CHECK_EQ(-1, point);
     106             : 
     107           6 :   CHECK(FastFixedDtoa(0.001, 10, buffer, &length, &point));
     108           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     109           6 :   CHECK_EQ(-2, point);
     110             : 
     111           6 :   CHECK(FastFixedDtoa(0.0001, 10, buffer, &length, &point));
     112           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     113           6 :   CHECK_EQ(-3, point);
     114             : 
     115           6 :   CHECK(FastFixedDtoa(0.00001, 10, buffer, &length, &point));
     116           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     117           6 :   CHECK_EQ(-4, point);
     118             : 
     119           6 :   CHECK(FastFixedDtoa(0.000001, 10, buffer, &length, &point));
     120           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     121           6 :   CHECK_EQ(-5, point);
     122             : 
     123           6 :   CHECK(FastFixedDtoa(0.0000001, 10, buffer, &length, &point));
     124           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     125           6 :   CHECK_EQ(-6, point);
     126             : 
     127           6 :   CHECK(FastFixedDtoa(0.00000001, 10, buffer, &length, &point));
     128           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     129           6 :   CHECK_EQ(-7, point);
     130             : 
     131           6 :   CHECK(FastFixedDtoa(0.000000001, 10, buffer, &length, &point));
     132           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     133           6 :   CHECK_EQ(-8, point);
     134             : 
     135           6 :   CHECK(FastFixedDtoa(0.0000000001, 15, buffer, &length, &point));
     136           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     137           6 :   CHECK_EQ(-9, point);
     138             : 
     139           6 :   CHECK(FastFixedDtoa(0.00000000001, 15, buffer, &length, &point));
     140           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     141           6 :   CHECK_EQ(-10, point);
     142             : 
     143           6 :   CHECK(FastFixedDtoa(0.000000000001, 15, buffer, &length, &point));
     144           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     145           6 :   CHECK_EQ(-11, point);
     146             : 
     147           6 :   CHECK(FastFixedDtoa(0.0000000000001, 15, buffer, &length, &point));
     148           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     149           6 :   CHECK_EQ(-12, point);
     150             : 
     151           6 :   CHECK(FastFixedDtoa(0.00000000000001, 15, buffer, &length, &point));
     152           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     153           6 :   CHECK_EQ(-13, point);
     154             : 
     155           6 :   CHECK(FastFixedDtoa(0.000000000000001, 20, buffer, &length, &point));
     156           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     157           6 :   CHECK_EQ(-14, point);
     158             : 
     159           6 :   CHECK(FastFixedDtoa(0.0000000000000001, 20, buffer, &length, &point));
     160           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     161           6 :   CHECK_EQ(-15, point);
     162             : 
     163           6 :   CHECK(FastFixedDtoa(0.00000000000000001, 20, buffer, &length, &point));
     164           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     165           6 :   CHECK_EQ(-16, point);
     166             : 
     167           6 :   CHECK(FastFixedDtoa(0.000000000000000001, 20, buffer, &length, &point));
     168           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     169           6 :   CHECK_EQ(-17, point);
     170             : 
     171           6 :   CHECK(FastFixedDtoa(0.0000000000000000001, 20, buffer, &length, &point));
     172           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     173           6 :   CHECK_EQ(-18, point);
     174             : 
     175           6 :   CHECK(FastFixedDtoa(0.00000000000000000001, 20, buffer, &length, &point));
     176           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     177           6 :   CHECK_EQ(-19, point);
     178             : 
     179           6 :   CHECK(FastFixedDtoa(0.10000000004, 10, buffer, &length, &point));
     180           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     181           6 :   CHECK_EQ(0, point);
     182             : 
     183           6 :   CHECK(FastFixedDtoa(0.01000000004, 10, buffer, &length, &point));
     184           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     185           6 :   CHECK_EQ(-1, point);
     186             : 
     187           6 :   CHECK(FastFixedDtoa(0.00100000004, 10, buffer, &length, &point));
     188           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     189           6 :   CHECK_EQ(-2, point);
     190             : 
     191           6 :   CHECK(FastFixedDtoa(0.00010000004, 10, buffer, &length, &point));
     192           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     193           6 :   CHECK_EQ(-3, point);
     194             : 
     195           6 :   CHECK(FastFixedDtoa(0.00001000004, 10, buffer, &length, &point));
     196           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     197           6 :   CHECK_EQ(-4, point);
     198             : 
     199           6 :   CHECK(FastFixedDtoa(0.00000100004, 10, buffer, &length, &point));
     200           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     201           6 :   CHECK_EQ(-5, point);
     202             : 
     203           6 :   CHECK(FastFixedDtoa(0.00000010004, 10, buffer, &length, &point));
     204           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     205           6 :   CHECK_EQ(-6, point);
     206             : 
     207           6 :   CHECK(FastFixedDtoa(0.00000001004, 10, buffer, &length, &point));
     208           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     209           6 :   CHECK_EQ(-7, point);
     210             : 
     211           6 :   CHECK(FastFixedDtoa(0.00000000104, 10, buffer, &length, &point));
     212           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     213           6 :   CHECK_EQ(-8, point);
     214             : 
     215           6 :   CHECK(FastFixedDtoa(0.0000000001000004, 15, buffer, &length, &point));
     216           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     217           6 :   CHECK_EQ(-9, point);
     218             : 
     219           6 :   CHECK(FastFixedDtoa(0.0000000000100004, 15, buffer, &length, &point));
     220           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     221           6 :   CHECK_EQ(-10, point);
     222             : 
     223           6 :   CHECK(FastFixedDtoa(0.0000000000010004, 15, buffer, &length, &point));
     224           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     225           6 :   CHECK_EQ(-11, point);
     226             : 
     227           6 :   CHECK(FastFixedDtoa(0.0000000000001004, 15, buffer, &length, &point));
     228           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     229           6 :   CHECK_EQ(-12, point);
     230             : 
     231           6 :   CHECK(FastFixedDtoa(0.0000000000000104, 15, buffer, &length, &point));
     232           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     233           6 :   CHECK_EQ(-13, point);
     234             : 
     235           6 :   CHECK(FastFixedDtoa(0.000000000000001000004, 20, buffer, &length, &point));
     236           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     237           6 :   CHECK_EQ(-14, point);
     238             : 
     239           6 :   CHECK(FastFixedDtoa(0.000000000000000100004, 20, buffer, &length, &point));
     240           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     241           6 :   CHECK_EQ(-15, point);
     242             : 
     243           6 :   CHECK(FastFixedDtoa(0.000000000000000010004, 20, buffer, &length, &point));
     244           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     245           6 :   CHECK_EQ(-16, point);
     246             : 
     247           6 :   CHECK(FastFixedDtoa(0.000000000000000001004, 20, buffer, &length, &point));
     248           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     249           6 :   CHECK_EQ(-17, point);
     250             : 
     251           6 :   CHECK(FastFixedDtoa(0.000000000000000000104, 20, buffer, &length, &point));
     252           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     253           6 :   CHECK_EQ(-18, point);
     254             : 
     255           6 :   CHECK(FastFixedDtoa(0.000000000000000000014, 20, buffer, &length, &point));
     256           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     257           6 :   CHECK_EQ(-19, point);
     258             : 
     259           6 :   CHECK(FastFixedDtoa(0.10000000006, 10, buffer, &length, &point));
     260           6 :   CHECK_EQ(0, strcmp("1000000001", buffer.start()));
     261           6 :   CHECK_EQ(0, point);
     262             : 
     263           6 :   CHECK(FastFixedDtoa(0.01000000006, 10, buffer, &length, &point));
     264           6 :   CHECK_EQ(0, strcmp("100000001", buffer.start()));
     265           6 :   CHECK_EQ(-1, point);
     266             : 
     267           6 :   CHECK(FastFixedDtoa(0.00100000006, 10, buffer, &length, &point));
     268           6 :   CHECK_EQ(0, strcmp("10000001", buffer.start()));
     269           6 :   CHECK_EQ(-2, point);
     270             : 
     271           6 :   CHECK(FastFixedDtoa(0.00010000006, 10, buffer, &length, &point));
     272           6 :   CHECK_EQ(0, strcmp("1000001", buffer.start()));
     273           6 :   CHECK_EQ(-3, point);
     274             : 
     275           6 :   CHECK(FastFixedDtoa(0.00001000006, 10, buffer, &length, &point));
     276           6 :   CHECK_EQ(0, strcmp("100001", buffer.start()));
     277           6 :   CHECK_EQ(-4, point);
     278             : 
     279           6 :   CHECK(FastFixedDtoa(0.00000100006, 10, buffer, &length, &point));
     280           6 :   CHECK_EQ(0, strcmp("10001", buffer.start()));
     281           6 :   CHECK_EQ(-5, point);
     282             : 
     283           6 :   CHECK(FastFixedDtoa(0.00000010006, 10, buffer, &length, &point));
     284           6 :   CHECK_EQ(0, strcmp("1001", buffer.start()));
     285           6 :   CHECK_EQ(-6, point);
     286             : 
     287           6 :   CHECK(FastFixedDtoa(0.00000001006, 10, buffer, &length, &point));
     288           6 :   CHECK_EQ(0, strcmp("101", buffer.start()));
     289           6 :   CHECK_EQ(-7, point);
     290             : 
     291           6 :   CHECK(FastFixedDtoa(0.00000000106, 10, buffer, &length, &point));
     292           6 :   CHECK_EQ(0, strcmp("11", buffer.start()));
     293           6 :   CHECK_EQ(-8, point);
     294             : 
     295           6 :   CHECK(FastFixedDtoa(0.0000000001000006, 15, buffer, &length, &point));
     296           6 :   CHECK_EQ(0, strcmp("100001", buffer.start()));
     297           6 :   CHECK_EQ(-9, point);
     298             : 
     299           6 :   CHECK(FastFixedDtoa(0.0000000000100006, 15, buffer, &length, &point));
     300           6 :   CHECK_EQ(0, strcmp("10001", buffer.start()));
     301           6 :   CHECK_EQ(-10, point);
     302             : 
     303           6 :   CHECK(FastFixedDtoa(0.0000000000010006, 15, buffer, &length, &point));
     304           6 :   CHECK_EQ(0, strcmp("1001", buffer.start()));
     305           6 :   CHECK_EQ(-11, point);
     306             : 
     307           6 :   CHECK(FastFixedDtoa(0.0000000000001006, 15, buffer, &length, &point));
     308           6 :   CHECK_EQ(0, strcmp("101", buffer.start()));
     309           6 :   CHECK_EQ(-12, point);
     310             : 
     311           6 :   CHECK(FastFixedDtoa(0.0000000000000106, 15, buffer, &length, &point));
     312           6 :   CHECK_EQ(0, strcmp("11", buffer.start()));
     313           6 :   CHECK_EQ(-13, point);
     314             : 
     315           6 :   CHECK(FastFixedDtoa(0.000000000000001000006, 20, buffer, &length, &point));
     316           6 :   CHECK_EQ(0, strcmp("100001", buffer.start()));
     317           6 :   CHECK_EQ(-14, point);
     318             : 
     319           6 :   CHECK(FastFixedDtoa(0.000000000000000100006, 20, buffer, &length, &point));
     320           6 :   CHECK_EQ(0, strcmp("10001", buffer.start()));
     321           6 :   CHECK_EQ(-15, point);
     322             : 
     323           6 :   CHECK(FastFixedDtoa(0.000000000000000010006, 20, buffer, &length, &point));
     324           6 :   CHECK_EQ(0, strcmp("1001", buffer.start()));
     325           6 :   CHECK_EQ(-16, point);
     326             : 
     327           6 :   CHECK(FastFixedDtoa(0.000000000000000001006, 20, buffer, &length, &point));
     328           6 :   CHECK_EQ(0, strcmp("101", buffer.start()));
     329           6 :   CHECK_EQ(-17, point);
     330             : 
     331           6 :   CHECK(FastFixedDtoa(0.000000000000000000106, 20, buffer, &length, &point));
     332           6 :   CHECK_EQ(0, strcmp("11", buffer.start()));
     333           6 :   CHECK_EQ(-18, point);
     334             : 
     335           6 :   CHECK(FastFixedDtoa(0.000000000000000000016, 20, buffer, &length, &point));
     336           6 :   CHECK_EQ(0, strcmp("2", buffer.start()));
     337           6 :   CHECK_EQ(-19, point);
     338             : 
     339           6 :   CHECK(FastFixedDtoa(0.6, 0, buffer, &length, &point));
     340           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     341           6 :   CHECK_EQ(1, point);
     342             : 
     343           6 :   CHECK(FastFixedDtoa(0.96, 1, buffer, &length, &point));
     344           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     345           6 :   CHECK_EQ(1, point);
     346             : 
     347           6 :   CHECK(FastFixedDtoa(0.996, 2, buffer, &length, &point));
     348           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     349           6 :   CHECK_EQ(1, point);
     350             : 
     351           6 :   CHECK(FastFixedDtoa(0.9996, 3, buffer, &length, &point));
     352           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     353           6 :   CHECK_EQ(1, point);
     354             : 
     355           6 :   CHECK(FastFixedDtoa(0.99996, 4, buffer, &length, &point));
     356           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     357           6 :   CHECK_EQ(1, point);
     358             : 
     359           6 :   CHECK(FastFixedDtoa(0.999996, 5, buffer, &length, &point));
     360           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     361           6 :   CHECK_EQ(1, point);
     362             : 
     363           6 :   CHECK(FastFixedDtoa(0.9999996, 6, buffer, &length, &point));
     364           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     365           6 :   CHECK_EQ(1, point);
     366             : 
     367           6 :   CHECK(FastFixedDtoa(0.99999996, 7, buffer, &length, &point));
     368           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     369           6 :   CHECK_EQ(1, point);
     370             : 
     371           6 :   CHECK(FastFixedDtoa(0.999999996, 8, buffer, &length, &point));
     372           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     373           6 :   CHECK_EQ(1, point);
     374             : 
     375           6 :   CHECK(FastFixedDtoa(0.9999999996, 9, buffer, &length, &point));
     376           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     377           6 :   CHECK_EQ(1, point);
     378             : 
     379           6 :   CHECK(FastFixedDtoa(0.99999999996, 10, buffer, &length, &point));
     380           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     381           6 :   CHECK_EQ(1, point);
     382             : 
     383           6 :   CHECK(FastFixedDtoa(0.999999999996, 11, buffer, &length, &point));
     384           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     385           6 :   CHECK_EQ(1, point);
     386             : 
     387           6 :   CHECK(FastFixedDtoa(0.9999999999996, 12, buffer, &length, &point));
     388           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     389           6 :   CHECK_EQ(1, point);
     390             : 
     391           6 :   CHECK(FastFixedDtoa(0.99999999999996, 13, buffer, &length, &point));
     392           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     393           6 :   CHECK_EQ(1, point);
     394             : 
     395           6 :   CHECK(FastFixedDtoa(0.999999999999996, 14, buffer, &length, &point));
     396           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     397           6 :   CHECK_EQ(1, point);
     398             : 
     399           6 :   CHECK(FastFixedDtoa(0.9999999999999996, 15, buffer, &length, &point));
     400           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     401           6 :   CHECK_EQ(1, point);
     402             : 
     403           6 :   CHECK(FastFixedDtoa(0.00999999999999996, 16, buffer, &length, &point));
     404           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     405           6 :   CHECK_EQ(-1, point);
     406             : 
     407           6 :   CHECK(FastFixedDtoa(0.000999999999999996, 17, buffer, &length, &point));
     408           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     409           6 :   CHECK_EQ(-2, point);
     410             : 
     411           6 :   CHECK(FastFixedDtoa(0.0000999999999999996, 18, buffer, &length, &point));
     412           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     413           6 :   CHECK_EQ(-3, point);
     414             : 
     415           6 :   CHECK(FastFixedDtoa(0.00000999999999999996, 19, buffer, &length, &point));
     416           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     417           6 :   CHECK_EQ(-4, point);
     418             : 
     419           6 :   CHECK(FastFixedDtoa(0.000000999999999999996, 20, buffer, &length, &point));
     420           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     421           6 :   CHECK_EQ(-5, point);
     422             : 
     423           6 :   CHECK(FastFixedDtoa(323423.234234, 10, buffer, &length, &point));
     424           6 :   CHECK_EQ(0, strcmp("323423234234", buffer.start()));
     425           6 :   CHECK_EQ(6, point);
     426             : 
     427           6 :   CHECK(FastFixedDtoa(12345678.901234, 4, buffer, &length, &point));
     428           6 :   CHECK_EQ(0, strcmp("123456789012", buffer.start()));
     429           6 :   CHECK_EQ(8, point);
     430             : 
     431           6 :   CHECK(FastFixedDtoa(98765.432109, 5, buffer, &length, &point));
     432           6 :   CHECK_EQ(0, strcmp("9876543211", buffer.start()));
     433           6 :   CHECK_EQ(5, point);
     434             : 
     435           6 :   CHECK(FastFixedDtoa(42, 20, buffer, &length, &point));
     436           6 :   CHECK_EQ(0, strcmp("42", buffer.start()));
     437           6 :   CHECK_EQ(2, point);
     438             : 
     439           6 :   CHECK(FastFixedDtoa(0.5, 0, buffer, &length, &point));
     440           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     441           6 :   CHECK_EQ(1, point);
     442             : 
     443           6 :   CHECK(FastFixedDtoa(1e-23, 10, buffer, &length, &point));
     444           6 :   CHECK_EQ(0, strcmp("", buffer.start()));
     445           6 :   CHECK_EQ(-10, point);
     446             : 
     447           6 :   CHECK(FastFixedDtoa(1e-123, 2, buffer, &length, &point));
     448           6 :   CHECK_EQ(0, strcmp("", buffer.start()));
     449           6 :   CHECK_EQ(-2, point);
     450             : 
     451           6 :   CHECK(FastFixedDtoa(1e-123, 0, buffer, &length, &point));
     452           6 :   CHECK_EQ(0, strcmp("", buffer.start()));
     453           6 :   CHECK_EQ(0, point);
     454             : 
     455           6 :   CHECK(FastFixedDtoa(1e-23, 20, buffer, &length, &point));
     456           6 :   CHECK_EQ(0, strcmp("", buffer.start()));
     457           6 :   CHECK_EQ(-20, point);
     458             : 
     459           6 :   CHECK(FastFixedDtoa(1e-21, 20, buffer, &length, &point));
     460           6 :   CHECK_EQ(0, strcmp("", buffer.start()));
     461           6 :   CHECK_EQ(-20, point);
     462             : 
     463           6 :   CHECK(FastFixedDtoa(1e-22, 20, buffer, &length, &point));
     464           6 :   CHECK_EQ(0, strcmp("", buffer.start()));
     465           6 :   CHECK_EQ(-20, point);
     466             : 
     467           6 :   CHECK(FastFixedDtoa(6e-21, 20, buffer, &length, &point));
     468           6 :   CHECK_EQ(0, strcmp("1", buffer.start()));
     469           6 :   CHECK_EQ(-19, point);
     470             : 
     471           6 :   CHECK(FastFixedDtoa(9.1193616301674545152000000e+19, 0,
     472             :                       buffer, &length, &point));
     473           6 :   CHECK_EQ(0, strcmp("91193616301674545152", buffer.start()));
     474           6 :   CHECK_EQ(20, point);
     475             : 
     476           6 :   CHECK(FastFixedDtoa(4.8184662102767651659096515e-04, 19,
     477             :                       buffer, &length, &point));
     478           6 :   CHECK_EQ(0, strcmp("4818466210276765", buffer.start()));
     479           6 :   CHECK_EQ(-3, point);
     480             : 
     481           6 :   CHECK(FastFixedDtoa(1.9023164229540652612705182e-23, 8,
     482             :                       buffer, &length, &point));
     483           6 :   CHECK_EQ(0, strcmp("", buffer.start()));
     484           6 :   CHECK_EQ(-8, point);
     485             : 
     486           6 :   CHECK(FastFixedDtoa(1000000000000000128.0, 0,
     487             :                       buffer, &length, &point));
     488           6 :   CHECK_EQ(0, strcmp("1000000000000000128", buffer.start()));
     489           6 :   CHECK_EQ(19, point);
     490           6 : }
     491             : 
     492             : 
     493       23724 : 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           6 :       PrecomputedFixedRepresentations();
     502     1200012 :   for (int i = 0; i < precomputed.length(); ++i) {
     503     1200000 :     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      600000 :                            buffer, &length, &point);
     508      600000 :     CHECK(status);
     509      600000 :     CHECK_EQ(current_test.decimal_point, point);
     510      600000 :     CHECK_GE(number_digits, length - point);
     511      600000 :     CHECK_EQ(0, strcmp(current_test.representation, buffer.start()));
     512             :   }
     513           6 : }
     514             : 
     515             : }  // namespace internal
     516       71154 : }  // namespace v8

Generated by: LCOV version 1.10