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