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

Generated by: LCOV version 1.10