diff --git a/src/com/android/loganalysis/item/DumpsysPackageStatsItem.java b/src/com/android/loganalysis/item/DumpsysPackageStatsItem.java index 14c4073641f87c6ead9f416977d3b346bd81758b..b10f055b4bbe1880aa452a94bf8f8c9bec9c5693 100644 --- a/src/com/android/loganalysis/item/DumpsysPackageStatsItem.java +++ b/src/com/android/loganalysis/item/DumpsysPackageStatsItem.java @@ -19,6 +19,8 @@ package com.android.loganalysis.item; import org.json.JSONException; import org.json.JSONObject; +import java.util.Map; + /** An {@link IItem} used to store apps and their version codes and names. */ public class DumpsysPackageStatsItem extends GenericMapItem<AppVersionItem> { private static final long serialVersionUID = 1L; @@ -31,7 +33,11 @@ public class DumpsysPackageStatsItem extends GenericMapItem<AppVersionItem> { public JSONObject toJson() { JSONObject object = new JSONObject(); try { - object.put(APP_VERSIONS, super.toJson()); + JSONObject appVersions = new JSONObject(); + for (Map.Entry<String, AppVersionItem> entry : entrySet()) { + appVersions.put(entry.getKey(), entry.getValue().toJson()); + } + object.put(APP_VERSIONS, appVersions); } catch (JSONException e) { // Ignore } diff --git a/tests/src/com/android/loganalysis/item/DumpsysPackageStatsItemTest.java b/tests/src/com/android/loganalysis/item/DumpsysPackageStatsItemTest.java new file mode 100644 index 0000000000000000000000000000000000000000..dd60500a350b5ae68f9fd0e23cdbbaa57435be28 --- /dev/null +++ b/tests/src/com/android/loganalysis/item/DumpsysPackageStatsItemTest.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.loganalysis.item; + +import junit.framework.TestCase; + +import org.json.JSONException; +import org.json.JSONObject; + +/** Unit test for {@link DumpsysPackageStatsItem}. */ +public class DumpsysPackageStatsItemTest extends TestCase { + + /** Test that {@link DumpsysPackageStatsItem#toJson()} returns correctly. */ + public void testToJson() throws JSONException { + DumpsysPackageStatsItem item = new DumpsysPackageStatsItem(); + + item.put("com.google.android.calculator", new AppVersionItem(73000302, "7.3 (3821978)")); + item.put( + "com.google.android.googlequicksearchbox", + new AppVersionItem(300734793, "6.16.35.26.arm64")); + + // Convert to JSON string and back again + JSONObject output = new JSONObject(item.toJson().toString()); + + assertTrue(output.has(DumpsysPackageStatsItem.APP_VERSIONS)); + + JSONObject appVersionsJson = output.getJSONObject(DumpsysPackageStatsItem.APP_VERSIONS); + + assertEquals(2, appVersionsJson.length()); + final JSONObject calcAppVersionJson = + appVersionsJson.getJSONObject("com.google.android.calculator"); + assertEquals(73000302, calcAppVersionJson.getInt(AppVersionItem.VERSION_CODE)); + assertEquals("7.3 (3821978)", calcAppVersionJson.getString(AppVersionItem.VERSION_NAME)); + final JSONObject gsaAppVersionJson = + appVersionsJson.getJSONObject("com.google.android.googlequicksearchbox"); + assertEquals(300734793, gsaAppVersionJson.getInt(AppVersionItem.VERSION_CODE)); + assertEquals("6.16.35.26.arm64", gsaAppVersionJson.getString(AppVersionItem.VERSION_NAME)); + } +} diff --git a/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java b/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java index faa51b2fffa66b773f11898791b15278cf9f40a2..ee15b78797fde5ed49ebf0feb55b6bba15a3222e 100644 --- a/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java +++ b/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java @@ -15,8 +15,8 @@ */ package com.android.loganalysis.parser; -import com.android.loganalysis.item.DumpsysPackageStatsItem; import com.android.loganalysis.item.AppVersionItem; +import com.android.loganalysis.item.DumpsysPackageStatsItem; import junit.framework.TestCase;