Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions src/main/java/io/apimatic/core/types/OptionalNullable.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,12 @@
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Objects;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import io.apimatic.core.utilities.LocalDateTimeHelper;

/**
Expand Down Expand Up @@ -55,6 +58,24 @@ public static <T> T getFrom(OptionalNullable<T> optionalNullable) {
return (optionalNullable == null) ? null : optionalNullable.value;
}

@Override
public int hashCode() {
return Objects.hash(value);
}

@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}

if (obj instanceof OptionalNullable<?>) {
Comment thread
sufyankhanrao marked this conversation as resolved.
return Objects.equals(((OptionalNullable<?>) obj).value, value);
}

return Objects.equals(obj, value);
Comment thread
asadali214 marked this conversation as resolved.
}

/**
* JsonSerializer for the {@link OptionalNullable} instance. It is used to Serialize an
* {@link OptionalNullable} as its encapsulated object.
Expand Down
47 changes: 45 additions & 2 deletions src/test/java/apimatic/core/type/OptionalNullableTest.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
package apimatic.core.type;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;

import org.junit.Test;
import apimatic.core.models.Rfc1123Date;
import apimatic.core.models.Rfc1123DateArray;
Expand All @@ -21,12 +26,12 @@
import apimatic.core.models.UnixDate;
import apimatic.core.models.UnixDateArray;
import apimatic.core.models.UnixDateMap;
import io.apimatic.core.types.OptionalNullable;
import io.apimatic.core.utilities.CoreHelper;
import io.apimatic.core.utilities.LocalDateTimeHelper;

public class OptionalNullableTest {


/**
* Simple date string.
*/
Expand Down Expand Up @@ -91,11 +96,18 @@ public class OptionalNullableTest {
* An instance of {@link LocalDateTime}.
*/
private static final LocalDateTime LOCAL_DATE_TIME = LocalDateTime.of(2021, 1, 20, 12, 12, 41);

/**
* An instance of {@link LocalDate}.
*/
private static final LocalDate LOCAL_DATE = LocalDate.of(2020, 1, 8);
/**
* An instance of a number.
*/
private static final int NUMBER_124 = 124;
/**
* An instance of a number.
*/
private static final int NUMBER_125 = 125;

@Test
public void testSimpleDate() throws IOException {
Expand Down Expand Up @@ -257,4 +269,35 @@ public void testRfc8601DateMapToString() throws IOException {
String actual = rfc8601DateMap.toString();
assertEquals(actual, expected);
}

@Test
public void testEquals() throws IOException {
OptionalNullable<String> object1 = OptionalNullable.of("some string");
OptionalNullable<String> object2 = OptionalNullable.of("some string");
OptionalNullable<String> object3 = OptionalNullable.of("some other string");
OptionalNullable<Integer> object4 = OptionalNullable.of(NUMBER_124);
OptionalNullable<Integer> object5 = OptionalNullable.of(null);

assertTrue(object1.equals(object1));
Comment thread
asadali214 marked this conversation as resolved.
assertTrue(object1.equals(object2));
assertTrue(object1.equals("some string"));
assertTrue(object4.equals(NUMBER_124));
assertTrue(object5.equals(null));

assertFalse(object1.equals(object3));
assertFalse(object1.equals(object4));
assertFalse(object4.equals(NUMBER_125));
assertFalse(object1.equals(null));
}

@Test
public void testHashCode() throws IOException {
OptionalNullable<String> object1 = OptionalNullable.of("some string");
OptionalNullable<String> object2 = OptionalNullable.of("some string");
OptionalNullable<Integer> object3 = OptionalNullable.of(NUMBER_124);

assertEquals(object1.hashCode(), object2.hashCode());
assertEquals(object1.hashCode(), Objects.hash("some string"));
assertEquals(object3.hashCode(), Objects.hash(NUMBER_124));
}
}