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

          Line data    Source code
       1             : // Copyright 2012 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/bit-vector.h"
      33             : #include "test/cctest/cctest.h"
      34             : 
      35             : namespace v8 {
      36             : namespace internal {
      37             : 
      38       26644 : TEST(BitVector) {
      39          10 :   v8::internal::AccountingAllocator allocator;
      40          10 :   Zone zone(&allocator, ZONE_NAME);
      41             :   {
      42           5 :     BitVector v(15, &zone);
      43             :     v.Add(1);
      44           5 :     CHECK(v.Contains(1));
      45             :     v.Remove(0);
      46           5 :     CHECK(!v.Contains(0));
      47             :     v.Add(0);
      48             :     v.Add(1);
      49           5 :     BitVector w(15, &zone);
      50             :     w.Add(1);
      51             :     v.Intersect(w);
      52           5 :     CHECK(!v.Contains(0));
      53           5 :     CHECK(v.Contains(1));
      54             :   }
      55             : 
      56             :   {
      57           5 :     BitVector v(64, &zone);
      58             :     v.Add(27);
      59             :     v.Add(30);
      60             :     v.Add(31);
      61             :     v.Add(33);
      62             :     BitVector::Iterator iter(&v);
      63           5 :     CHECK_EQ(27, iter.Current());
      64           5 :     iter.Advance();
      65           5 :     CHECK_EQ(30, iter.Current());
      66           5 :     iter.Advance();
      67           5 :     CHECK_EQ(31, iter.Current());
      68           5 :     iter.Advance();
      69           5 :     CHECK_EQ(33, iter.Current());
      70           5 :     iter.Advance();
      71           5 :     CHECK(iter.Done());
      72             :   }
      73             : 
      74             :   {
      75           5 :     BitVector v(15, &zone);
      76             :     v.Add(0);
      77           5 :     BitVector w(15, &zone);
      78             :     w.Add(1);
      79             :     v.Union(w);
      80           5 :     CHECK(v.Contains(0));
      81           5 :     CHECK(v.Contains(1));
      82             :   }
      83             : 
      84             :   {
      85           5 :     BitVector v(15, &zone);
      86             :     v.Add(0);
      87           5 :     BitVector w(15, &zone);
      88             :     w.CopyFrom(v);
      89           5 :     CHECK(w.Contains(0));
      90             :     w.Add(1);
      91           5 :     BitVector u(w, &zone);
      92           5 :     CHECK(u.Contains(0));
      93           5 :     CHECK(u.Contains(1));
      94             :     v.Union(w);
      95           5 :     CHECK(v.Contains(0));
      96           5 :     CHECK(v.Contains(1));
      97             :   }
      98             : 
      99             :   {
     100           5 :     BitVector v(35, &zone);
     101             :     v.Add(0);
     102           5 :     BitVector w(35, &zone);
     103             :     w.Add(33);
     104             :     v.Union(w);
     105           5 :     CHECK(v.Contains(0));
     106           5 :     CHECK(v.Contains(33));
     107             :   }
     108             : 
     109             :   {
     110           5 :     BitVector v(35, &zone);
     111             :     v.Add(32);
     112             :     v.Add(33);
     113           5 :     BitVector w(35, &zone);
     114             :     w.Add(33);
     115             :     v.Intersect(w);
     116           5 :     CHECK(!v.Contains(32));
     117           5 :     CHECK(v.Contains(33));
     118           5 :     BitVector r(35, &zone);
     119             :     r.CopyFrom(v);
     120           5 :     CHECK(!r.Contains(32));
     121           5 :     CHECK(r.Contains(33));
     122             :   }
     123             : 
     124             :   {
     125           5 :     BitVector v(35, &zone);
     126             :     v.Add(32);
     127             :     v.Add(33);
     128           5 :     CHECK(v.Contains(32));
     129           5 :     CHECK(v.Contains(33));
     130           5 :     CHECK(!v.Contains(22));
     131             :     CHECK(!v.Contains(34));
     132           5 :     v.Resize(50, &zone);
     133           5 :     CHECK(v.Contains(32));
     134           5 :     CHECK(v.Contains(33));
     135           5 :     CHECK(!v.Contains(22));
     136           5 :     CHECK(!v.Contains(34));
     137           5 :     CHECK(!v.Contains(43));
     138           5 :     v.Resize(300, &zone);
     139           5 :     CHECK(v.Contains(32));
     140           5 :     CHECK(v.Contains(33));
     141           5 :     CHECK(!v.Contains(22));
     142           5 :     CHECK(!v.Contains(34));
     143           5 :     CHECK(!v.Contains(43));
     144           5 :     CHECK(!v.Contains(243));
     145             :   }
     146           5 : }
     147             : 
     148             : }  // namespace internal
     149       79917 : }  // namespace v8

Generated by: LCOV version 1.10