/* * Copyright (c) 2011 Google Inc. * * 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.google.api.client.util; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import junit.framework.TestCase; import java.util.Iterator; import java.util.Map; /** * Tests {@link DataMap}. * * @author Yaniv Inbar */ public class DataMapTest extends TestCase { static class A { @Key String r; @Key String s; @Key String t; } public void testSizeAndIsEmpty() { A a = new A(); DataMap map = new DataMap(a, false); assertEquals(0, map.size()); assertTrue(map.isEmpty()); a.s = "s"; assertEquals(1, map.size()); assertFalse(map.isEmpty()); a.r = "r"; assertEquals(2, map.size()); assertFalse(map.isEmpty()); a.t = Data.NULL_STRING; assertEquals(3, map.size()); assertFalse(map.isEmpty()); } public void testIterator() { A a = new A(); a.s = "value"; DataMap map = new DataMap(a, false); Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator(); assertTrue(iterator.hasNext()); Map.Entry<String, Object> entry = iterator.next(); assertEquals("s", entry.getKey()); assertEquals("value", entry.getValue()); iterator.remove(); assertNull(a.s); assertFalse(iterator.hasNext()); } public void testValues() { A a = new A(); a.r = "r"; a.s = "s"; a.t = "t"; DataMap map = new DataMap(a, false); assertEquals(ImmutableList.of("r", "s", "t"), Lists.newArrayList(map.values())); a.s = null; assertEquals(ImmutableList.of("r", "t"), Lists.newArrayList(map.values())); a.r = null; assertEquals(ImmutableList.of("t"), Lists.newArrayList(map.values())); a.t = null; assertEquals(ImmutableList.of(), Lists.newArrayList(map.values())); } public void testKeys() { A a = new A(); a.r = "r"; a.s = "s"; a.t = "t"; DataMap map = new DataMap(a, false); assertEquals(ImmutableList.of("r", "s", "t"), Lists.newArrayList(map.keySet())); a.s = null; assertEquals(ImmutableList.of("r", "t"), Lists.newArrayList(map.keySet())); a.r = null; assertEquals(ImmutableList.of("t"), Lists.newArrayList(map.keySet())); a.t = null; assertEquals(ImmutableList.of(), Lists.newArrayList(map.keySet())); } public void testClear() { A a = new A(); a.r = "r"; a.s = "s"; DataMap map = new DataMap(a, false); map.clear(); assertTrue(map.isEmpty()); map.clear(); assertTrue(map.isEmpty()); } public void testGetKeyAndContainsKey() { A a = new A(); a.r = "rv"; DataMap map = new DataMap(a, false); assertNull(map.get("no")); assertFalse(map.containsKey("no")); assertNull(map.get("s")); assertFalse(map.containsKey("s")); assertEquals("rv", map.get("r")); assertTrue(map.containsKey("r")); } public void testPut() { A a = new A(); a.r = "rv"; DataMap map = new DataMap(a, false); assertNull(map.put("s", "sv")); assertEquals("sv", a.s); assertEquals("rv", map.put("r", "rv2")); assertEquals("rv2", a.r); } }