Search in sources :

Example 61 with Memory

use of php.runtime.Memory in project jphp by jphp-compiler.

the class SimpleExpressionTest method testUnaryPlusMinus.

@Test
public void testUnaryPlusMinus() {
    Memory memory;
    memory = runDynamic("+ 1");
    Assert.assertEquals(1, memory.toLong());
    memory = runDynamic("- 1");
    Assert.assertEquals(-1, memory.toLong());
    memory = runDynamic("+ 0x01");
    Assert.assertEquals(1, memory.toLong());
    memory = runDynamic("- 0x01");
    Assert.assertEquals(-1, memory.toLong());
    memory = runDynamic("+ 0b01");
    Assert.assertEquals(1, memory.toLong());
    memory = runDynamic("- 0b01");
    Assert.assertEquals(-1, memory.toLong());
    memory = runDynamic("+ 010");
    Assert.assertEquals(8, memory.toLong());
    memory = runDynamic("- 010");
    Assert.assertEquals(-8, memory.toLong());
}
Also used : Memory(php.runtime.Memory) Test(org.junit.Test)

Example 62 with Memory

use of php.runtime.Memory in project jphp by jphp-compiler.

the class SimpleExpressionTest method testReferences.

@Test
public void testReferences() {
    Memory memory;
    memory = run("$x = 40; $y =& $x; $y = 10; return $x;", false);
    Assert.assertEquals(10, memory.toLong());
    memory = runDynamic("$x = 40; $y =& $x; $y = 10; return $x;", false);
    Assert.assertEquals(10, memory.toLong());
    memory = runDynamic("$x = array(20, 40); $y =& $x[0]; $y = 40; return $x;", false);
    Assert.assertTrue(memory.isArray());
    Assert.assertEquals(40, memory.valueOfIndex(0).toLong());
    Assert.assertEquals(40, memory.valueOfIndex(1).toLong());
    memory = run("$x = array(20, 40); $y =& $x[0]; $y = 40; return $x;", false);
    Assert.assertTrue(memory.isArray());
    Assert.assertEquals(40, memory.valueOfIndex(0).toLong());
    Assert.assertEquals(40, memory.valueOfIndex(1).toLong());
    memory = runDynamic("$y =& $x['z']; $x['z'] = 40; return $y;", false);
    Assert.assertEquals(40, memory.toLong());
    memory = run("$y =& $x['z']; $x['z'] = 40; return $y;", false);
    Assert.assertEquals(40, memory.toLong());
}
Also used : Memory(php.runtime.Memory) Test(org.junit.Test)

Example 63 with Memory

use of php.runtime.Memory in project jphp by jphp-compiler.

the class SimpleExpressionTest method testAndOrComplex.

@Test
public void testAndOrComplex() {
    Memory memory = runDynamic("$x || (!$y && !false || true)");
    Assert.assertEquals(true, memory.toBoolean());
    memory = runDynamic("$x or (!$y and !false)");
    Assert.assertEquals(true, memory.toBoolean());
    memory = runDynamic("!$x && ($y || true)");
    Assert.assertEquals(true, memory.toBoolean());
    memory = runDynamic("!$x and ($y or true)");
    Assert.assertEquals(true, memory.toBoolean());
    memory = runDynamic("!($x && $y) && true || $z");
    Assert.assertEquals(true, memory.toBoolean());
    memory = runDynamic("$x || !$y && true");
    Assert.assertEquals(true, memory.toBoolean());
    memory = runDynamic("$x || (!$y && !null && 100500)");
    Assert.assertEquals(true, memory.toBoolean());
    memory = runDynamic("$z = $x || 22; return $z", false);
    Assert.assertEquals(Memory.TRUE, memory.toValue());
}
Also used : Memory(php.runtime.Memory) Test(org.junit.Test)

Example 64 with Memory

use of php.runtime.Memory in project jphp by jphp-compiler.

the class SimpleExpressionTest method testArithmetic.

@Test
public void testArithmetic() {
    Memory memory = run("1 + 2");
    Assert.assertEquals(3, memory.toLong());
    Assert.assertTrue(memory instanceof LongMemory);
    memory = run("1 - 2");
    Assert.assertEquals(-1, memory.toLong());
    Assert.assertTrue(memory instanceof LongMemory);
    memory = run("-1 - 2");
    Assert.assertEquals(-3, memory.toLong());
    Assert.assertTrue(memory instanceof LongMemory);
    memory = run("-1 * 2");
    Assert.assertEquals(-2, memory.toLong());
    Assert.assertTrue(memory instanceof LongMemory);
    memory = run("-1 / 2");
    Assert.assertEquals(-0.5, memory.toDouble(), 0.0000001);
    Assert.assertTrue(memory instanceof DoubleMemory);
    memory = run("5 % 2");
    Assert.assertEquals(1, memory.toLong());
    Assert.assertTrue(memory instanceof LongMemory);
}
Also used : Memory(php.runtime.Memory) Test(org.junit.Test)

Example 65 with Memory

use of php.runtime.Memory in project jphp by jphp-compiler.

the class SimpleExpressionTest method testBitwise.

@Test
public void testBitwise() {
    Memory memory = runDynamic("0x0f & ~0xf0");
    Assert.assertEquals(15, memory.toLong());
}
Also used : Memory(php.runtime.Memory) Test(org.junit.Test)

Aggregations

Memory (php.runtime.Memory)346 Test (org.junit.Test)124 ArrayMemory (php.runtime.memory.ArrayMemory)122 ObjectMemory (php.runtime.memory.ObjectMemory)75 LongMemory (php.runtime.memory.LongMemory)58 StringMemory (php.runtime.memory.StringMemory)58 ForeachIterator (php.runtime.lang.ForeachIterator)47 ReferenceMemory (php.runtime.memory.ReferenceMemory)40 KeyValueMemory (php.runtime.memory.KeyValueMemory)25 Invoker (php.runtime.invoke.Invoker)21 ArrayKeyMemory (php.runtime.memory.helper.ArrayKeyMemory)21 ArrayValueMemory (php.runtime.memory.helper.ArrayValueMemory)21 ShortcutMemory (php.runtime.memory.helper.ShortcutMemory)21 Environment (php.runtime.env.Environment)20 IObject (php.runtime.lang.IObject)19 UndefinedMemory (php.runtime.memory.helper.UndefinedMemory)16 ClassEntity (php.runtime.reflection.ClassEntity)16 TraceInfo (php.runtime.env.TraceInfo)12 File (java.io.File)7 LocalVariable (org.develnext.jphp.core.compiler.jvm.misc.LocalVariable)7