TestUpdater.java

package net.minidev.json.testMapping;

import static org.junit.jupiter.api.Assertions.assertEquals;

import net.minidev.json.JSONValue;
import net.minidev.json.testMapping.TestMapPublic.T1;
import net.minidev.json.testMapping.TestMapPublic.T123;
import net.minidev.json.testMapping.TestMapPublic.T2;
import net.minidev.json.testMapping.TestMapPublic.T3;
import org.junit.jupiter.api.Test;

public class TestUpdater {

  @Test
  public void testUpdate1() throws Exception {
    T3 t3 = new T3();
    t3.age = 20;
    t3.f = 1.4f;
    t3.l = 120000L;

    String s = "{\"name\":\"text\"}";
    T3 t3_1 = JSONValue.parse(s, t3);
    assertEquals(t3, t3_1);
    assertEquals("text", t3.name);
    assertEquals((Long) 120000L, t3.l);
  }

  @Test
  public void testUpdateExistingBeans() throws Exception {
    T123 t123 = new T123();
    T1 t1 = new T1();
    T2 t2 = new T2();
    T3 t3 = new T3();
    t123.t1 = t1;
    t123.t2 = t2;
    t123.t3 = t3;

    String s = "{\"t2\":{\"name\":\"valueT2\"},\"t3\":{\"name\":\"valueT3\"},}";
    T123 res = JSONValue.parse(s, t123);
    assertEquals(res, t123);
    assertEquals(res.t2, t2);
    assertEquals(res.t2.name, "valueT2");
    assertEquals(res.t3.name, "valueT3");
  }

  @Test
  public void testUpdateNullBean() throws Exception {
    T123 t123 = new T123();
    T1 t1 = new T1();
    T2 t2 = null;
    T3 t3 = null;
    t123.t1 = t1;
    t123.t2 = t2;
    t123.t3 = t3;

    String s = "{\"t2\":{\"name\":\"valueT2\"},\"t3\":{\"name\":\"valueT3\"},}";
    T123 res = JSONValue.parse(s, t123);
    assertEquals(res, t123);
    assertEquals(res.t2.name, "valueT2");
    assertEquals(res.t3.name, "valueT3");
  }
}