LCOV - code coverage report
Current view: top level - test/unittests/base - list-unittest.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 44 44 100.0 %
Date: 2019-01-20 Functions: 12 17 70.6 %

          Line data    Source code
       1             : // Copyright 2018 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             : #include "src/base/list.h"
       6             : #include "testing/gtest-support.h"
       7             : 
       8             : namespace v8 {
       9             : namespace base {
      10             : 
      11             : class TestChunk {
      12             :  public:
      13             :   base::ListNode<TestChunk>& list_node() { return list_node_; }
      14             :   base::ListNode<TestChunk> list_node_;
      15             : };
      16             : 
      17       15128 : TEST(List, InsertAtTailAndRemove) {
      18             :   List<TestChunk> list;
      19             :   EXPECT_TRUE(list.Empty());
      20             :   TestChunk t1;
      21             :   list.PushBack(&t1);
      22           2 :   EXPECT_FALSE(list.Empty());
      23           2 :   EXPECT_TRUE(list.Contains(&t1));
      24           1 :   list.Remove(&t1);
      25           1 :   EXPECT_TRUE(list.Empty());
      26           1 : }
      27             : 
      28       15128 : TEST(List, InsertAtHeadAndRemove) {
      29             :   List<TestChunk> list;
      30             :   EXPECT_TRUE(list.Empty());
      31             :   TestChunk t1;
      32             :   list.PushFront(&t1);
      33           2 :   EXPECT_FALSE(list.Empty());
      34           1 :   list.Remove(&t1);
      35           1 :   EXPECT_TRUE(list.Empty());
      36           1 : }
      37             : 
      38       15128 : TEST(List, InsertMultipleAtTailAndRemoveFromTail) {
      39             :   List<TestChunk> list;
      40             :   EXPECT_TRUE(list.Empty());
      41             :   const int kSize = 10;
      42          11 :   TestChunk chunks[kSize];
      43          10 :   for (int i = 0; i < kSize; i++) {
      44          10 :     list.PushBack(&chunks[i]);
      45          20 :     EXPECT_EQ(list.back(), &chunks[i]);
      46             :   }
      47          10 :   for (int i = kSize - 1; i > 0; i--) {
      48           9 :     list.Remove(&chunks[i]);
      49          18 :     EXPECT_EQ(list.back(), &chunks[i - 1]);
      50             :   }
      51             : 
      52           1 :   list.Remove(&chunks[0]);
      53           1 :   EXPECT_TRUE(list.Empty());
      54           1 : }
      55             : 
      56       15128 : TEST(List, InsertMultipleAtHeadAndRemoveFromHead) {
      57             :   List<TestChunk> list;
      58             :   EXPECT_TRUE(list.Empty());
      59             :   const int kSize = 10;
      60          11 :   TestChunk chunks[kSize];
      61          10 :   for (int i = 0; i < kSize; i++) {
      62          10 :     list.PushFront(&chunks[i]);
      63          20 :     EXPECT_EQ(list.front(), &chunks[i]);
      64             :   }
      65          10 :   for (int i = kSize - 1; i > 0; i--) {
      66           9 :     list.Remove(&chunks[i]);
      67          18 :     EXPECT_EQ(list.front(), &chunks[i - 1]);
      68             :   }
      69             : 
      70           1 :   list.Remove(&chunks[0]);
      71           1 :   EXPECT_TRUE(list.Empty());
      72           1 : }
      73             : 
      74       15128 : TEST(List, InsertMultipleAtTailAndRemoveFromMiddle) {
      75             :   List<TestChunk> list;
      76             :   EXPECT_TRUE(list.Empty());
      77             :   const int kSize = 10;
      78          11 :   TestChunk chunks[kSize];
      79          10 :   for (int i = 0; i < kSize; i++) {
      80          10 :     list.PushBack(&chunks[i]);
      81          20 :     EXPECT_EQ(list.back(), &chunks[i]);
      82             :   }
      83             :   int i, j;
      84           5 :   for (i = kSize / 2 - 1, j = kSize / 2; i >= 0; i--, j++) {
      85           5 :     list.Remove(&chunks[i]);
      86           5 :     list.Remove(&chunks[j]);
      87             :   }
      88           1 :   EXPECT_TRUE(list.Empty());
      89           1 : }
      90             : 
      91             : }  // namespace base
      92        9075 : }  // namespace v8

Generated by: LCOV version 1.10