import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.nio.charset.StandardCharsets;
import java.util.regex.PatternSyntaxException;
/**
private static final MacAddress MAC_ANY_ADDRESS =
MacAddress.fromString("02:00:00:00:00:00");
+ /**
+ * Maximum number of bytes allowed for a SSID.
+ */
+ private static final int MAX_SSID_BYTES = 32;
private MacAddress mDeviceAddress = MAC_ANY_ADDRESS;
private String mNetworkName = "";
throw new IllegalArgumentException(
"network name must be non-empty.");
}
+ if (networkName.getBytes(StandardCharsets.UTF_8).length > MAX_SSID_BYTES) {
+ throw new IllegalArgumentException(
+ "network name exceeds " + MAX_SSID_BYTES + " bytes.");
+ }
try {
if (!networkName.matches("^DIRECT-[a-zA-Z0-9]{2}.*")) {
throw new IllegalArgumentException(
fail("Unexpected IllegalArgumentException");
}
+ // sunny case with maximum bytes for the network name
+ try {
+ b.setNetworkName("DIRECT-abcdefghijklmnopqrstuvwxy");
+ } catch (IllegalArgumentException e) {
+ fail("Unexpected IllegalArgumentException");
+ }
+
// less than 9 characters.
try {
b.setNetworkName("DIRECT-z");
b.setNetworkName("direct-a?");
fail("expected IllegalArgumentException");
} catch (IllegalArgumentException e) { }
+
+ // over maximum bytes
+ try {
+ b.setNetworkName("DIRECT-abcdefghijklmnopqrstuvwxyz");
+ fail("expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) { }
}
/**