diff --git a/service/tests/wifitests/src/com/android/server/wifi/scanner/ChannelHelperTest.java b/service/tests/wifitests/src/com/android/server/wifi/scanner/ChannelHelperTest.java
index ce9a761..18c00ba 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/scanner/ChannelHelperTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/scanner/ChannelHelperTest.java
@@ -90,33 +90,29 @@
                     10000, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
             assertEquals("[2400,5100]", ChannelHelper.toString(scanSettings));
         }
-    }
 
-    /**
-     * Unit tests for
-     * {@link com.android.server.wifi.scanner.ChannelHelper#bandToString}.
-     */
-    @Test
-    public void bandToString_ShouldReturnApproapriateString() {
-        assertEquals("unspecified", ChannelHelper.bandToString(
-                WifiScanner.WIFI_BAND_UNSPECIFIED));
-        assertEquals("24Ghz", ChannelHelper.bandToString(WifiScanner.WIFI_BAND_24_GHZ));
-        assertEquals("5Ghz (no DFS)", ChannelHelper.bandToString(WifiScanner.WIFI_BAND_5_GHZ));
-        assertEquals("5Ghz (DFS only)", ChannelHelper.bandToString(
-                WifiScanner.WIFI_BAND_5_GHZ_DFS_ONLY));
-        assertEquals("5Ghz (DFS incl)", ChannelHelper.bandToString(
-                WifiScanner.WIFI_BAND_5_GHZ_WITH_DFS));
-        assertEquals("24Ghz & 5Ghz (no DFS)", ChannelHelper.bandToString(
-                WifiScanner.WIFI_BAND_BOTH));
-        assertEquals("24Ghz & 5Ghz (DFS incl)", ChannelHelper.bandToString(
-                WifiScanner.WIFI_BAND_BOTH_WITH_DFS));
-        assertEquals("24Ghz & 5Ghz (DFS incl) & 6Ghz", ChannelHelper.bandToString(
-                WifiScanner.WIFI_BAND_24_5_WITH_DFS_6_GHZ));
-        assertEquals("2.4 GHz & 5 GHz (no DFS) & 6GHz & 60GHz", ChannelHelper.bandToString(
-                WifiScanner.WIFI_BAND_24_5_6_60_GHZ));
-        assertEquals("2.4 GHz & 5Ghz (DFS incl) & 6GHz & 60GHz", ChannelHelper.bandToString(
-                WifiScanner.WIFI_BAND_24_5_WITH_DFS_6_60_GHZ));
-        assertEquals("invalid band", ChannelHelper.bandToString(-235342));
+        /**
+         * Unit tests for
+         * {@link com.android.server.wifi.scanner.ChannelHelper#bandToString}.
+         */
+        @Test
+        public void bandToString_ShouldReturnApproapriateString() {
+            assertEquals("unspecified", ChannelHelper.bandToString(
+                    WifiScanner.WIFI_BAND_UNSPECIFIED));
+            assertEquals("24Ghz", ChannelHelper.bandToString(WifiScanner.WIFI_BAND_24_GHZ));
+            assertEquals("5Ghz (no DFS)", ChannelHelper.bandToString(WifiScanner.WIFI_BAND_5_GHZ));
+            assertEquals("5Ghz (DFS only)", ChannelHelper.bandToString(
+                    WifiScanner.WIFI_BAND_5_GHZ_DFS_ONLY));
+            assertEquals("5Ghz (DFS incl)", ChannelHelper.bandToString(
+                    WifiScanner.WIFI_BAND_5_GHZ_WITH_DFS));
+            assertEquals("24Ghz & 5Ghz (no DFS)", ChannelHelper.bandToString(
+                    WifiScanner.WIFI_BAND_BOTH));
+            assertEquals("24Ghz & 5Ghz (DFS incl)", ChannelHelper.bandToString(
+                    WifiScanner.WIFI_BAND_BOTH_WITH_DFS));
+            assertEquals("24Ghz & 5Ghz (DFS incl) & 6Ghz", ChannelHelper.bandToString(
+                    WifiScanner.WIFI_BAND_24_5_WITH_DFS_6_GHZ));
+            assertEquals("Invalid band", ChannelHelper.bandToString(-235342));
+        }
     }
 
     /**
