Skip to content

Commit

Permalink
remove junit assertions
Browse files Browse the repository at this point in the history
  • Loading branch information
robfrank committed Oct 23, 2024
1 parent b5f3cb6 commit d406295
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 61 deletions.
128 changes: 81 additions & 47 deletions engine/src/test/java/com/arcadedb/TypeConversionTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,20 +26,24 @@
import com.arcadedb.schema.Type;
import com.arcadedb.utility.DateUtils;
import com.arcadedb.utility.NanoClock;

import org.junit.jupiter.api.Test;

import java.math.*;
import java.text.*;
import java.time.*;
import java.time.chrono.*;
import java.time.temporal.*;
import java.util.*;
import java.util.concurrent.*;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.chrono.ChronoZonedDateTime;
import java.time.temporal.ChronoField;
import java.time.temporal.ChronoUnit;
import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.TimeUnit;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class TypeConversionTest extends TestHelper {
@Override
Expand Down Expand Up @@ -73,7 +77,7 @@ public void testNoConversion() {

doc.set("string", "test");
doc.set("int", 33);
doc.set("long", 33l);
doc.set("long", 33L);
doc.set("float", 33.33f);
doc.set("double", 33.33d);
doc.set("decimal", new BigDecimal("33.33"));
Expand All @@ -87,7 +91,7 @@ public void testNoConversion() {
doc.set("localDateTime", localDateTime); // SCHEMALESS

assertThat(doc.get("int")).isEqualTo(33);
assertThat(doc.get("long")).isEqualTo(33l);
assertThat(doc.get("long")).isEqualTo(33L);
assertThat(doc.get("float")).isEqualTo(33.33f);
assertThat(doc.get("double")).isEqualTo(33.33d);
assertThat(doc.get("decimal")).isEqualTo(new BigDecimal("33.33"));
Expand Down Expand Up @@ -122,10 +126,12 @@ public void testConversionDecimals() {

doc.save();

assertEquals(String.format("%.1f", 33.3F),
database.query("sql", "select decimal.format('%.1f') as d from " + doc.getIdentity()).nextIfAvailable().getProperty("d"));
assertEquals(String.format("%.2f", 33.33F),
database.query("sql", "select decimal.format('%.2f') as d from " + doc.getIdentity()).nextIfAvailable().getProperty("d"));
String property = database.query("sql", "select decimal.format('%.1f') as d from " + doc.getIdentity()).nextIfAvailable()
.getProperty("d");
assertThat(property).isEqualTo(String.format("%.1f", 33.3F));
property = database.query("sql", "select decimal.format('%.2f') as d from " + doc.getIdentity()).nextIfAvailable()
.getProperty("d");
assertThat(property).isEqualTo(String.format("%.2f", 33.33F));

doc.delete();
});
Expand Down Expand Up @@ -160,12 +166,13 @@ public void testConversionDates() {
doc.set("date", localDate);
doc.set("datetime_nanos", localDateTime);
assertThat(doc.getLocalDate("date")).isEqualTo(localDate);
assertEquals(localDateTime.truncatedTo(DateUtils.getPrecision(localDateTime.getNano())),
doc.getLocalDateTime("datetime_nanos"));

assertEquals(
TimeUnit.MILLISECONDS.convert(localDateTime.toEpochSecond(ZoneOffset.UTC), TimeUnit.SECONDS) + localDateTime.getLong(
ChronoField.MILLI_OF_SECOND), doc.getCalendar("datetime_nanos").getTime().getTime());
assertThat(doc.getLocalDateTime("datetime_nanos")).isEqualTo(
localDateTime.truncatedTo(DateUtils.getPrecision(localDateTime.getNano())));

assertThat(doc.getCalendar("datetime_nanos").getTime().getTime())
.isEqualTo(TimeUnit.MILLISECONDS.convert(localDateTime.toEpochSecond(ZoneOffset.UTC),
TimeUnit.SECONDS) + localDateTime.getLong(ChronoField.MILLI_OF_SECOND));
});
}

Expand Down Expand Up @@ -234,19 +241,28 @@ public void testLocalDateTime() throws ClassNotFoundException {
doc.reload();
assertThat(doc.get("datetime_nanos")).isEqualTo(localDateTime.truncatedTo(ChronoUnit.NANOS));

assertThat((Long) database.query("sql", "select datetime_second.asLong() as long from ConversionTest").nextIfAvailable()
.getProperty("long")).isNotNull();
assertThat((Long) database.query("sql", "select datetime_millis.asLong() as long from ConversionTest").nextIfAvailable()
.getProperty("long")).isNotNull();
assertThat((Long) database.query("sql", "select datetime_micros.asLong() as long from ConversionTest").nextIfAvailable()
.getProperty("long")).isNotNull();
assertThat((Long) database.query("sql", "select datetime_nanos.asLong() as long from ConversionTest").nextIfAvailable()
.getProperty("long")).isNotNull();

assertThat(doc.getDate("datetime_millis").getTime()).isEqualTo(TimeUnit.MILLISECONDS.convert(localDateTime.toEpochSecond(ZoneOffset.UTC), TimeUnit.SECONDS) + localDateTime.getLong(
ChronoField.MILLI_OF_SECOND));
assertThat(database.query("sql", "select datetime_second.asLong() as long from ConversionTest")
.nextIfAvailable()
.<Long>getProperty("long"))
.isNotNull();
assertThat(database.query("sql", "select datetime_millis.asLong() as long from ConversionTest")
.nextIfAvailable()
.<Long>getProperty("long"))
.isNotNull();
assertThat(database.query("sql", "select datetime_micros.asLong() as long from ConversionTest")
.nextIfAvailable()
.<Long>getProperty("long"))
.isNotNull();
assertThat(database.query("sql", "select datetime_nanos.asLong() as long from ConversionTest")
.nextIfAvailable()
.<Long>getProperty("long"))
.isNotNull();

assertThat(doc.getDate("datetime_millis").getTime()).isEqualTo(
TimeUnit.MILLISECONDS.convert(localDateTime.toEpochSecond(ZoneOffset.UTC), TimeUnit.SECONDS) + localDateTime.getLong(
ChronoField.MILLI_OF_SECOND));

assertThat(localDateTime.isEqual(doc.getLocalDateTime("datetime_nanos"))).isTrue();
assertThat(doc.getLocalDateTime("datetime_nanos")).isEqualTo(localDateTime);

} finally {
((DatabaseInternal) database).getSerializer().setDateTimeImplementation(Date.class);
Expand Down Expand Up @@ -344,7 +360,8 @@ public void testZonedDateTime() throws ClassNotFoundException {
});

doc.reload();
assertThat(zonedDateTime.truncatedTo(ChronoUnit.SECONDS).isEqual((ChronoZonedDateTime<?>) doc.get("datetime_second"))).isTrue();
assertThat(
zonedDateTime.truncatedTo(ChronoUnit.SECONDS).isEqual((ChronoZonedDateTime<?>) doc.get("datetime_second"))).isTrue();

database.transaction(() -> {
// TEST MILLISECONDS PRECISION
Expand All @@ -353,7 +370,8 @@ public void testZonedDateTime() throws ClassNotFoundException {
});

doc.reload();
assertThat(zonedDateTime.truncatedTo(ChronoUnit.MILLIS).isEqual((ChronoZonedDateTime<?>) doc.get("datetime_millis"))).isTrue();
assertThat(
zonedDateTime.truncatedTo(ChronoUnit.MILLIS).isEqual((ChronoZonedDateTime<?>) doc.get("datetime_millis"))).isTrue();

if (!System.getProperty("os.name").startsWith("Windows")) {
// NOTE: ON WINDOWS MICROSECONDS ARE NOT HANDLED CORRECTLY
Expand All @@ -365,7 +383,8 @@ public void testZonedDateTime() throws ClassNotFoundException {
});

doc.reload();
assertThat(zonedDateTime.truncatedTo(ChronoUnit.MICROS).isEqual((ChronoZonedDateTime<?>) doc.get("datetime_micros"))).isTrue();
assertThat(
zonedDateTime.truncatedTo(ChronoUnit.MICROS).isEqual((ChronoZonedDateTime<?>) doc.get("datetime_micros"))).isTrue();
}

// TEST NANOSECOND PRECISION
Expand All @@ -374,9 +393,8 @@ public void testZonedDateTime() throws ClassNotFoundException {
doc.save();
});
doc.reload();
assertThat(zonedDateTime.truncatedTo(ChronoUnit.NANOS).isEqual((ChronoZonedDateTime<?>) doc.get("datetime_nanos"))).isTrue();
assertThat(zonedDateTime.isEqual(doc.getZonedDateTime("datetime_nanos"))).isTrue();

assertThat(doc.getZonedDateTime("datetime_nanos")).isEqualTo(zonedDateTime.truncatedTo(ChronoUnit.NANOS));
assertThat(doc.getZonedDateTime("datetime_nanos")).isEqualTo(zonedDateTime);
} finally {
((DatabaseInternal) database).getSerializer().setDateTimeImplementation(Date.class);
}
Expand All @@ -397,7 +415,7 @@ public void testInstant() throws ClassNotFoundException {
});

doc.reload();
assertThat(doc.get("datetime_second")).isEqualTo(instant.truncatedTo(ChronoUnit.SECONDS));
assertThat(doc.getInstant("datetime_second")).isEqualTo(instant.truncatedTo(ChronoUnit.SECONDS));

database.transaction(() -> {
// TEST MILLISECONDS PRECISION
Expand All @@ -406,7 +424,7 @@ public void testInstant() throws ClassNotFoundException {
});

doc.reload();
assertThat(doc.get("datetime_millis")).isEqualTo(instant.truncatedTo(ChronoUnit.MILLIS));
assertThat(doc.getInstant("datetime_millis")).isEqualTo(instant.truncatedTo(ChronoUnit.MILLIS));

// TEST MICROSECONDS PRECISION
database.transaction(() -> {
Expand All @@ -417,15 +435,15 @@ public void testInstant() throws ClassNotFoundException {
doc.reload();
if (!System.getProperty("os.name").startsWith("Windows"))
// NOTE: ON WINDOWS MICROSECONDS ARE NOT HANDLED CORRECTLY
assertThat(doc.get("datetime_micros")).isEqualTo(instant.truncatedTo(ChronoUnit.MICROS));
assertThat(doc.getInstant("datetime_micros")).isEqualTo(instant.truncatedTo(ChronoUnit.MICROS));

// TEST NANOSECOND PRECISION
database.transaction(() -> {
doc.set("datetime_nanos", instant);
doc.save();
});
doc.reload();
assertThat(doc.get("datetime_nanos")).isEqualTo(instant.truncatedTo(ChronoUnit.NANOS));
assertThat(doc.getInstant("datetime_nanos")).isEqualTo(instant.truncatedTo(ChronoUnit.NANOS));
assertThat(doc.getInstant("datetime_nanos")).isEqualTo(instant);

} finally {
Expand Down Expand Up @@ -501,7 +519,11 @@ public void testSQLMath() {
assertThat(resultSet.hasNext()).isFalse();

resultSet = database.command("sql",
"select sysdate() - datetime_micros as diff from ConversionTest where sysdate() - datetime_micros < duration(100000000000, 'nanosecond')");
"""
select sysdate() - datetime_micros as diff
from ConversionTest
where sysdate() - datetime_micros < duration(100000000000, 'nanosecond')
""");
assertThat(resultSet.hasNext()).isTrue();
result = resultSet.next();
assertThat(((Duration) result.getProperty("diff")).isNegative()).as("Returned " + result.getProperty("diff")).isFalse();
Expand All @@ -513,7 +535,11 @@ public void testSQLMath() {
assertThat(resultSet.hasNext()).isFalse();

resultSet = database.command("sql",
"select datetime_micros - sysdate() as diff from ConversionTest where abs( datetime_micros - sysdate() ) < duration(100000000000, 'nanosecond')");
"""
select datetime_micros - sysdate() as diff
from ConversionTest
where abs( datetime_micros - sysdate() ) < duration(100000000000, 'nanosecond')
""");

assertThat(resultSet.hasNext()).isTrue();
result = resultSet.next();
Expand All @@ -526,7 +552,11 @@ public void testSQLMath() {
assertThat(resultSet.hasNext()).isFalse();

resultSet = database.command("sql",
"select datetime_micros - date(?, 'yyyy-MM-dd HH:mm:ss.SSS') as diff from ConversionTest where abs( datetime_micros - sysdate() ) < duration(100000000000, 'nanosecond')",
"""
select datetime_micros - date(?, 'yyyy-MM-dd HH:mm:ss.SSS') as diff
from ConversionTest
where abs( datetime_micros - sysdate() ) < duration(100000000000, 'nanosecond')
""",
DateUtils.getFormatter("yyyy-MM-dd HH:mm:ss.SSS").format(LocalDateTime.now()));

assertThat(resultSet.hasNext()).isTrue();
Expand All @@ -540,7 +570,11 @@ public void testSQLMath() {
assertThat(resultSet.hasNext()).isFalse();

resultSet = database.command("sql",
"select datetime_micros - date(?, 'yyyy-MM-dd HH:mm:ss.SSS') as diff from ConversionTest where abs( datetime_micros - sysdate() ) < duration(3, \"second\")",
"""
select datetime_micros - date(?, 'yyyy-MM-dd HH:mm:ss.SSS') as diff
from ConversionTest
where abs( datetime_micros - sysdate() ) < duration(3, "second")
""",
DateUtils.getFormatter("yyyy-MM-dd HH:mm:ss.SSS").format(LocalDateTime.now()));

assertThat(resultSet.hasNext()).isTrue();
Expand Down
24 changes: 10 additions & 14 deletions server/src/test/java/com/arcadedb/server/RemoteQueriesIT.java
Original file line number Diff line number Diff line change
Expand Up @@ -200,34 +200,30 @@ public void testLocalDateTimeOrderBy() {
arcadeDBServer = new ArcadeDBServer(configuration);
arcadeDBServer.start();
Database database = arcadeDBServer.getDatabase("testLocalDateTimeOrderBy");
String name, type;
LocalDateTime start, stop;

DateTimeFormatter FILENAME_TIME_FORMAT = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss");
Result result;
String sqlString = "INSERT INTO Product SET name = ?, type = ?, start = ?, stop = ?";

name = "CS_OPER_AUX_ORBDOR_20220318T215523_20220320T002323_F001.EEF";
type = "AUX_ORBDOR";
start = LocalDateTime.parse("20220318T215523", FILENAME_TIME_FORMAT);
stop = LocalDateTime.parse("20220320T002323", FILENAME_TIME_FORMAT);
Object[] parameters1 = { name, type, start, stop };
try (ResultSet resultSet = database.command("sql", sqlString, parameters1)) {
String name = "CS_OPER_AUX_ORBDOR_20220318T215523_20220320T002323_F001.EEF";
String type = "AUX_ORBDOR";
LocalDateTime start = LocalDateTime.parse("20220318T215523", FILENAME_TIME_FORMAT);
LocalDateTime stop = LocalDateTime.parse("20220320T002323", FILENAME_TIME_FORMAT);
try (ResultSet resultSet = database.command("sql", sqlString, name, type, start, stop)) {
assertThat(resultSet.hasNext()).isTrue();
result = resultSet.next();
assertThat(start).as("start value retrieved does not match start value inserted").isEqualTo(result.getProperty("start"));
} catch (Exception e) {
e.printStackTrace();
assertThat(start).as("start value retrieved does not match start value inserted").isEqualTo(result.<LocalDateTime>getProperty("start"));
}

sqlString = "SELECT name, start, stop FROM Product WHERE type = ? AND start <= ? AND stop >= ? ORDER BY start DESC";
type = "AUX_ORBDOR";
start = LocalDateTime.parse("2022-03-19T00:26:24.404379", DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSS"));
stop = LocalDateTime.parse("2022-03-19T00:28:26.525650", DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSS"));
Object[] parameters2 = { type, start, stop };
try (ResultSet resultSet = database.query("sql", sqlString, parameters2)) {
try (ResultSet resultSet = database.query("sql", sqlString, type, start, stop)) {
assertThat(resultSet.hasNext()).isTrue();
while (resultSet.hasNext()) {
result = resultSet.next();
//Assertions.assertThat(result.getProperty("start").equals(start)).as("start value retrieved does not match start value inserted").isTrue();
assertThat(result.<LocalDateTime>getProperty("start")).isNotEqualTo(start);
}
}
}
Expand Down

0 comments on commit d406295

Please sign in to comment.