Add tests wrt #795
diff --git a/src/test/java/com/fasterxml/jackson/databind/convert/TestConvertingDeserializer.java b/src/test/java/com/fasterxml/jackson/databind/convert/TestConvertingDeserializer.java
index c63babc..d88e397 100644
--- a/src/test/java/com/fasterxml/jackson/databind/convert/TestConvertingDeserializer.java
+++ b/src/test/java/com/fasterxml/jackson/databind/convert/TestConvertingDeserializer.java
@@ -1,5 +1,6 @@
 package com.fasterxml.jackson.databind.convert;
 
+import java.math.BigDecimal;
 import java.util.*;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@@ -97,7 +98,23 @@
         @JsonDeserialize(contentConverter=LowerCaser.class)
         public String[] texts;
     }
-     
+
+    // for [databind#795]
+    
+    static class ToNumberConverter extends StdConverter<String,Number>
+    {
+        @Override
+        public Number convert(String value) {
+            return new BigDecimal(value);
+        }
+    }
+
+    static class Issue795Bean
+    {
+        @JsonDeserialize(converter=ToNumberConverter.class)
+        public Number value;
+    }
+    
     /*
     /**********************************************************
     /* Test methods
@@ -180,4 +197,15 @@
         assertEquals(1, p.x);
         assertEquals(2, p.y);
     }
+
+    // [databind#795]
+    public void testConvertToAbstract() throws Exception
+    {
+        Issue795Bean bean = objectReader(Issue795Bean.class)
+                .readValue("{\"value\":\"1.25\"}");
+        assertNotNull(bean.value);
+        assertTrue("Type not BigDecimal but "+bean.value.getClass(),
+                bean.value instanceof BigDecimal);
+        assertEquals(new BigDecimal("1.25"), bean.value);
+    }
 }
diff --git a/src/test/java/com/fasterxml/jackson/failing/ConvertingAbstractSerializer795Test.java b/src/test/java/com/fasterxml/jackson/failing/ConvertingAbstractSerializer795Test.java
new file mode 100644
index 0000000..d3d3b43
--- /dev/null
+++ b/src/test/java/com/fasterxml/jackson/failing/ConvertingAbstractSerializer795Test.java
@@ -0,0 +1,83 @@
+package com.fasterxml.jackson.failing;
+
+import com.fasterxml.jackson.annotation.*;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.databind.util.StdConverter;
+
+// for [databind#795]
+public class ConvertingAbstractSerializer795Test extends BaseMapTest
+{
+    public static abstract class AbstractCustomType {
+        final String value;
+        public AbstractCustomType(String v) {
+            this.value = v;
+        }
+    }
+
+    public static class ConcreteCustomType extends AbstractCustomType {
+        public ConcreteCustomType(String v) {
+            super(v);
+        }
+    }
+
+    public static class AbstractCustomTypeDeserializationConverter extends StdConverter<String, AbstractCustomType>{
+
+        @Override
+        public AbstractCustomType convert(String arg) {
+            return new ConcreteCustomType(arg);
+        }
+    }
+
+    public static class AbstractCustomTypeUser {
+        @JsonProperty
+        @JsonDeserialize(converter = AbstractCustomTypeDeserializationConverter.class)
+        private final AbstractCustomType customField;
+
+        @JsonCreator AbstractCustomTypeUser(@JsonProperty("customField")
+        AbstractCustomType customField) {
+            this.customField = customField;
+        }
+    }
+
+    public static  class NonAbstractCustomType {
+        final String value;
+        public NonAbstractCustomType(String v) {
+            this.value = v;
+        }
+    }
+
+
+    public static class NonAbstractCustomTypeDeserializationConverter extends StdConverter<String, NonAbstractCustomType>{
+
+        @Override
+        public NonAbstractCustomType convert(String arg) {
+            return new NonAbstractCustomType(arg);
+        }
+    }
+
+
+    public static class NonAbstractCustomTypeUser {
+        @JsonProperty
+        @JsonDeserialize(converter = NonAbstractCustomTypeDeserializationConverter.class)
+        private final NonAbstractCustomType customField;
+
+        @JsonCreator NonAbstractCustomTypeUser(@JsonProperty("customField") NonAbstractCustomType customField) {
+            this.customField = customField;
+        }
+    }
+
+    private static final ObjectMapper JSON_MAPPER = new ObjectMapper();
+
+    public void testAbstractTypeDeserialization() throws Exception {
+        String test="{\"customField\": \"customString\"}";
+        AbstractCustomTypeUser cu = JSON_MAPPER.readValue(test, AbstractCustomTypeUser.class);
+        assertNotNull(cu);
+    }
+
+    public void testNonAbstractDeserialization() throws Exception {
+        String test="{\"customField\": \"customString\"}";
+        NonAbstractCustomTypeUser cu = JSON_MAPPER.readValue(test, NonAbstractCustomTypeUser.class);
+        assertNotNull(cu);
+    }
+}