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 LongMemoryTest { @Test public void testPlus(){ LongMemory memory = new LongMemory(10); Assert.assertEquals(12, memory.plus(2).toLong()); Assert.assertEquals(Memory.Type.INT, memory.plus(2).type); Assert.assertEquals(11, memory.plus(true).toLong()); Assert.assertEquals(10, memory.plus(false).toLong()); Assert.assertEquals(Memory.Type.INT, memory.plus(false).type); Assert.assertEquals(12, memory.plus(2.0).toDouble(), 0.0001); Assert.assertEquals(Memory.Type.DOUBLE, memory.plus(2.0).type); } @Test public void testMinus(){ LongMemory memory = new LongMemory(10); Assert.assertEquals(8, memory.minus(2).toLong()); Assert.assertEquals(Memory.Type.INT, memory.minus(2).type); Assert.assertEquals(9, memory.minus(true).toLong()); Assert.assertEquals(10, memory.minus(false).toLong()); Assert.assertEquals(Memory.Type.INT, memory.minus(false).type); Assert.assertEquals(8.0, memory.minus(2.0).toDouble(), 0.0001); Assert.assertEquals(Memory.Type.DOUBLE, memory.minus(2.0).type); } @Test public void testMul(){ LongMemory memory = new LongMemory(10); Assert.assertEquals(20, memory.mul(2).toLong()); Assert.assertEquals(Memory.Type.INT, memory.mul(2).type); Assert.assertEquals(10, memory.mul(true).toLong()); Assert.assertEquals(0, memory.mul(false).toLong()); Assert.assertEquals(Memory.Type.INT, memory.mul(false).type); Assert.assertEquals(20, memory.mul(2.0).toDouble(), 0.0001); Assert.assertEquals(Memory.Type.DOUBLE, memory.mul(2.0).type); } @Test public void testPow(){ LongMemory memory = new LongMemory(10); Assert.assertEquals(100, memory.pow(2).toLong()); Assert.assertEquals(Memory.Type.INT, memory.pow(2).type); Assert.assertEquals(10, memory.pow(true).toLong()); Assert.assertEquals(1, memory.pow(false).toLong()); Assert.assertEquals(Memory.Type.INT, memory.pow(false).type); Assert.assertEquals(100, memory.pow(2.0).toDouble(), 0.0001); Assert.assertEquals(Memory.Type.DOUBLE, memory.pow(2.0).type); memory = new LongMemory(Long.MAX_VALUE); Assert.assertEquals(Memory.Type.DOUBLE, memory.pow(3).type); } @Test public void testDiv(){ LongMemory memory = new LongMemory(10); Assert.assertEquals(5, memory.div(2).toLong()); Assert.assertEquals(Memory.Type.INT, memory.div(2).type); Assert.assertEquals(10, memory.div(true).toLong()); Assert.assertEquals(Memory.Type.INT, memory.div(true).type); Assert.assertEquals(5, memory.div(2.0).toDouble(), 0.0001); Assert.assertEquals(Memory.Type.DOUBLE, memory.div(2.0).type); } @Test public void testDivInvalidFalse(){ LongMemory memory = new LongMemory(10); Assert.assertEquals(Memory.FALSE, memory.div(false)); } @Test public void testDivInvalidFalse2(){ LongMemory memory = new LongMemory(10); Assert.assertEquals(Memory.FALSE, memory.div(Memory.FALSE)); } @Test public void testDivInvalidNull(){ LongMemory memory = new LongMemory(10); Assert.assertEquals(Memory.FALSE, memory.div(Memory.NULL)); } }