• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2020 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.supplier;
6 
7 import static org.junit.Assert.assertEquals;
8 import static org.junit.Assert.assertNull;
9 import static org.mockito.Mockito.verify;
10 
11 import org.junit.Before;
12 import org.junit.Test;
13 import org.junit.runner.RunWith;
14 import org.mockito.MockitoAnnotations;
15 import org.mockito.Spy;
16 import org.robolectric.annotation.Config;
17 import org.robolectric.annotation.LooperMode;
18 import org.robolectric.shadows.ShadowProcess;
19 
20 import org.chromium.base.Callback;
21 import org.chromium.base.test.BaseRobolectricTestRunner;
22 
23 /** Unit tests for {@link OneshotSupplierImpl}. */
24 @RunWith(BaseRobolectricTestRunner.class)
25 @Config(shadows = {ShadowProcess.class})
26 @LooperMode(LooperMode.Mode.LEGACY)
27 public class OneshotSupplierImplTest {
28     private OneshotSupplierImpl<String> mSupplier = new OneshotSupplierImpl<>();
29 
30     @Spy private Callback<String> mCallback1;
31     @Spy private Callback<String> mCallback2;
32 
33     @Before
setup()34     public void setup() {
35         MockitoAnnotations.initMocks(this);
36     }
37 
38     @Test
testSet()39     public void testSet() {
40         assertNull(mSupplier.onAvailable(mCallback1));
41         assertNull(mSupplier.onAvailable(mCallback2));
42         mSupplier.set("answer");
43 
44         verify(mCallback1).onResult("answer");
45         verify(mCallback2).onResult("answer");
46     }
47 
48     @Test
testSetBeforeAddObserver()49     public void testSetBeforeAddObserver() {
50         mSupplier.set("answer");
51 
52         assertEquals("answer", mSupplier.onAvailable(mCallback1));
53         assertEquals("answer", mSupplier.onAvailable(mCallback2));
54 
55         verify(mCallback1).onResult("answer");
56         verify(mCallback2).onResult("answer");
57     }
58 
59     @Test
testInterleaved()60     public void testInterleaved() {
61         assertNull(mSupplier.onAvailable(mCallback1));
62         mSupplier.set("answer");
63         assertEquals("answer", mSupplier.onAvailable(mCallback2));
64 
65         verify(mCallback1).onResult("answer");
66         verify(mCallback2).onResult("answer");
67     }
68 
69     @Test
testGet()70     public void testGet() {
71         assertNull(mSupplier.get());
72         mSupplier.set("answer");
73         assertEquals("answer", mSupplier.get());
74     }
75 }
76