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 28cfd83..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,29 +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("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));
+        }
     }
 
     /**
