122 lines
4.4 KiB
Kotlin
122 lines
4.4 KiB
Kotlin
/*
|
|
* 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_HOSTNAME = "test_hostname"
|
|
private val TEST_OTHER_HOSTNAME = "test_other_hostname"
|
|
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(TEST_ADDRINFO1, fieldCount = 2)
|
|
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))
|
|
}
|
|
|
|
@Test
|
|
fun testGetters() {
|
|
assertEquals(TEST_MACADDR, makeTestClient().macAddress)
|
|
assertEquals(listOf(TEST_ADDRINFO1, TEST_ADDRINFO2), makeTestClient().addresses)
|
|
assertEquals(TETHERING_BLUETOOTH, makeTestClient().tetheringType)
|
|
}
|
|
|
|
@Test
|
|
fun testAddressInfo_Getters() {
|
|
assertEquals(TEST_ADDR1, TEST_ADDRINFO1.address)
|
|
assertEquals(TEST_ADDR2, TEST_ADDRINFO2.address)
|
|
assertEquals(TEST_HOSTNAME, TEST_ADDRINFO1.hostname)
|
|
assertEquals(null, TEST_ADDRINFO2.hostname)
|
|
}
|
|
|
|
private fun makeTestClient() = TetheredClient(
|
|
TEST_MACADDR,
|
|
listOf(TEST_ADDRINFO1, TEST_ADDRINFO2),
|
|
TETHERING_BLUETOOTH)
|
|
} |