• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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