LCOV - code coverage report
Current view: top level - test/cctest - test-intl.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 15 16 93.8 %
Date: 2017-10-20 Functions: 4 5 80.0 %

          Line data    Source code
       1             : // Copyright 2017 the V8 project authors. All rights reserved.
       2             : // Use of this source code is governed by a BSD-style license that can be
       3             : // found in the LICENSE file.
       4             : 
       5             : #ifdef V8_INTL_SUPPORT
       6             : 
       7             : #include "src/builtins/builtins-intl.h"
       8             : #include "test/cctest/cctest.h"
       9             : 
      10             : namespace v8 {
      11             : namespace internal {
      12             : 
      13             : // This operator overloading enables CHECK_EQ to be used with
      14             : // std::vector<NumberFormatSpan>
      15           0 : bool operator==(const NumberFormatSpan& lhs, const NumberFormatSpan& rhs) {
      16         168 :   return memcmp(&lhs, &rhs, sizeof(lhs)) == 0;
      17             : }
      18             : template <typename _CharT, typename _Traits, typename T>
      19             : std::basic_ostream<_CharT, _Traits>& operator<<(
      20             :     std::basic_ostream<_CharT, _Traits>& self, const std::vector<T>& v) {
      21             :   self << "[";
      22             :   for (auto it = v.begin(); it < v.end();) {
      23             :     self << *it;
      24             :     it++;
      25             :     if (it < v.end()) self << ", ";
      26             :   }
      27             :   return self << "]";
      28             : }
      29             : template <typename _CharT, typename _Traits>
      30             : std::basic_ostream<_CharT, _Traits>& operator<<(
      31             :     std::basic_ostream<_CharT, _Traits>& self, const NumberFormatSpan& part) {
      32             :   return self << "{" << part.field_id << "," << part.begin_pos << ","
      33             :               << part.end_pos << "}";
      34             : }
      35             : 
      36          36 : void test_flatten_regions_to_parts(
      37             :     const std::vector<NumberFormatSpan>& regions,
      38             :     const std::vector<NumberFormatSpan>& expected_parts) {
      39          36 :   std::vector<NumberFormatSpan> mutable_regions = regions;
      40          36 :   std::vector<NumberFormatSpan> parts = FlattenRegionsToParts(&mutable_regions);
      41          36 :   CHECK_EQ(expected_parts, parts);
      42          36 : }
      43             : 
      44       23724 : TEST(FlattenRegionsToParts) {
      45             :   test_flatten_regions_to_parts(
      46             :       std::vector<NumberFormatSpan>{
      47             :           NumberFormatSpan(-1, 0, 10), NumberFormatSpan(1, 2, 8),
      48             :           NumberFormatSpan(2, 2, 4), NumberFormatSpan(3, 6, 8),
      49             :       },
      50             :       std::vector<NumberFormatSpan>{
      51             :           NumberFormatSpan(-1, 0, 2), NumberFormatSpan(2, 2, 4),
      52             :           NumberFormatSpan(1, 4, 6), NumberFormatSpan(3, 6, 8),
      53             :           NumberFormatSpan(-1, 8, 10),
      54          18 :       });
      55             :   test_flatten_regions_to_parts(
      56             :       std::vector<NumberFormatSpan>{
      57             :           NumberFormatSpan(0, 0, 1),
      58             :       },
      59             :       std::vector<NumberFormatSpan>{
      60             :           NumberFormatSpan(0, 0, 1),
      61          18 :       });
      62             :   test_flatten_regions_to_parts(
      63             :       std::vector<NumberFormatSpan>{
      64             :           NumberFormatSpan(-1, 0, 1), NumberFormatSpan(0, 0, 1),
      65             :       },
      66             :       std::vector<NumberFormatSpan>{
      67             :           NumberFormatSpan(0, 0, 1),
      68          18 :       });
      69             :   test_flatten_regions_to_parts(
      70             :       std::vector<NumberFormatSpan>{
      71             :           NumberFormatSpan(0, 0, 1), NumberFormatSpan(-1, 0, 1),
      72             :       },
      73             :       std::vector<NumberFormatSpan>{
      74             :           NumberFormatSpan(0, 0, 1),
      75          18 :       });
      76             :   test_flatten_regions_to_parts(
      77             :       std::vector<NumberFormatSpan>{
      78             :           NumberFormatSpan(-1, 0, 10), NumberFormatSpan(1, 0, 1),
      79             :           NumberFormatSpan(2, 0, 2), NumberFormatSpan(3, 0, 3),
      80             :           NumberFormatSpan(4, 0, 4), NumberFormatSpan(5, 0, 5),
      81             :           NumberFormatSpan(15, 5, 10), NumberFormatSpan(16, 6, 10),
      82             :           NumberFormatSpan(17, 7, 10), NumberFormatSpan(18, 8, 10),
      83             :           NumberFormatSpan(19, 9, 10),
      84             :       },
      85             :       std::vector<NumberFormatSpan>{
      86             :           NumberFormatSpan(1, 0, 1), NumberFormatSpan(2, 1, 2),
      87             :           NumberFormatSpan(3, 2, 3), NumberFormatSpan(4, 3, 4),
      88             :           NumberFormatSpan(5, 4, 5), NumberFormatSpan(15, 5, 6),
      89             :           NumberFormatSpan(16, 6, 7), NumberFormatSpan(17, 7, 8),
      90             :           NumberFormatSpan(18, 8, 9), NumberFormatSpan(19, 9, 10),
      91          18 :       });
      92             : 
      93             :   //              :          4
      94             :   //              :      22 33    3
      95             :   //              :      11111   22
      96             :   // input regions:     0000000  111
      97             :   //              :     ------------
      98             :   // output parts:      0221340--231
      99             :   test_flatten_regions_to_parts(
     100             :       std::vector<NumberFormatSpan>{
     101             :           NumberFormatSpan(-1, 0, 12), NumberFormatSpan(0, 0, 7),
     102             :           NumberFormatSpan(1, 9, 12), NumberFormatSpan(1, 1, 6),
     103             :           NumberFormatSpan(2, 9, 11), NumberFormatSpan(2, 1, 3),
     104             :           NumberFormatSpan(3, 10, 11), NumberFormatSpan(3, 4, 6),
     105             :           NumberFormatSpan(4, 5, 6),
     106             :       },
     107             :       std::vector<NumberFormatSpan>{
     108             :           NumberFormatSpan(0, 0, 1), NumberFormatSpan(2, 1, 3),
     109             :           NumberFormatSpan(1, 3, 4), NumberFormatSpan(3, 4, 5),
     110             :           NumberFormatSpan(4, 5, 6), NumberFormatSpan(0, 6, 7),
     111             :           NumberFormatSpan(-1, 7, 9), NumberFormatSpan(2, 9, 10),
     112             :           NumberFormatSpan(3, 10, 11), NumberFormatSpan(1, 11, 12),
     113          18 :       });
     114           6 : }
     115             : 
     116             : }  // namespace internal
     117       71154 : }  // namespace v8
     118             : 
     119             : #endif  // V8_INTL_SUPPORT

Generated by: LCOV version 1.10