package php.runtime.loader.dump;
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.common.HintType;
import php.runtime.env.Context;
import php.runtime.env.Environment;
import php.runtime.Memory;
import php.runtime.reflection.ParameterEntity;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
@RunWith(JUnit4.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class ParameterDumperTest {
private final Context context = new Context(new File("unknown"));
private final Environment environment = new Environment();
private final ParameterDumper dumper = new ParameterDumper(context, environment, true);
@Test
public void testBasic() throws IOException {
ByteArrayOutputStream output = new ByteArrayOutputStream();
ParameterEntity entity = new ParameterEntity(context);
entity.setTypeClass("FooBar");
entity.setType(HintType.CALLABLE);
entity.setReference(true);
entity.setDefaultValue(Memory.CONST_INT_5);
entity.setName("Foobar");
dumper.save(entity, output);
ParameterEntity copyEntity = dumper.load(new ByteArrayInputStream(output.toByteArray()));
Assert.assertEquals("Foobar", copyEntity.getName());
Assert.assertEquals(Memory.CONST_INT_5, copyEntity.getDefaultValue());
Assert.assertTrue(copyEntity.isReference());
Assert.assertEquals(HintType.CALLABLE, copyEntity.getType());
Assert.assertNull(copyEntity.getTypeClass());
}
}