1f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu/*
2f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu * Copyright (C) 2016 The Android Open Source Project
3f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu *
4f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu * Licensed under the Apache License, Version 2.0 (the "License");
5f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu * you may not use this file except in compliance with the License.
6f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu * You may obtain a copy of the License at
7f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu *
8f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu *      http://www.apache.org/licenses/LICENSE-2.0
9f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu *
10f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu * Unless required by applicable law or agreed to in writing, software
11f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu * distributed under the License is distributed on an "AS IS" BASIS,
12f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu * See the License for the specific language governing permissions and
14f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu * limitations under the License.
15f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu */
16f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu
17f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiupackage com.android.server.wifi.hotspot2;
18f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu
19f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiuimport static org.junit.Assert.assertFalse;
20f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiuimport static org.junit.Assert.assertTrue;
21f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiuimport static org.mockito.Mockito.when;
22f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiuimport static org.mockito.MockitoAnnotations.initMocks;
23f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu
247f2a1e30dd5d14320ffc7b185ac25fdb79fe52b0Etan Cohenimport android.support.test.filters.SmallTest;
25f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu
26f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiuimport com.android.server.wifi.Clock;
27f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiuimport com.android.server.wifi.hotspot2.anqp.ANQPElement;
28f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiuimport com.android.server.wifi.hotspot2.anqp.Constants;
29f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu
30f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiuimport org.junit.Before;
31f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiuimport org.junit.Test;
32f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiuimport org.mockito.Mock;
33f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu
34f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiuimport java.util.Map;
35f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu
36f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu/**
37f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu * Unit tests for {@link com.android.server.wifi.hotspot2.ANQPData}.
38f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu *
39f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu * TODO(b/33000864): add more test once the ANQP elements cleanup are completed, which will
40f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu * allow easy construction of ANQP elements for testing.
41f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu */
42f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu@SmallTest
43f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiupublic class ANQPDataTest {
44f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu    @Mock Clock mClock;
45f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu
46f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu    /**
47f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu     * Sets up test.
48f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu     */
49f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu    @Before
50f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu    public void setUp() throws Exception {
51f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu        initMocks(this);
52f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu        // Returning the initial timestamp.
53f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu        when(mClock.getElapsedSinceBootMillis()).thenReturn(0L);
54f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu    }
55f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu
56f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu    /**
57f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu     * Verify creation of ANQPData with null elements.
58f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu     *
59f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu     * @throws Exception
60f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu     */
61f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu    @Test
62f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu    public void createWithNullElements() throws Exception {
63f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu        ANQPData data = new ANQPData(mClock, null);
64f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu        Map<Constants.ANQPElementType, ANQPElement> elements = data.getElements();
65f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu        assertTrue(elements.isEmpty());
66f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu    }
67f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu
68f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu    /**
69f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu     * Verify the data expiration behavior.
70f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu     *
71f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu     * @throws Exception
72f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu     */
73f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu    @Test
74f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu    public void verifyExpiration() throws Exception {
75f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu        ANQPData data = new ANQPData(mClock, null);
76f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu        assertFalse(data.expired(ANQPData.DATA_LIFETIME_MILLISECONDS - 1));
77f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu        assertTrue(data.expired(ANQPData.DATA_LIFETIME_MILLISECONDS));
78f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu    }
79f1b7517b04fedc6fd81f34a8cb84ce583b8ea63ePeter Qiu}
80