package php.runtime.memory;
import org.junit.Assert;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.junit.runners.MethodSorters;
import php.runtime.Memory;
@RunWith(JUnit4.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TrueMemoryTest {
@Test
public void testBasic(){
Assert.assertNotNull(Memory.TRUE);
Assert.assertTrue(Memory.TRUE instanceof TrueMemory);
}
@Test
public void testToNumeric(){
Assert.assertTrue(Memory.TRUE.toNumeric() instanceof LongMemory);
Assert.assertEquals(1, Memory.TRUE.toNumeric().toLong());
}
@Test
public void testTyped(){
Assert.assertTrue(Memory.TRUE.toBoolean());
Assert.assertEquals("1", Memory.TRUE.toString());
Assert.assertEquals(1.0, Memory.TRUE.toDouble(), 0.00001);
Assert.assertEquals(Memory.TRUE, Memory.TRUE.toImmutable());
}
@Test
public void testNegative(){
Assert.assertEquals(-1, Memory.TRUE.negative().toLong());
Assert.assertTrue(Memory.TRUE.negative() instanceof LongMemory);
}
@Test
public void testConcat(){
Assert.assertEquals("1foobar", Memory.TRUE.concat("foobar"));
Assert.assertEquals("1foobar", Memory.TRUE.concat(new StringMemory("foobar")));
Assert.assertEquals("19", Memory.TRUE.concat(9));
Assert.assertEquals("19", Memory.TRUE.concat(new LongMemory(9)));
Assert.assertEquals("11", Memory.TRUE.concat(true));
Assert.assertEquals("11", Memory.TRUE.concat(Memory.TRUE));
Assert.assertEquals("1", Memory.TRUE.concat(false));
Assert.assertEquals("1", Memory.TRUE.concat(Memory.FALSE));
Assert.assertEquals("11", Memory.TRUE.concat(1.0));
Assert.assertEquals("foobar1", Memory.TRUE.concatRight("foobar"));
Assert.assertEquals("11", Memory.TRUE.concatRight(true));
Assert.assertEquals("1", Memory.TRUE.concatRight(false));
Assert.assertEquals("331", Memory.TRUE.concatRight(33));
Assert.assertEquals("22.01", Memory.TRUE.concatRight(22.0));
}
@Test
public void testPlus(){
Assert.assertEquals(2, Memory.TRUE.plus(Memory.CONST_INT_1).toLong());
Assert.assertTrue(Memory.TRUE.plus(Memory.CONST_INT_1) instanceof LongMemory);
Assert.assertEquals(2.0, Memory.TRUE.plus(Memory.CONST_DOUBLE_1).toDouble(), 0.00001);
Assert.assertTrue(Memory.TRUE.plus(Memory.CONST_DOUBLE_1) instanceof DoubleMemory);
Assert.assertEquals(2, Memory.TRUE.plus(Memory.TRUE).toLong());
Assert.assertTrue(Memory.TRUE.plus(Memory.TRUE) instanceof LongMemory);
Assert.assertEquals(1, Memory.TRUE.plus(Memory.FALSE).toLong());
Assert.assertTrue(Memory.TRUE.plus(Memory.FALSE) instanceof LongMemory);
Assert.assertEquals(2, Memory.TRUE.plus(true).toLong());
Assert.assertTrue(Memory.TRUE.plus(true) instanceof LongMemory);
Assert.assertEquals(1, Memory.TRUE.plus(false).toLong());
Assert.assertTrue(Memory.TRUE.plus(false) instanceof LongMemory);
Assert.assertEquals(34, Memory.TRUE.plus(33).toLong());
Assert.assertTrue(Memory.TRUE.plus(33) instanceof LongMemory);
Assert.assertEquals(3.5, Memory.TRUE.plus(2.5).toDouble(), 0.00001);
}
@Test
public void testMinus(){
Assert.assertEquals(0, Memory.TRUE.minus(Memory.CONST_INT_1).toLong());
Assert.assertTrue(Memory.TRUE.minus(Memory.CONST_INT_1) instanceof LongMemory);
Assert.assertEquals(0.0, Memory.TRUE.minus(Memory.CONST_DOUBLE_1).toDouble(), 0.00001);
Assert.assertTrue(Memory.TRUE.minus(Memory.CONST_DOUBLE_1) instanceof DoubleMemory);
Assert.assertEquals(0, Memory.TRUE.minus(Memory.TRUE).toLong());
Assert.assertTrue(Memory.TRUE.minus(Memory.TRUE) instanceof LongMemory);
Assert.assertEquals(1, Memory.TRUE.minus(Memory.FALSE).toLong());
Assert.assertTrue(Memory.TRUE.minus(Memory.FALSE) instanceof LongMemory);
Assert.assertEquals(0, Memory.TRUE.minus(true).toLong());
Assert.assertTrue(Memory.TRUE.minus(true) instanceof LongMemory);
Assert.assertEquals(1, Memory.TRUE.minus(false).toLong());
Assert.assertTrue(Memory.TRUE.minus(false) instanceof LongMemory);
Assert.assertEquals(-1, Memory.TRUE.minus(2).toLong());
Assert.assertTrue(Memory.TRUE.minus(2) instanceof LongMemory);
Assert.assertEquals(0.5, Memory.TRUE.minus(0.5).toDouble(), 0.00001);
Assert.assertEquals(0, Memory.TRUE.minusRight(true).toLong());
Assert.assertEquals(-1, Memory.TRUE.minusRight(false).toLong());
Assert.assertEquals(1, Memory.TRUE.minusRight(2).toLong());
Assert.assertEquals(1.0, Memory.TRUE.minusRight(2.0).toDouble(), 0.0000001);
Assert.assertEquals(1.0, Memory.TRUE.minusRight("2.0").toDouble(), 0.0000001);
}
@Test
public void testMul(){
Assert.assertEquals(1, Memory.TRUE.mul(Memory.CONST_INT_1).toLong());
Assert.assertTrue(Memory.TRUE.mul(Memory.CONST_INT_1) instanceof LongMemory);
Assert.assertEquals(1.0, Memory.TRUE.mul(Memory.CONST_DOUBLE_1).toDouble(), 0.00001);
Assert.assertTrue(Memory.TRUE.mul(Memory.CONST_DOUBLE_1) instanceof DoubleMemory);
Assert.assertEquals(1, Memory.TRUE.mul(Memory.TRUE).toLong());
Assert.assertTrue(Memory.TRUE.mul(Memory.TRUE) instanceof LongMemory);
Assert.assertEquals(0, Memory.TRUE.mul(Memory.FALSE).toLong());
Assert.assertTrue(Memory.TRUE.mul(Memory.FALSE) instanceof LongMemory);
Assert.assertEquals(1, Memory.TRUE.mul(true).toLong());
Assert.assertTrue(Memory.TRUE.mul(true) instanceof LongMemory);
Assert.assertEquals(0, Memory.TRUE.mul(false).toLong());
Assert.assertTrue(Memory.TRUE.mul(false) instanceof LongMemory);
Assert.assertEquals(2, Memory.TRUE.mul(2).toLong());
Assert.assertTrue(Memory.TRUE.mul(2) instanceof LongMemory);
Assert.assertEquals(0.5, Memory.TRUE.mul(0.5).toDouble(), 0.00001);
}
@Test
public void testDiv(){
Assert.assertEquals(1, Memory.TRUE.div(Memory.CONST_INT_1).toLong());
Assert.assertTrue(Memory.TRUE.div(Memory.CONST_INT_1) instanceof LongMemory);
Assert.assertEquals(1.0, Memory.TRUE.div(Memory.CONST_DOUBLE_1).toDouble(), 0.00001);
Assert.assertTrue(Memory.TRUE.div(Memory.CONST_DOUBLE_1) instanceof DoubleMemory);
Assert.assertEquals(1, Memory.TRUE.div(Memory.TRUE).toLong());
Assert.assertTrue(Memory.TRUE.div(Memory.TRUE) instanceof LongMemory);
Assert.assertEquals(0, Memory.TRUE.div(Memory.FALSE).toLong());
Assert.assertTrue(Memory.TRUE.div(Memory.FALSE) instanceof FalseMemory);
Assert.assertEquals(1, Memory.TRUE.div(true).toLong());
Assert.assertTrue(Memory.TRUE.div(true) instanceof LongMemory);
Assert.assertEquals(0, Memory.TRUE.div(false).toLong());
Assert.assertTrue(Memory.TRUE.div(false) instanceof FalseMemory);
Assert.assertEquals(0.5, Memory.TRUE.div(2).toDouble(), 0.0000001);
Assert.assertTrue(Memory.TRUE.div(2) instanceof DoubleMemory);
Assert.assertEquals(2, Memory.TRUE.div(0.5).toDouble(), 0.00001);
Assert.assertEquals(1, Memory.TRUE.divRight(true).toLong());
Assert.assertEquals(0, Memory.TRUE.divRight(false).toLong());
Assert.assertTrue(Memory.TRUE.divRight(false) instanceof LongMemory);
Assert.assertEquals(1, Memory.TRUE.divRight(true).toLong());
Assert.assertTrue(Memory.TRUE.divRight(true) instanceof LongMemory);
Assert.assertTrue(Memory.TRUE.divRight(1) instanceof LongMemory);
Assert.assertTrue(Memory.TRUE.divRight(1).toLong() == 1);
Assert.assertTrue(Memory.TRUE.divRight(1.0) instanceof DoubleMemory);
Assert.assertEquals(1, Memory.TRUE.divRight(1.0).toDouble(), 0.000001);
}
@Test
public void testMod(){
Assert.assertEquals(0, Memory.TRUE.mod(Memory.CONST_INT_1).toLong());
Assert.assertTrue(Memory.TRUE.mod(Memory.CONST_INT_1) instanceof LongMemory);
Assert.assertEquals(0, Memory.TRUE.mod(Memory.CONST_DOUBLE_1).toDouble(), 0.00001);
Assert.assertTrue(Memory.TRUE.mod(Memory.CONST_DOUBLE_1) instanceof LongMemory);
Assert.assertEquals(0, Memory.TRUE.mod(Memory.TRUE).toLong());
Assert.assertTrue(Memory.TRUE.mod(Memory.TRUE) instanceof LongMemory);
Assert.assertEquals(0, Memory.TRUE.mod(Memory.FALSE).toLong());
Assert.assertTrue(Memory.TRUE.mod(Memory.FALSE) instanceof FalseMemory);
Assert.assertEquals(0, Memory.TRUE.mod(true).toLong());
Assert.assertTrue(Memory.TRUE.mod(true) instanceof LongMemory);
Assert.assertEquals(0, Memory.TRUE.mod(false).toLong());
Assert.assertTrue(Memory.TRUE.mod(false) instanceof FalseMemory);
Assert.assertEquals(1, Memory.TRUE.mod(2).toLong());
Assert.assertTrue(Memory.TRUE.mod(2) instanceof LongMemory);
Assert.assertTrue(Memory.TRUE.mod(0.5) instanceof FalseMemory);
Assert.assertEquals(0, Memory.TRUE.modRight(true).toLong());
Assert.assertTrue(Memory.TRUE.modRight(false).toLong() == 0);
Assert.assertTrue(Memory.TRUE.modRight(false) instanceof LongMemory);
Assert.assertEquals(0, Memory.TRUE.modRight(true).toLong());
Assert.assertTrue(Memory.TRUE.modRight(true) instanceof LongMemory);
Assert.assertTrue(Memory.TRUE.modRight(1) instanceof LongMemory);
Assert.assertTrue(Memory.TRUE.modRight(1).toLong() == 0);
Assert.assertTrue(Memory.TRUE.modRight(1.0) instanceof LongMemory);
Assert.assertEquals(0, Memory.TRUE.modRight(1.3).toDouble(), 0.000001);
}
@Test
public void testPow(){
Assert.assertEquals(1, Memory.TRUE.pow(Memory.CONST_INT_1).toLong());
Assert.assertTrue(Memory.TRUE.pow(Memory.CONST_INT_1) instanceof LongMemory);
Assert.assertEquals(1, Memory.TRUE.pow(Memory.TRUE).toLong());
Assert.assertTrue(Memory.TRUE.pow(Memory.TRUE) instanceof LongMemory);
Assert.assertEquals(1, Memory.TRUE.pow(Memory.FALSE).toLong());
Assert.assertTrue(Memory.TRUE.pow(Memory.FALSE) instanceof LongMemory);
Assert.assertEquals(1, Memory.TRUE.pow(2).toLong());
Assert.assertTrue(Memory.TRUE.pow(2) instanceof LongMemory);
Assert.assertEquals(1, Memory.TRUE.powRight(true).toLong());
Assert.assertTrue(Memory.TRUE.powRight(false).toLong() == 0);
Assert.assertTrue(Memory.TRUE.powRight(false) instanceof LongMemory);
Assert.assertEquals(1, Memory.TRUE.powRight(true).toLong());
Assert.assertTrue(Memory.TRUE.powRight(true) instanceof LongMemory);
Assert.assertTrue(Memory.TRUE.powRight(1) instanceof LongMemory);
Assert.assertTrue(Memory.TRUE.powRight(1).toLong() == 1);
Assert.assertTrue(Memory.TRUE.powRight(1.0) instanceof DoubleMemory);
Assert.assertEquals(1.3, Memory.TRUE.powRight(1.3).toDouble(), 0.000001);
}
}