package com.orientechnologies.orient.core.sql.functions.stat;
import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
import com.orientechnologies.orient.core.record.impl.ODocument;
import com.orientechnologies.orient.core.sql.functions.math.OSQLFunctionDecimal;
import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.math.BigDecimal;
import java.util.List;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNull;
@Test
public class OSQLFunctionDecimalTest {
private OSQLFunctionDecimal function;
@BeforeMethod
public void setup() {
function = new OSQLFunctionDecimal();
}
@Test
public void testEmpty() {
Object result = function.getResult();
assertNull(result);
}
@Test
public void testFromInteger() {
function.execute(null, null, null, new Object[] { 12 }, null);
Object result = function.getResult();
assertEquals(result, new BigDecimal(12));
}
@Test
public void testFromLong() {
function.execute(null, null, null, new Object[] { 1287623847384l }, null);
Object result = function.getResult();
assertEquals(result, new BigDecimal(1287623847384l));
}
@Test
public void testFromString() {
String initial = "12324124321234543256758654.76543212345676543254356765434567654";
function.execute(null, null, null, new Object[] { initial }, null);
Object result = function.getResult();
assertEquals(result, new BigDecimal(initial));
System.out.println(result);
}
public void testFromQuery() {
ODatabaseDocumentTx db = new ODatabaseDocumentTx("memory:testDecimalFunction");
db.create();
String initial = "12324124321234543256758654.76543212345676543254356765434567654";
List<ODocument> result = db.query(new OSQLSynchQuery<ODocument>("select decimal('" + initial + "')"));
ODocument r = result.get(0);
assertEquals(result.size(), 1);
assertEquals(r.field("decimal"), new BigDecimal(initial));
db.close();
}
}