1 // 2 // Copyright (c) 2010-2018 Antmicro 3 // Copyright (c) 2011-2015 Realtime Embedded 4 // 5 // This file is licensed under the MIT License. 6 // Full license text is available in 'licenses/MIT.txt'. 7 // 8 using System; 9 using Antmicro.Renode.Peripherals; 10 using Antmicro.Renode.Peripherals.Bus; 11 using NUnit.Framework; 12 using System.Collections.Generic; 13 using System.Linq; 14 using Antmicro.Migrant; 15 using Antmicro.Renode.Core; 16 17 namespace Antmicro.Renode.UnitTests 18 { 19 [TestFixture] 20 public class SerializableMappedSegmentTests 21 { 22 [Test] ShouldSerializeWhenNotTouched()23 public void ShouldSerializeWhenNotTouched() 24 { 25 var testedPeripheral = new PeripheralWithMappedSegment(); 26 var copy = Serializer.DeepClone(testedPeripheral); 27 var segments = copy.MappedSegments.ToArray(); 28 foreach(var segment in segments) 29 { 30 Assert.AreEqual(IntPtr.Zero, segment.Pointer); 31 } 32 } 33 34 [Test] ShouldSerializeWhenTouched()35 public void ShouldSerializeWhenTouched() 36 { 37 var testedPeripheral = new PeripheralWithMappedSegment(); 38 testedPeripheral.Touch(); 39 var copy = Serializer.DeepClone(testedPeripheral); 40 var segments = copy.MappedSegments.ToArray(); 41 foreach(var segment in segments) 42 { 43 Assert.AreNotEqual(IntPtr.Zero, segment.Pointer); 44 } 45 } 46 } 47 48 public sealed class PeripheralWithMappedSegment : IBytePeripheral, IMapped 49 { PeripheralWithMappedSegment()50 public PeripheralWithMappedSegment() 51 { 52 segments = new[] { new SerializableMappedSegment(4096, 0), new SerializableMappedSegment(4096, 8192) }; 53 } 54 55 public IEnumerable<IMappedSegment> MappedSegments 56 { 57 get 58 { 59 return segments; 60 } 61 } 62 Touch()63 public void Touch() 64 { 65 foreach(var s in segments) 66 { 67 s.Touch(); 68 } 69 } 70 Reset()71 public void Reset() 72 { 73 74 } 75 ReadByte(long offset)76 public byte ReadByte(long offset) 77 { 78 return 0; 79 } 80 WriteByte(long offset, byte value)81 public void WriteByte(long offset, byte value) 82 { 83 84 } 85 86 private readonly SerializableMappedSegment[] segments; 87 88 } 89 } 90 91