1 package com.fasterxml.jackson.databind.convert; 2 3 import java.util.*; 4 5 import com.fasterxml.jackson.databind.*; 6 7 /** 8 * Tests for {@link ObjectMapper#updateValue}. 9 * 10 * @since 2.9 11 */ 12 public class UpdateValueTest extends BaseMapTest 13 { 14 /* 15 /******************************************************** 16 /* Test methods; simple containers 17 /******************************************************** 18 */ 19 20 private final ObjectMapper MAPPER = new ObjectMapper(); 21 testMapUpdate()22 public void testMapUpdate() throws Exception 23 { 24 Map<String,Object> base = new LinkedHashMap<>(); 25 base.put("a", 345); 26 Map<String,Object> overrides = new LinkedHashMap<>(); 27 overrides.put("xyz", Boolean.TRUE); 28 overrides.put("foo", "bar"); 29 30 Map<String,Object> ob = MAPPER.updateValue(base, overrides); 31 // first: should return first argument 32 assertSame(base, ob); 33 assertEquals(3, ob.size()); 34 assertEquals(Integer.valueOf(345), ob.get("a")); 35 assertEquals("bar", ob.get("foo")); 36 assertEquals(Boolean.TRUE, ob.get("xyz")); 37 } 38 testListUpdate()39 public void testListUpdate() throws Exception 40 { 41 List<Object> base = new ArrayList<>(); 42 base.add(123456); 43 base.add(Boolean.FALSE); 44 Object[] overrides = new Object[] { Boolean.TRUE, "zoink!" }; 45 46 List<Object> ob = MAPPER.updateValue(base, overrides); 47 // first: should return first argument 48 assertSame(base, ob); 49 assertEquals(4, ob.size()); 50 assertEquals(Integer.valueOf(123456), ob.get(0)); 51 assertEquals(Boolean.FALSE, ob.get(1)); 52 assertEquals(overrides[0], ob.get(2)); 53 assertEquals(overrides[1], ob.get(3)); 54 } 55 testArrayUpdate()56 public void testArrayUpdate() throws Exception 57 { 58 // Since Arrays are immutable, not sure what "right answer" ought to be 59 Object[] base = new Object[] { Boolean.FALSE, Integer.valueOf(3) }; 60 Object[] overrides = new Object[] { Boolean.TRUE, "zoink!" }; 61 62 Object[] ob = MAPPER.updateValue(base, overrides); 63 assertEquals(4, ob.length); 64 assertEquals(base[0], ob[0]); 65 assertEquals(base[1], ob[1]); 66 assertEquals(overrides[0], ob[2]); 67 assertEquals(overrides[1], ob[3]); 68 } 69 70 /* 71 /******************************************************** 72 /* Test methods; POJOs 73 /******************************************************** 74 */ 75 testPOJO()76 public void testPOJO() throws Exception 77 { 78 Point base = new Point(42, 28); 79 Map<String,Object> overrides = new LinkedHashMap<>(); 80 overrides.put("y", 1234); 81 Point result = MAPPER.updateValue(base, overrides); 82 assertSame(base, result); 83 assertEquals(42, result.x); 84 assertEquals(1234, result.y); 85 } 86 87 /* 88 /******************************************************** 89 /* Test methods; other 90 /******************************************************** 91 */ 92 testMisc()93 public void testMisc() throws Exception 94 { 95 // if either is `null`, should return first arg 96 assertNull(MAPPER.updateValue(null, "foo")); 97 List<String> input = new ArrayList<>(); 98 assertSame(input, MAPPER.updateValue(input, null)); 99 } 100 101 } 102