Skip to content

Commit

Permalink
feat(java): Refactor basictest test structure
Browse files Browse the repository at this point in the history
  • Loading branch information
caicancai committed Oct 12, 2024
1 parent 0e20458 commit bf2054a
Showing 1 changed file with 91 additions and 6 deletions.
97 changes: 91 additions & 6 deletions java/fury-core/src/test/java/org/apache/fury/FuryTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,22 @@ public void primitivesTest(boolean referenceTracking, Language language) {
}

@Test(dataProvider = "crossLanguageReferenceTrackingConfig")
public void basicTest(boolean referenceTracking, Language language) {
public void testTreeSet(boolean referenceTracking, Language language) {
FuryBuilder builder =
Fury.builder()
.withLanguage(language)
.withRefTracking(referenceTracking)
.requireClassRegistration(false);
Fury fury1 = builder.build();
Fury fury2 = builder.build();
TreeSet<String> treeSet = new TreeSet<>(Comparator.naturalOrder());
treeSet.add("str1");
treeSet.add("str2");
assertEquals(treeSet, serDe(fury1, fury2, treeSet));
}

@Test(dataProvider = "crossLanguageReferenceTrackingConfig")
public void testBasicString(boolean referenceTracking, Language language) {
FuryBuilder builder =
Fury.builder()
.withLanguage(language)
Expand All @@ -116,37 +131,96 @@ public void basicTest(boolean referenceTracking, Language language) {
assertEquals("str", serDe(fury1, fury2, "str"));
assertEquals("str", serDe(fury1, fury2, new StringBuilder("str")).toString());
assertEquals("str", serDe(fury1, fury2, new StringBuffer("str")).toString());
}

@Test(dataProvider = "crossLanguageReferenceTrackingConfig")
public void testBasicEnumSerializer(boolean referenceTracking, Language language) {
FuryBuilder builder =
Fury.builder()
.withLanguage(language)
.withRefTracking(referenceTracking)
.requireClassRegistration(false);
Fury fury1 = builder.build();
Fury fury2 = builder.build();
assertEquals(EnumSerializerTest.EnumFoo.A, serDe(fury1, fury2, EnumSerializerTest.EnumFoo.A));
assertEquals(EnumSerializerTest.EnumFoo.B, serDe(fury1, fury2, EnumSerializerTest.EnumFoo.B));
assertEquals(
EnumSerializerTest.EnumSubClass.A, serDe(fury1, fury2, EnumSerializerTest.EnumSubClass.A));
assertEquals(
EnumSerializerTest.EnumSubClass.B, serDe(fury1, fury2, EnumSerializerTest.EnumSubClass.B));
}

@Test(dataProvider = "crossLanguageReferenceTrackingConfig")
public void testBasicDecimal(boolean referenceTracking, Language language) {
FuryBuilder builder =
Fury.builder()
.withLanguage(language)
.withRefTracking(referenceTracking)
.requireClassRegistration(false);
Fury fury1 = builder.build();
Fury fury2 = builder.build();
assertEquals(BigInteger.valueOf(100), serDe(fury1, fury2, BigInteger.valueOf(100)));
assertEquals(BigDecimal.valueOf(100, 2), serDe(fury1, fury2, BigDecimal.valueOf(100, 2)));
}

@Test(dataProvider = "crossLanguageReferenceTrackingConfig")
public void testBasicTime(boolean referenceTracking, Language language) {
FuryBuilder builder =
Fury.builder()
.withLanguage(language)
.withRefTracking(referenceTracking)
.requireClassRegistration(false);
Fury fury1 = builder.build();
Fury fury2 = builder.build();

// java.sql.Date
java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis());
assertEquals(sqlDate, serDe(fury1, fury2, sqlDate));

// LocalDate
LocalDate localDate = LocalDate.now();
assertEquals(localDate, serDe(fury1, fury2, localDate));

// Date
Date utilDate = new Date();
assertEquals(utilDate, serDe(fury1, fury2, utilDate));

// Timestamp
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
assertEquals(timestamp, serDe(fury1, fury2, timestamp));

// Instant
Instant instant = DateTimeUtils.truncateInstantToMicros(Instant.now());
assertEquals(instant, serDe(fury1, fury2, instant));
}

@Test(dataProvider = "crossLanguageReferenceTrackingConfig")
public void testArraySerializer(boolean referenceTracking, Language language) {
FuryBuilder builder =
Fury.builder()
.withLanguage(language)
.withRefTracking(referenceTracking)
.requireClassRegistration(false);
Fury fury1 = builder.build();
Fury fury2 = builder.build();
ArraySerializersTest.testPrimitiveArray(fury1, fury2);

assertEquals(Arrays.asList(1, 2), serDe(fury1, fury2, Arrays.asList(1, 2)));
List<String> arrayList = Arrays.asList("str", "str");
assertEquals(arrayList, serDe(fury1, fury2, arrayList));

assertEquals(new LinkedList<>(arrayList), serDe(fury1, fury2, new LinkedList<>(arrayList)));
assertEquals(new HashSet<>(arrayList), serDe(fury1, fury2, new HashSet<>(arrayList)));
TreeSet<String> treeSet = new TreeSet<>(Comparator.naturalOrder());
treeSet.add("str1");
treeSet.add("str2");
assertEquals(treeSet, serDe(fury1, fury2, treeSet));
}

@Test(dataProvider = "crossLanguageReferenceTrackingConfig")
public void testTreeMap(boolean referenceTracking, Language language) {
FuryBuilder builder =
Fury.builder()
.withLanguage(language)
.withRefTracking(referenceTracking)
.requireClassRegistration(false);
Fury fury1 = builder.build();
Fury fury2 = builder.build();
HashMap<String, Integer> hashMap = new HashMap<>();
hashMap.put("k1", 1);
hashMap.put("k2", 2);
Expand All @@ -155,6 +229,17 @@ public void basicTest(boolean referenceTracking, Language language) {
TreeMap<String, Integer> treeMap = new TreeMap<>(Comparator.naturalOrder());
treeMap.putAll(hashMap);
assertEquals(treeMap, serDe(fury1, fury2, treeMap));
}

@Test(dataProvider = "crossLanguageReferenceTrackingConfig")
public void testCollection(boolean referenceTracking, Language language) {
FuryBuilder builder =
Fury.builder()
.withLanguage(language)
.withRefTracking(referenceTracking)
.requireClassRegistration(false);
Fury fury1 = builder.build();
Fury fury2 = builder.build();
assertEquals(Collections.EMPTY_LIST, serDe(fury1, fury2, Collections.EMPTY_LIST));
assertEquals(Collections.EMPTY_SET, serDe(fury1, fury2, Collections.EMPTY_SET));
assertEquals(Collections.EMPTY_MAP, serDe(fury1, fury2, Collections.EMPTY_MAP));
Expand Down

0 comments on commit bf2054a

Please sign in to comment.