Skip to content

Commit 0d5c13b

Browse files
committed
Unit test additions
1 parent 0d38484 commit 0d5c13b

File tree

2 files changed

+116
-1
lines changed

2 files changed

+116
-1
lines changed

src/test/java/tools/jackson/databind/util/BeanUtilTest.java

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212

1313
import static org.junit.jupiter.api.Assertions.assertEquals;
1414
import static org.junit.jupiter.api.Assertions.assertNull;
15+
import static org.junit.jupiter.api.Assertions.assertNotNull;
16+
import static org.junit.jupiter.api.Assertions.assertTrue;
17+
import static org.junit.jupiter.api.Assertions.assertFalse;
1518

1619
public class BeanUtilTest extends DatabindTestUtil
1720
{
@@ -39,4 +42,76 @@ public void testGetDefaultValue()
3942
// but POJOs have no real default
4043
assertNull(BeanUtil.getDefaultValue(tf.constructType(getClass())));
4144
}
45+
46+
@Test
47+
public void testGetDefaultValueForDate()
48+
{
49+
TypeFactory tf = defaultTypeFactory();
50+
Object result = BeanUtil.getDefaultValue(tf.constructType(Date.class));
51+
assertNotNull(result);
52+
assertTrue(result instanceof Date);
53+
assertEquals(0L, ((Date) result).getTime());
54+
}
55+
56+
@Test
57+
public void testGetDefaultValueForCalendar()
58+
{
59+
TypeFactory tf = defaultTypeFactory();
60+
Object result = BeanUtil.getDefaultValue(tf.constructType(Calendar.class));
61+
assertNotNull(result);
62+
assertTrue(result instanceof Calendar);
63+
assertEquals(0L, ((Calendar) result).getTimeInMillis());
64+
}
65+
66+
@Test
67+
public void testGetDefaultValueForGregorianCalendar()
68+
{
69+
TypeFactory tf = defaultTypeFactory();
70+
Object result = BeanUtil.getDefaultValue(tf.constructType(GregorianCalendar.class));
71+
assertNotNull(result);
72+
assertTrue(result instanceof Calendar);
73+
assertEquals(0L, ((Calendar) result).getTimeInMillis());
74+
}
75+
76+
@Deprecated
77+
@Test
78+
public void testDeprecatedStdManglePropertyName()
79+
{
80+
// Empty name after offset
81+
assertNull(BeanUtil.stdManglePropertyName("get", 3));
82+
83+
// Starts with lowercase - return as-is
84+
assertEquals("value", BeanUtil.stdManglePropertyName("getValue", 3));
85+
86+
// Single uppercase letter - should lowercase
87+
assertEquals("x", BeanUtil.stdManglePropertyName("getX", 3));
88+
89+
// Two consecutive uppercase letters - keep as-is (Java Beans spec)
90+
assertEquals("URL", BeanUtil.stdManglePropertyName("getURL", 3));
91+
92+
// Standard property name
93+
assertEquals("name", BeanUtil.stdManglePropertyName("getName", 3));
94+
95+
// Property starting with uppercase, second lowercase - should lowercase first
96+
assertEquals("value", BeanUtil.stdManglePropertyName("Value", 0));
97+
}
98+
99+
@Test
100+
public void testCheckUnsupportedTypeForSupportedType()
101+
{
102+
TypeFactory tf = defaultTypeFactory();
103+
// Regular types should return null
104+
assertNull(BeanUtil.checkUnsupportedType(null, tf.constructType(String.class)));
105+
assertNull(BeanUtil.checkUnsupportedType(null, tf.constructType(Integer.class)));
106+
assertNull(BeanUtil.checkUnsupportedType(null, tf.constructType(List.class)));
107+
}
108+
109+
@Test
110+
public void testIsJodaTimeClass()
111+
{
112+
// Test with non-Joda Time classes
113+
assertFalse(BeanUtil.isJodaTimeClass(String.class));
114+
assertFalse(BeanUtil.isJodaTimeClass(Date.class));
115+
assertFalse(BeanUtil.isJodaTimeClass(Calendar.class));
116+
}
42117
}

src/test/java/tools/jackson/databind/util/ClassUtilTest.java

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,6 @@ public void testCloseEtc() throws Exception
311311
gen.close();
312312
}
313313

314-
@SuppressWarnings("serial")
315314
@Test
316315
public void testExceptionMessage() {
317316
DatabindException jacksonException = new DatabindException("A message") {
@@ -340,4 +339,45 @@ public void testJDKChecks() {
340339

341340
assertEquals((version >= 17), ClassUtil.isJDK17OrAbove());
342341
}
342+
343+
@Test
344+
public void testQuotedOr()
345+
{
346+
assertEquals("\"test\"", ClassUtil.quotedOr("test", "default"));
347+
assertEquals("default", ClassUtil.quotedOr(null, "default"));
348+
assertEquals("\"42\"", ClassUtil.quotedOr(42, "N/A"));
349+
}
350+
351+
@Test
352+
public void testNonNullString()
353+
{
354+
assertEquals("test", ClassUtil.nonNullString("test"));
355+
assertEquals("", ClassUtil.nonNullString(null));
356+
assertEquals("", ClassUtil.nonNullString(""));
357+
}
358+
359+
@Test
360+
public void testHasEnclosingMethod()
361+
{
362+
class LocalClass { }
363+
assertTrue(ClassUtil.hasEnclosingMethod(LocalClass.class));
364+
assertFalse(ClassUtil.hasEnclosingMethod(String.class));
365+
assertFalse(ClassUtil.hasEnclosingMethod(getClass()));
366+
}
367+
368+
@Test
369+
public void testBackticked()
370+
{
371+
assertEquals("`test`", ClassUtil.backticked("test"));
372+
assertEquals("[null]", ClassUtil.backticked(null));
373+
assertEquals("``", ClassUtil.backticked(""));
374+
}
375+
376+
@Test
377+
public void testApostrophed()
378+
{
379+
assertEquals("'test'", ClassUtil.apostrophed("test"));
380+
assertEquals("[null]", ClassUtil.apostrophed(null));
381+
assertEquals("''", ClassUtil.apostrophed(""));
382+
}
343383
}

0 commit comments

Comments
 (0)