diff --git a/tests/cts/net/src/android/net/cts/NsdManagerTest.kt b/tests/cts/net/src/android/net/cts/NsdManagerTest.kt index 6c5b7922e6..088d202675 100644 --- a/tests/cts/net/src/android/net/cts/NsdManagerTest.kt +++ b/tests/cts/net/src/android/net/cts/NsdManagerTest.kt @@ -608,6 +608,41 @@ class NsdManagerTest { } } + @Test + fun testNsdManager_RegisterServiceNameWithNonStandardCharacters() { + val serviceNames = "^Nsd.Test|Non-#AsCiI\\Characters&\\ufffe テスト 測試" + val si = NsdServiceInfo().apply { + serviceType = SERVICE_TYPE + serviceName = serviceNames + port = 12345 // Test won't try to connect so port does not matter + } + + // Register the service name which contains non-standard characters. + val registrationRecord = NsdRegistrationRecord() + nsdManager.registerService(si, NsdManager.PROTOCOL_DNS_SD, registrationRecord) + registrationRecord.expectCallback() + + tryTest { + // Discover that service name. + val discoveryRecord = NsdDiscoveryRecord() + nsdManager.discoverServices( + SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD, discoveryRecord + ) + val foundInfo = discoveryRecord.waitForServiceDiscovered(serviceNames) + + // Expect that resolving the service name works properly even service name contains + // non-standard characters. + val resolveRecord = NsdResolveRecord() + nsdManager.resolveService(foundInfo, resolveRecord) + val resolvedCb = resolveRecord.expectCallback() + assertEquals(foundInfo.serviceName, resolvedCb.serviceInfo.serviceName) + } cleanupStep { + nsdManager.unregisterService(registrationRecord) + } cleanup { + registrationRecord.expectCallback() + } + } + /** * Register a service and return its registration record. */