• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2024 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.nfc;
18 
19 import static com.android.nfc.NfcDiscoveryParameters.NFC_POLL_DEFAULT;
20 
21 import static org.junit.Assert.assertEquals;
22 import static org.junit.Assert.assertFalse;
23 import static org.junit.Assert.assertNotNull;
24 import static org.junit.Assert.assertTrue;
25 import static org.mockito.Mockito.mock;
26 
27 import android.util.proto.ProtoOutputStream;
28 
29 import androidx.test.ext.junit.runners.AndroidJUnit4;
30 
31 import com.android.dx.mockito.inline.extended.ExtendedMockito;
32 
33 import org.junit.After;
34 import org.junit.Assert;
35 import org.junit.Before;
36 import org.junit.Test;
37 import org.junit.runner.RunWith;
38 import org.mockito.MockitoSession;
39 import org.mockito.quality.Strictness;
40 
41 import java.util.Objects;
42 
43 @RunWith(AndroidJUnit4.class)
44 public class NfcDiscoveryParametersTest {
45 
46     private static final String TAG = NfcDiscoveryParametersTest.class.getSimpleName();
47     private MockitoSession mStaticMockSession;
48 
49     @Before
setUp()50     public void setUp() throws Exception {
51         mStaticMockSession = ExtendedMockito.mockitoSession()
52                 .strictness(Strictness.LENIENT)
53                 .startMocking();
54     }
55 
56     @After
tearDown()57     public void tearDown() throws Exception {
58         mStaticMockSession.finishMocking();
59     }
60 
61 
computeDiscoveryParameters()62     private NfcDiscoveryParameters computeDiscoveryParameters() {
63         // Recompute discovery parameters based on screen state
64         NfcDiscoveryParameters.Builder paramsBuilder = NfcDiscoveryParameters.newBuilder();
65         paramsBuilder.setTechMask(1);
66         paramsBuilder.setEnableLowPowerDiscovery(true);
67         paramsBuilder.setEnableHostRouting(true);
68         paramsBuilder.setEnableReaderMode(true);
69         return paramsBuilder.build();
70     }
71 
72     @Test
testGetTechMask()73     public void testGetTechMask() {
74         NfcDiscoveryParameters nfcDiscoveryParameters = computeDiscoveryParameters();
75         int techMask = nfcDiscoveryParameters.getTechMask();
76         Assert.assertEquals(1, techMask);
77     }
78 
79     @Test
testDiscoveryParameters()80     public void testDiscoveryParameters() {
81         NfcDiscoveryParameters.Builder paramsBuilder = NfcDiscoveryParameters.newBuilder();
82         NfcDiscoveryParameters nfcDiscoveryParameters = paramsBuilder.build();
83         boolean shouldEnableDiscovery = nfcDiscoveryParameters.shouldEnableDiscovery();
84         boolean shouldEnableLowPowerDiscovery =
85                 nfcDiscoveryParameters.shouldEnableLowPowerDiscovery();
86         boolean shouldEnableReaderMode = nfcDiscoveryParameters.shouldEnableReaderMode();
87         boolean shouldEnableHostRouting = nfcDiscoveryParameters.shouldEnableHostRouting();
88 
89         assertFalse(shouldEnableDiscovery);
90         assertTrue(shouldEnableLowPowerDiscovery);
91         assertFalse(shouldEnableReaderMode);
92         assertFalse(shouldEnableHostRouting);
93 
94         nfcDiscoveryParameters = computeDiscoveryParameters();
95         shouldEnableDiscovery = nfcDiscoveryParameters.shouldEnableDiscovery();
96         shouldEnableLowPowerDiscovery = nfcDiscoveryParameters.shouldEnableLowPowerDiscovery();
97         shouldEnableReaderMode = nfcDiscoveryParameters.shouldEnableReaderMode();
98         shouldEnableHostRouting = nfcDiscoveryParameters.shouldEnableHostRouting();
99 
100         assertTrue(shouldEnableDiscovery);
101         assertFalse(shouldEnableLowPowerDiscovery);
102         assertTrue(shouldEnableReaderMode);
103         assertTrue(shouldEnableHostRouting);
104 
105     }
106 
107     @Test
testDefaultInstance()108     public void testDefaultInstance() {
109         ProtoOutputStream proto = mock(ProtoOutputStream.class);
110         NfcDiscoveryParameters nfcDiscoveryParameters = NfcDiscoveryParameters.getDefaultInstance();
111         nfcDiscoveryParameters.dumpDebug(proto);
112 
113         assertNotNull(nfcDiscoveryParameters);
114     }
115 
116     @Test
testToStringDefault()117     public void testToStringDefault() {
118         NfcDiscoveryParameters.Builder builder = NfcDiscoveryParameters.newBuilder();
119         builder.setTechMask(NFC_POLL_DEFAULT);
120         builder.setEnableLowPowerDiscovery(true);
121         builder.setEnableReaderMode(true);
122         builder.setEnableHostRouting(true);
123         NfcDiscoveryParameters nfcDiscoveryParameters = builder.build();
124         String stringBuilder = """
125                 mTechMask: default
126                 mEnableLPD: false
127                 mEnableReader: true
128                 mEnableHostRouting: true
129                 """;
130 
131         assertEquals(stringBuilder, nfcDiscoveryParameters.toString());
132     }
133 
134     @Test
testToString()135     public void testToString() {
136         NfcDiscoveryParameters.Builder builder = NfcDiscoveryParameters.newBuilder();
137         builder.setTechMask(1);
138         builder.setEnableLowPowerDiscovery(true);
139         builder.setEnableReaderMode(true);
140         builder.setEnableHostRouting(true);
141         NfcDiscoveryParameters nfcDiscoveryParameters = builder.build();
142 
143         String stringBuilder = """
144                 mTechMask: 1
145                 mEnableLPD: false
146                 mEnableReader: true
147                 mEnableHostRouting: true
148                 """;
149 
150         assertEquals(stringBuilder, nfcDiscoveryParameters.toString());
151     }
152 
153     @Test
testHashCode()154     public void testHashCode() {
155         NfcDiscoveryParameters.Builder builder = NfcDiscoveryParameters.newBuilder();
156         builder.setTechMask(NFC_POLL_DEFAULT);
157         builder.setEnableLowPowerDiscovery(true);
158         builder.setEnableReaderMode(true);
159         builder.setEnableHostRouting(true);
160         NfcDiscoveryParameters nfcDiscoveryParameters = builder.build();
161         int expectedCode = Objects.hash(NFC_POLL_DEFAULT, false, true, true);
162 
163         assertEquals(expectedCode, nfcDiscoveryParameters.hashCode());
164     }
165 
166     @Test
testEquals()167     public void testEquals() {
168         NfcDiscoveryParameters.Builder builder = NfcDiscoveryParameters.newBuilder();
169         builder.setTechMask(NFC_POLL_DEFAULT);
170         builder.setEnableLowPowerDiscovery(true);
171         builder.setEnableReaderMode(true);
172         builder.setEnableHostRouting(true);
173         NfcDiscoveryParameters nfcDiscoveryParameters = builder.build();
174         NfcDiscoveryParameters obj = builder.build();
175 
176         assertTrue(nfcDiscoveryParameters.equals(obj));
177     }
178 
179     @Test
testEqualsWithNullObject()180     public void testEqualsWithNullObject() {
181         NfcDiscoveryParameters.Builder builder = NfcDiscoveryParameters.newBuilder();
182         builder.setTechMask(NFC_POLL_DEFAULT);
183         builder.setEnableLowPowerDiscovery(true);
184         builder.setEnableReaderMode(true);
185         builder.setEnableHostRouting(true);
186         NfcDiscoveryParameters nfcDiscoveryParameters = builder.build();
187 
188         assertFalse(nfcDiscoveryParameters.equals(null));
189     }
190 }
191