• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2018 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 package org.chromium.base.task;
6 
7 import static org.hamcrest.MatcherAssert.assertThat;
8 import static org.hamcrest.collection.IsIterableContainingInOrder.contains;
9 
10 import androidx.test.filters.SmallTest;
11 
12 import org.junit.Test;
13 import org.junit.runner.RunWith;
14 
15 import org.chromium.base.test.BaseJUnit4ClassRunner;
16 import org.chromium.base.test.task.SchedulerTestHelpers;
17 
18 import java.util.ArrayList;
19 import java.util.List;
20 
21 /**
22  * Test class for {@link SequencedTaskRunnerImpl}.
23  *
24  * Note due to layering concerns we can't test post native functionality in a
25  * base javatest. Instead see:
26  * content/public/android/javatests/src/org/chromium/content/browser/scheduler/
27  * NativePostTaskTest.java
28  */
29 @RunWith(BaseJUnit4ClassRunner.class)
30 public class SequencedTaskRunnerImplTest {
31     @Test
32     @SmallTest
testPreNativeTasksRunInOrder()33     public void testPreNativeTasksRunInOrder() {
34         TaskRunner taskQueue = new SequencedTaskRunnerImpl(TaskTraits.USER_BLOCKING);
35         List<Integer> orderList = new ArrayList<>();
36         SchedulerTestHelpers.postRecordOrderTask(taskQueue, orderList, 1);
37         SchedulerTestHelpers.postRecordOrderTask(taskQueue, orderList, 2);
38         SchedulerTestHelpers.postRecordOrderTask(taskQueue, orderList, 3);
39         SchedulerTestHelpers.postTaskAndBlockUntilRun(taskQueue);
40         assertThat(orderList, contains(1, 2, 3));
41     }
42 }
43