Package com.fasterxml.jackson.jr.ob.impl

Source Code of com.fasterxml.jackson.jr.ob.impl.TypeDetectorTest

package com.fasterxml.jackson.jr.ob.impl;

import java.util.*;

import com.fasterxml.jackson.jr.ob.JSON;
import com.fasterxml.jackson.jr.ob.TestBase;
import com.fasterxml.jackson.jr.ob.impl.BeanDefinition;
import com.fasterxml.jackson.jr.ob.impl.BeanProperty;
import com.fasterxml.jackson.jr.ob.impl.TypeDetector;

public class TypeDetectorTest extends TestBase
{
    static class TestBean {
        public int getX() { return 1; }
        public void setX(int x) { }

        public String getName() { return null; }

        public void setY(int y) { }

        public int bebop() { return 3; }
        public void zipdoo(int value) { }

        // not a regular getter (could be indexed)
        public void setEmUp(int index, String value) { }
    }

    interface Bean<T> {
        public void setValue(T t);
    }
   
    static class LongBean implements Bean<Long> {
        Long value;

        @Override
        public void setValue(Long v) {
            value = v;
        }
    }
   
    /*
    /**********************************************************************
    /* Test methdods
    /**********************************************************************
     */

    public void testSimpleWithSerialization()
    {
        TypeDetector td = TypeDetector.forWriter(JSON.Feature.defaults());
        BeanDefinition def = td.resolveBean(TestBean.class);
        assertNotNull(def);

        List<BeanProperty> props = Arrays.asList(def._properties);
        if (props.size() != 2) {
            fail("Expected 2 properties, found "+props.size()+": "+props);
        }
        Map<String, BeanProperty> map = new HashMap<String, BeanProperty>();
        for (BeanProperty prop : props) {
            map.put(prop._name.getValue(), prop);
        }

        BeanProperty prop;

        prop = map.get("x");
        assertNotNull(prop);
        assertNotNull(prop._getMethod);
        assertNotNull(prop._setMethod);
        prop = map.get("name");
        assertNotNull(prop);
        assertNotNull(prop._getMethod);
        assertNull(prop._setMethod);
    }

    public void testBasicTypeDetectionForSer() {
        TypeDetector td = TypeDetector.forWriter(JSON.Feature.defaults());
        assertEquals(TypeDetector.SER_STRING, td.findFullType(String.class));
        assertEquals(TypeDetector.SER_CHAR_ARRAY, td.findFullType(char[].class));
        assertEquals(TypeDetector.SER_INT_ARRAY, td.findFullType(int[].class));
        assertEquals(TypeDetector.SER_LONG_ARRAY, td.findFullType(long[].class));
        assertEquals(TypeDetector.SER_BOOLEAN_ARRAY, td.findFullType(boolean[].class));
        assertEquals(TypeDetector.SER_OBJECT_ARRAY, td.findFullType(Object[].class));
        assertEquals(TypeDetector.SER_CHARACTER_SEQUENCE, td.findFullType(StringBuffer.class));
        assertEquals(TypeDetector.SER_COLLECTION, td.findFullType(LinkedHashSet.class));
        assertEquals(TypeDetector.SER_LIST, td.findFullType(ArrayList.class));

        assertEquals(TypeDetector.SER_NUMBER_INTEGER, td.findFullType(Integer.class));
        assertEquals(TypeDetector.SER_NUMBER_INTEGER, td.findFullType(Integer.TYPE));
       
        // more specific types
        assertEquals(TypeDetector.SER_CALENDAR, td.findFullType(Calendar.class));
        assertEquals(TypeDetector.SER_CALENDAR, td.findFullType(GregorianCalendar.class));
        assertEquals(TypeDetector.SER_DATE, td.findFullType(new GregorianCalendar().getTime().getClass()));
        assertEquals(TypeDetector.SER_UUID, td.findFullType(UUID.class));
    }

    public void testGenericTypeWithDeser()
    {
        TypeDetector td = TypeDetector.forReader(JSON.Feature.defaults());
        BeanDefinition def = td.resolveBean(LongBean.class);
        assertNotNull(def);

        Map<String,BeanProperty> props = def._propsByName;
        assertNotNull(props);
       
        if (props.size() != 1) {
            fail("Expected 1 properties, found "+props.size()+": "+props);
        }
        BeanProperty prop = props.values().iterator().next();

        assertNotNull(prop);
        assertNotNull(prop._setMethod);

        assertEquals(Long.class, prop.rawSetterType());
    }
}
TOP

Related Classes of com.fasterxml.jackson.jr.ob.impl.TypeDetectorTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.