Beispiel #1
0
        public void ShouldSerializePyDevWithListAndDictionary()
        {
            var source     = @"
if request.isInit:
	some_list = [ 'a', 666 ]
	some_dict = { 'lion': 'yellow', 'kitty': 'red' }
if request.isRead:
	if request.offset == 0:
		request.value = some_list[1]
	if request.offset == 4:
		request.value = len(some_dict['kitty'])
";
            var pyDev      = new PythonPeripheral(100, true, script: source);
            var serializer = new Serializer();

            serializer.ForObject <PythonDictionary>().SetSurrogate(x => new PythonDictionarySurrogate(x));
            serializer.ForSurrogate <PythonDictionarySurrogate>().SetObject(x => x.Restore());
            var mStream = new MemoryStream();

            serializer.Serialize(pyDev, mStream);
            mStream.Seek(0, SeekOrigin.Begin);
            var copy = serializer.Deserialize <PythonPeripheral>(mStream);

            Assert.AreEqual(666, copy.ReadDoubleWord(0));
            Assert.AreEqual(3, copy.ReadDoubleWord(4));
        }
Beispiel #2
0
        public void ShouldSerializePyDevWithModuleImport()
        {
            var source = @"
import time

if request.isRead:
	request.value = time.localtime().tm_hour
";
            var pyDev = new PythonPeripheral(100, true, script: source);
            var copy = Serializer.DeepClone(pyDev);
            Assert.AreEqual(CustomDateTime.Now.Hour, copy.ReadDoubleWord(0), 1);
        }
Beispiel #3
0
        public void ShouldSerializeSimplePyDev()
        {
            var source = @"
if request.isInit:
	num = 4
	str = 'napis'
if request.isRead:
	request.value = num + len(str)
";
            var pyDev = new PythonPeripheral(100, true, script: source);
            var copy = Serializer.DeepClone(pyDev);
            Assert.AreEqual(9, copy.ReadByte(0));
        }
Beispiel #4
0
        public void ShouldSerializeMachineWithSimplePyDev()
        {            
            var source = @"
if request.isInit:
    num = 4
    str = 'napis'
if request.isRead:
    request.value = num + len(str)
";
            var pyDev = new PythonPeripheral(100, true, script: source);
            var sysbus = machine.SystemBus;
            sysbus.Register(pyDev, new Antmicro.Renode.Peripherals.Bus.BusRangeRegistration(0x100, 0x10));

            Assert.AreEqual(9, sysbus.ReadByte(0x100));
            machine = Serializer.DeepClone(machine);
            sysbus = machine.SystemBus;
            Assert.AreEqual(9, sysbus.ReadByte(0x100));
        }