1f748257eee651b974e15274e03fe9843a8393073Narayan Kamath/** 2f748257eee651b974e15274e03fe9843a8393073Narayan Kamath * Copyright (C) 2013 The Android Open Source Project 3f748257eee651b974e15274e03fe9843a8393073Narayan Kamath * 4f748257eee651b974e15274e03fe9843a8393073Narayan Kamath * Licensed under the Apache License, Version 2.0 (the "License"); 5f748257eee651b974e15274e03fe9843a8393073Narayan Kamath * you may not use this file except in compliance with the License. 6f748257eee651b974e15274e03fe9843a8393073Narayan Kamath * You may obtain a copy of the License at 7f748257eee651b974e15274e03fe9843a8393073Narayan Kamath * 8f748257eee651b974e15274e03fe9843a8393073Narayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 9f748257eee651b974e15274e03fe9843a8393073Narayan Kamath * 10f748257eee651b974e15274e03fe9843a8393073Narayan Kamath * Unless required by applicable law or agreed to in writing, software 11f748257eee651b974e15274e03fe9843a8393073Narayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 12f748257eee651b974e15274e03fe9843a8393073Narayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f748257eee651b974e15274e03fe9843a8393073Narayan Kamath * See the License for the specific language governing permissions and 14f748257eee651b974e15274e03fe9843a8393073Narayan Kamath * limitations under the License. 15f748257eee651b974e15274e03fe9843a8393073Narayan Kamath */ 16f748257eee651b974e15274e03fe9843a8393073Narayan Kamath 17f748257eee651b974e15274e03fe9843a8393073Narayan Kamathpackage com.android.internal.util; 18f748257eee651b974e15274e03fe9843a8393073Narayan Kamath 19f748257eee651b974e15274e03fe9843a8393073Narayan Kamathimport java.io.ByteArrayInputStream; 20f748257eee651b974e15274e03fe9843a8393073Narayan Kamathimport java.io.ByteArrayOutputStream; 21f748257eee651b974e15274e03fe9843a8393073Narayan Kamathimport java.io.InputStream; 22f748257eee651b974e15274e03fe9843a8393073Narayan Kamathimport java.util.HashMap; 23f748257eee651b974e15274e03fe9843a8393073Narayan Kamathimport java.util.Map; 24f748257eee651b974e15274e03fe9843a8393073Narayan Kamathimport junit.framework.TestCase; 25f748257eee651b974e15274e03fe9843a8393073Narayan Kamath 26f748257eee651b974e15274e03fe9843a8393073Narayan Kamathpublic class XmlUtilsTest extends TestCase { 27f748257eee651b974e15274e03fe9843a8393073Narayan Kamath 28f748257eee651b974e15274e03fe9843a8393073Narayan Kamath // https://code.google.com/p/android/issues/detail?id=63717 29f748257eee651b974e15274e03fe9843a8393073Narayan Kamath public void testMapWithNullKeys() throws Exception { 30f748257eee651b974e15274e03fe9843a8393073Narayan Kamath ByteArrayOutputStream baos = new ByteArrayOutputStream(1024); 31f748257eee651b974e15274e03fe9843a8393073Narayan Kamath Map<String, Object> map = new HashMap<String, Object>(); 32f748257eee651b974e15274e03fe9843a8393073Narayan Kamath map.put(null, "nullValue"); 33f748257eee651b974e15274e03fe9843a8393073Narayan Kamath map.put("foo", "fooValue"); 34f748257eee651b974e15274e03fe9843a8393073Narayan Kamath XmlUtils.writeMapXml(map, baos); 35f748257eee651b974e15274e03fe9843a8393073Narayan Kamath 36f748257eee651b974e15274e03fe9843a8393073Narayan Kamath InputStream mapInput = new ByteArrayInputStream(baos.toByteArray()); 37f748257eee651b974e15274e03fe9843a8393073Narayan Kamath HashMap<String, ?> deserialized = XmlUtils.readMapXml(mapInput); 38f748257eee651b974e15274e03fe9843a8393073Narayan Kamath assertEquals("nullValue", deserialized.get(null)); 39f748257eee651b974e15274e03fe9843a8393073Narayan Kamath assertEquals("fooValue", deserialized.get("foo")); 40f748257eee651b974e15274e03fe9843a8393073Narayan Kamath } 41f748257eee651b974e15274e03fe9843a8393073Narayan Kamath} 42