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