1 // Copyright 2019 The Chromium 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 package org.chromium.chrome.browser.tasks; 6 7 import static org.junit.Assert.assertEquals; 8 9 import org.junit.Before; 10 import org.junit.Test; 11 import org.junit.runner.RunWith; 12 import org.robolectric.annotation.Config; 13 14 import org.chromium.base.test.BaseRobolectricTestRunner; 15 16 /** Unit tests for JourneyManager. */ 17 @RunWith(BaseRobolectricTestRunner.class) 18 @Config(manifest = Config.NONE) 19 public final class EngagementTimeUtilTest { 20 private static final long TEST_ELAPSED_MS = 5000L; 21 22 private MockEngagementTimeUtil mEngagementTimeUtil; 23 24 @Before setUp()25 public void setUp() { 26 mEngagementTimeUtil = new MockEngagementTimeUtil(); 27 } 28 29 @Test timeSinceLastEngagement_shouldReportElapsedTimeSinceLastEngagement()30 public void timeSinceLastEngagement_shouldReportElapsedTimeSinceLastEngagement() { 31 long currentTimeMillis = System.currentTimeMillis(); 32 mEngagementTimeUtil.setCurrentTime(currentTimeMillis); 33 assertEquals(TEST_ELAPSED_MS, 34 mEngagementTimeUtil.timeSinceLastEngagement(currentTimeMillis - TEST_ELAPSED_MS)); 35 } 36 37 @Test timeSinceLastEngagement_shouldReportInvalidIfNegative()38 public void timeSinceLastEngagement_shouldReportInvalidIfNegative() { 39 long currentTimeMillis = System.currentTimeMillis(); 40 mEngagementTimeUtil.setCurrentTime(currentTimeMillis); 41 assertEquals(-1, 42 mEngagementTimeUtil.timeSinceLastEngagement( 43 System.currentTimeMillis() + TEST_ELAPSED_MS)); 44 } 45 46 @Test timeSinceLastEngagement_shouldReportElapsedTimeBetweenTimestamps()47 public void timeSinceLastEngagement_shouldReportElapsedTimeBetweenTimestamps() { 48 long currentTimeMillis = System.currentTimeMillis(); 49 mEngagementTimeUtil.setCurrentTime(currentTimeMillis); 50 assertEquals(TEST_ELAPSED_MS, 51 mEngagementTimeUtil.timeSinceLastEngagement( 52 currentTimeMillis - (2L * TEST_ELAPSED_MS), 53 currentTimeMillis - TEST_ELAPSED_MS)); 54 } 55 56 private static class MockEngagementTimeUtil extends EngagementTimeUtil { 57 private long mCurrentTime = System.currentTimeMillis(); 58 setCurrentTime(long currentTime)59 public void setCurrentTime(long currentTime) { 60 mCurrentTime = currentTime; 61 } 62 63 // EngagementTimeUtil implementation. 64 @Override currentTime()65 public long currentTime() { 66 return mCurrentTime; 67 } 68 } 69 } 70