| /* |
| * Copyright (C) 2020 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package android.net |
| |
| import android.net.InetAddresses.parseNumericAddress |
| import android.net.TetheredClient.AddressInfo |
| import android.net.TetheringManager.TETHERING_BLUETOOTH |
| import android.net.TetheringManager.TETHERING_USB |
| import android.system.OsConstants.RT_SCOPE_UNIVERSE |
| import androidx.test.filters.SmallTest |
| import androidx.test.runner.AndroidJUnit4 |
| import com.android.testutils.assertParcelSane |
| import org.junit.Test |
| import org.junit.runner.RunWith |
| import kotlin.test.assertEquals |
| import kotlin.test.assertNotEquals |
| |
| private val TEST_MACADDR = MacAddress.fromBytes(byteArrayOf(12, 23, 34, 45, 56, 67)) |
| private val TEST_OTHER_MACADDR = MacAddress.fromBytes(byteArrayOf(23, 34, 45, 56, 67, 78)) |
| private val TEST_ADDR1 = makeLinkAddress("192.168.113.3", prefixLength = 24, expTime = 123L) |
| private val TEST_ADDR2 = makeLinkAddress("fe80::1:2:3", prefixLength = 64, expTime = 456L) |
| private val TEST_ADDRINFO1 = AddressInfo(TEST_ADDR1, "test_hostname") |
| private val TEST_ADDRINFO2 = AddressInfo(TEST_ADDR2, null) |
| |
| private fun makeLinkAddress(addr: String, prefixLength: Int, expTime: Long) = LinkAddress( |
| parseNumericAddress(addr), |
| prefixLength, |
| 0 /* flags */, |
| RT_SCOPE_UNIVERSE, |
| expTime /* deprecationTime */, |
| expTime /* expirationTime */) |
| |
| @RunWith(AndroidJUnit4::class) |
| @SmallTest |
| class TetheredClientTest { |
| @Test |
| fun testParceling() { |
| assertParcelSane(makeTestClient(), fieldCount = 3) |
| } |
| |
| @Test |
| fun testEquals() { |
| assertEquals(makeTestClient(), makeTestClient()) |
| |
| // Different mac address |
| assertNotEquals(makeTestClient(), TetheredClient( |
| TEST_OTHER_MACADDR, |
| listOf(TEST_ADDRINFO1, TEST_ADDRINFO2), |
| TETHERING_BLUETOOTH)) |
| |
| // Different hostname |
| assertNotEquals(makeTestClient(), TetheredClient( |
| TEST_MACADDR, |
| listOf(AddressInfo(TEST_ADDR1, "test_other_hostname"), TEST_ADDRINFO2), |
| TETHERING_BLUETOOTH)) |
| |
| // Null hostname |
| assertNotEquals(makeTestClient(), TetheredClient( |
| TEST_MACADDR, |
| listOf(AddressInfo(TEST_ADDR1, null), TEST_ADDRINFO2), |
| TETHERING_BLUETOOTH)) |
| |
| // Missing address |
| assertNotEquals(makeTestClient(), TetheredClient( |
| TEST_MACADDR, |
| listOf(TEST_ADDRINFO2), |
| TETHERING_BLUETOOTH)) |
| |
| // Different type |
| assertNotEquals(makeTestClient(), TetheredClient( |
| TEST_MACADDR, |
| listOf(TEST_ADDRINFO1, TEST_ADDRINFO2), |
| TETHERING_USB)) |
| } |
| |
| @Test |
| fun testAddAddresses() { |
| val client1 = TetheredClient(TEST_MACADDR, listOf(TEST_ADDRINFO1), TETHERING_USB) |
| val client2 = TetheredClient(TEST_OTHER_MACADDR, listOf(TEST_ADDRINFO2), TETHERING_USB) |
| assertEquals(TetheredClient( |
| TEST_MACADDR, |
| listOf(TEST_ADDRINFO1, TEST_ADDRINFO2), |
| TETHERING_USB), client1.addAddresses(client2)) |
| } |
| |
| private fun makeTestClient() = TetheredClient( |
| TEST_MACADDR, |
| listOf(TEST_ADDRINFO1, TEST_ADDRINFO2), |
| TETHERING_BLUETOOTH) |
| } |