blob: a20a0dfd9c89dca2196a92e9ec44d5a3b7d9824c [file] [log] [blame]
/*
* 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)
}