LCOV - code coverage report
Current view: top level - test/unittests/libplatform - task-queue-unittest.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 22 23 95.7 %
Date: 2019-04-17 Functions: 8 14 57.1 %

          Line data    Source code
       1             : // Copyright 2014 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 "include/v8-platform.h"
       6             : #include "src/base/platform/platform.h"
       7             : #include "src/libplatform/task-queue.h"
       8             : #include "testing/gmock/include/gmock/gmock.h"
       9             : 
      10             : using testing::InSequence;
      11             : using testing::IsNull;
      12             : using testing::StrictMock;
      13             : 
      14             : namespace v8 {
      15             : namespace platform {
      16             : namespace task_queue_unittest {
      17             : 
      18             : namespace {
      19             : 
      20           3 : struct MockTask : public Task {
      21           0 :   MOCK_METHOD0(Run, void());
      22             : };
      23             : 
      24             : 
      25           1 : class TaskQueueThread final : public base::Thread {
      26             :  public:
      27             :   explicit TaskQueueThread(TaskQueue* queue)
      28           2 :       : Thread(Options("libplatform TaskQueueThread")), queue_(queue) {}
      29             : 
      30           6 :   void Run() override { EXPECT_THAT(queue_->GetNext(), IsNull()); }
      31             : 
      32             :  private:
      33             :   TaskQueue* queue_;
      34             : };
      35             : 
      36             : }  // namespace
      37             : 
      38             : 
      39       15443 : TEST(TaskQueueTest, Basic) {
      40           2 :   TaskQueue queue;
      41           1 :   std::unique_ptr<Task> task(new MockTask());
      42           1 :   Task* ptr = task.get();
      43           2 :   queue.Append(std::move(task));
      44           4 :   EXPECT_EQ(ptr, queue.GetNext().get());
      45           1 :   queue.Terminate();
      46           2 :   EXPECT_THAT(queue.GetNext(), IsNull());
      47           1 : }
      48             : 
      49             : 
      50       15443 : TEST(TaskQueueTest, TerminateMultipleReaders) {
      51           2 :   TaskQueue queue;
      52             :   TaskQueueThread thread1(&queue);
      53             :   TaskQueueThread thread2(&queue);
      54           1 :   thread1.Start();
      55           1 :   thread2.Start();
      56           1 :   queue.Terminate();
      57           1 :   thread1.Join();
      58           1 :   thread2.Join();
      59           1 : }
      60             : 
      61             : }  // namespace task_queue_unittest
      62             : }  // namespace platform
      63        9264 : }  // namespace v8

Generated by: LCOV version 1.10