diff --git a/tests/cts/net/src/android/net/cts/NetworkRequestTest.java b/tests/cts/net/src/android/net/cts/NetworkRequestTest.java
index c862c77..2a5ef31 100644
--- a/tests/cts/net/src/android/net/cts/NetworkRequestTest.java
+++ b/tests/cts/net/src/android/net/cts/NetworkRequestTest.java
@@ -30,6 +30,35 @@
                 .hasCapability(NET_CAPABILITY_MMS));
     }
 
+    public void testUnwantedCapabilities() {
+        assertTrue(new NetworkRequest.Builder()
+                .addUnwantedCapability(NET_CAPABILITY_MMS)
+                .build()
+                .hasUnwantedCapability(NET_CAPABILITY_MMS));
+        assertFalse(new NetworkRequest.Builder()
+                .removeCapability(NET_CAPABILITY_MMS)
+                .build()
+                .hasCapability(NET_CAPABILITY_MMS));
+    }
+
+    public void testCapabilityMutualExclusivity() {
+        NetworkRequest.Builder reqBuilder = new NetworkRequest.Builder()
+                .addCapability(NET_CAPABILITY_MMS);
+
+        assertTrue(reqBuilder.build().hasCapability(NET_CAPABILITY_MMS));
+        assertFalse(reqBuilder.build().hasUnwantedCapability(NET_CAPABILITY_MMS));
+
+        // Move capability to unwanted list
+        reqBuilder.addUnwantedCapability(NET_CAPABILITY_MMS);
+        assertFalse(reqBuilder.build().hasCapability(NET_CAPABILITY_MMS));
+        assertTrue(reqBuilder.build().hasUnwantedCapability(NET_CAPABILITY_MMS));
+
+        // Move it back to the list of capabilities
+        reqBuilder.addCapability(NET_CAPABILITY_MMS);
+        assertTrue(reqBuilder.build().hasCapability(NET_CAPABILITY_MMS));
+        assertFalse(reqBuilder.build().hasUnwantedCapability(NET_CAPABILITY_MMS));
+    }
+
     public void testTransports() {
         assertTrue(new NetworkRequest.Builder().addTransportType(TRANSPORT_BLUETOOTH).build()
                 .hasTransport(TRANSPORT_BLUETOOTH));
