package com.oracle.truffle.llvm.tests.types.floating;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import com.oracle.truffle.llvm.runtime.floating.LLVM80BitFloat;
public class LLVM80BitFromDoubleTest extends LLVM80BitTest {
@Test
public void testZero() {
LLVM80BitFloat val = LLVM80BitFloat.fromDouble(0);
assertEquals(zero(), val);
}
@Test
public void testMinusZero1() {
LLVM80BitFloat val = LLVM80BitFloat.fromDouble(-0.0);
assertEquals(minusZero(), val);
}
@Test
public void testMinusZero2() {
LLVM80BitFloat val = LLVM80BitFloat.fromRawValues(true, 0, 0);
assertEquals(val, val(-0.0));
}
@Test
public void testNegativeInfinity() {
LLVM80BitFloat val = LLVM80BitFloat.fromDouble(Double.NEGATIVE_INFINITY);
LLVM80BitFloat expected = LLVM80BitFloat.fromRawValues(true, 0x7fff, 0x8000000000000000L);
assertEquals(expected, val);
}
@Test
public void testNaN() {
LLVM80BitFloat val = LLVM80BitFloat.fromDouble(Double.NaN);
LLVM80BitFloat expected = LLVM80BitFloat.fromRawValues(false, 0x7fff, 0xc000000000000000L);
assertEquals(expected, val);
}
@Test
public void testPositiveInfinity() {
LLVM80BitFloat val = LLVM80BitFloat.fromDouble(Double.POSITIVE_INFINITY);
LLVM80BitFloat expected = LLVM80BitFloat.fromRawValues(false, 0x7fff, 0x8000000000000000L);
assertEquals(expected, val);
}
@Test
public void testOne() {
LLVM80BitFloat val = LLVM80BitFloat.fromDouble(1);
assertEquals(one(), val);
}
@Test
public void testMinusOne() {
LLVM80BitFloat val = LLVM80BitFloat.fromDouble(-1);
assertEquals(minusOne(), val);
}
@Test
public void testRandomNumber1() {
LLVM80BitFloat val = LLVM80BitFloat.fromDouble(123.436789);
LLVM80BitFloat expected = LLVM80BitFloat.fromRawValues(false, 0x4005, 0xf6dfa2cecc815000L);
assertEquals(expected, val);
}
@Test
public void testRandomNumber2() {
LLVM80BitFloat val = LLVM80BitFloat.fromDouble(1.5);
LLVM80BitFloat expected = LLVM80BitFloat.fromRawValues(false, 0x3fff, 0xc000000000000000L);
assertEquals(expected, val);
}
}