19db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei/* 29db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * Copyright (C) 2017 The Android Open Source Project 39db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * 49db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * Licensed under the Apache License, Version 2.0 (the "License"); 59db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * you may not use this file except in compliance with the License. 69db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * You may obtain a copy of the License at 79db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * 89db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * http://www.apache.org/licenses/LICENSE-2.0 99db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * 109db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * Unless required by applicable law or agreed to in writing, software 119db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * distributed under the License is distributed on an "AS IS" BASIS, 129db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * See the License for the specific language governing permissions and 149db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * limitations under the License. 159db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei */ 169db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei 179db95a35baee59975b8b9a84be087482fc760ec1jackqdyuleipackage com.android.settings.fuelgauge.anomaly; 189db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei 199db95a35baee59975b8b9a84be087482fc760ec1jackqdyuleiimport android.util.KeyValueListParser; 209db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei 219db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei/** 229db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * This interface replicates a subset of the {@link KeyValueListParser}. The interface 239db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * exists so that we can use a thin wrapper around the PM in production code and a mock in tests. 249db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * We cannot directly mock or shadow the {@link KeyValueListParser}, because some of the methods 259db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * we rely on are newer than the API version supported by Robolectric. 269db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei */ 279db95a35baee59975b8b9a84be087482fc760ec1jackqdyuleipublic interface KeyValueListParserWrapper { 289db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei 299db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei /** 309db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * Get real {@link KeyValueListParser} 319db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei */ 329db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei KeyValueListParser getKeyValueListParser(); 339db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei 349db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei /** 359db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * Resets the parser with a new string to parse. The string is expected to be in the following 369db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * format: 379db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * <pre>key1=value,key2=value,key3=value</pre> 389db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * 399db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * where the delimiter is a comma. 409db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * 419db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * @param str the string to parse. 429db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * @throws IllegalArgumentException if the string is malformed. 439db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei */ 449db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei void setString(String str) throws IllegalArgumentException; 459db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei 469db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei /** 47f59cbb143c2bbb43f7007a78e8e487dbad2ff1d3Andrew Sapperstein * Get the value for key as a string. 48f59cbb143c2bbb43f7007a78e8e487dbad2ff1d3Andrew Sapperstein * @param key The key to lookup. 49f59cbb143c2bbb43f7007a78e8e487dbad2ff1d3Andrew Sapperstein * @param defaultValue The value to return if the key was not found. 50f59cbb143c2bbb43f7007a78e8e487dbad2ff1d3Andrew Sapperstein * @return the string value associated with the key. 51f59cbb143c2bbb43f7007a78e8e487dbad2ff1d3Andrew Sapperstein */ 52f59cbb143c2bbb43f7007a78e8e487dbad2ff1d3Andrew Sapperstein String getString(String key, String defaultValue); 53f59cbb143c2bbb43f7007a78e8e487dbad2ff1d3Andrew Sapperstein 54f59cbb143c2bbb43f7007a78e8e487dbad2ff1d3Andrew Sapperstein /** 559db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * Get the value for key as a boolean. 569db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * @param key The key to lookup. 579db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * @param defaultValue The value to return if the key was not found. 589db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * @return the string value associated with the key. 599db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei */ 609db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei boolean getBoolean(String key, boolean defaultValue); 619db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei 629db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei /** 639db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * Get the value for key as a long. 649db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * @param key The key to lookup. 659db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * @param defaultValue The value to return if the key was not found, or the value was not a 669db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * long. 679db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei * @return the long value associated with the key. 689db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei */ 699db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei long getLong(String key, long defaultValue); 709db95a35baee59975b8b9a84be087482fc760ec1jackqdyulei} 71