blob: 9a0d3f37449bcb7b2090482b87fc430264362c72 [file] [log] [blame]
package com.android.networkstack.tethering.companionproxy.protocol;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class)
public class ProtocolConfigTest {
@Test
public void capabilities_bitmask() {
ProtocolConfig.Capabilities capabilities =
createCapabilities(HandshakeData.CAPABILITY_TCP4_HEADER_COMPRESSION);
assertTrue(capabilities.hasTcp4Compression());
capabilities = createCapabilities(HandshakeData.CAPABILITY_TCP6_HEADER_COMPRESSION);
assertTrue(capabilities.hasTcp6Compression());
capabilities = createCapabilities(HandshakeData.CAPABILITY_UDP4_HEADER_COMPRESSION);
assertTrue(capabilities.hasUdp4Compression());
capabilities = createCapabilities(HandshakeData.CAPABILITY_UDP6_HEADER_COMPRESSION);
assertTrue(capabilities.hasUdp6Compression());
capabilities = createCapabilities(HandshakeData.CAPABILITY_NET_ID);
assertTrue(capabilities.hasNetId());
capabilities = new ProtocolConfig.Capabilities(0x40000000);
assertEquals(0, capabilities.getBitmask());
}
@Test
public void capabilities_merge() {
ProtocolConfig.Capabilities capabilities1 = createCapabilities(
HandshakeData.CAPABILITY_TCP4_HEADER_COMPRESSION
| HandshakeData.CAPABILITY_UDP4_HEADER_COMPRESSION
| HandshakeData.CAPABILITY_NET_ID);
assertTrue(capabilities1.hasTcp4Compression());
assertTrue(capabilities1.hasUdp4Compression());
assertTrue(capabilities1.hasNetId());
ProtocolConfig.Capabilities capabilities2 = createCapabilities(
HandshakeData.CAPABILITY_TCP4_HEADER_COMPRESSION
| HandshakeData.CAPABILITY_TCP6_HEADER_COMPRESSION
| HandshakeData.CAPABILITY_NET_ID);
assertTrue(capabilities2.hasTcp4Compression());
assertTrue(capabilities2.hasTcp6Compression());
assertTrue(capabilities2.hasNetId());
ProtocolConfig.Capabilities capabilities =
ProtocolConfig.Capabilities.merge(capabilities1, capabilities2);
assertEquals(
HandshakeData.CAPABILITY_TCP4_HEADER_COMPRESSION
| HandshakeData.CAPABILITY_NET_ID,
capabilities.getBitmask());
}
private static ProtocolConfig.Capabilities createCapabilities(int bitmask) {
ProtocolConfig.Capabilities capabilities = new ProtocolConfig.Capabilities(bitmask);
assertEquals(bitmask, capabilities.getBitmask());
return capabilities;
}
@Test
public void protocolConfig() {
ProtocolConfig config = new ProtocolConfig(
10, createCapabilities(HandshakeData.CAPABILITY_NET_ID), 3, 5);
assertEquals(10, config.protocolVersion);
assertEquals(HandshakeData.CAPABILITY_NET_ID, config.capabilities.getBitmask());
assertEquals(5, config.maxTxWindowSize);
assertEquals(5, config.maxTxWindowSize);
config = new ProtocolConfig(10, createCapabilities(0), 100, 5);
assertEquals(PacketEncoder.MAX_RX_WINDOW_SIZE, config.maxRxWindowSize);
assertEquals(5, config.maxTxWindowSize);
config = new ProtocolConfig(10, createCapabilities(0), 1, 5);
assertEquals(2, config.maxRxWindowSize);
assertEquals(5, config.maxTxWindowSize);
config = new ProtocolConfig(10, createCapabilities(0), 3, 100);
assertEquals(3, config.maxRxWindowSize);
assertEquals(PacketEncoder.MAX_TX_WINDOW_SIZE, config.maxTxWindowSize);
config = new ProtocolConfig(10, createCapabilities(0), 3, 1);
assertEquals(3, config.maxRxWindowSize);
assertEquals(2, config.maxTxWindowSize);
}
}