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 Antmicro.Renode.Core;
9 using Antmicro.Renode.Peripherals;
10 using NUnit.Framework;
11 using Antmicro.Renode.Exceptions;
12 using Antmicro.Renode.Peripherals.Bus;
13 using Antmicro.Renode.Peripherals.Memory;
14 
15 namespace Antmicro.Renode.UnitTests
16 {
17     [TestFixture]
18     public class PeripheralsGroupTests
19     {
20         [Test]
ShouldNotUnregisterSinglePeripheralFromGroup()21         public void ShouldNotUnregisterSinglePeripheralFromGroup()
22         {
23             using(var machine = new Machine())
24             {
25                 var peripheral = new MappedMemory(machine, 10);
26                 machine.SystemBus.Register(peripheral, new BusPointRegistration(0x0));
27                 machine.SystemBus.Unregister(peripheral);
28 
29                 machine.SystemBus.Register(peripheral, new BusPointRegistration(0x0));
30                 machine.PeripheralsGroups.GetOrCreate("test-group", new [] { peripheral });
31 
32                 try
33                 {
34                     machine.SystemBus.Unregister(peripheral);
35                 }
36                 catch (RegistrationException)
37                 {
38                     return;
39                 }
40 
41                 Assert.Fail();
42             }
43         }
44 
45         [Test]
ShouldUnregisterPeripheralGroups()46         public void ShouldUnregisterPeripheralGroups()
47         {
48             using(var machine = new Machine())
49             {
50                 var peripheral = new MappedMemory(machine, 10);
51                 machine.SystemBus.Register(peripheral, new BusPointRegistration(0x0));
52                 var group = machine.PeripheralsGroups.GetOrCreate("test-group", new [] { peripheral });
53                 Assert.IsTrue(machine.IsRegistered(peripheral));
54                 group.Unregister();
55                 Assert.IsFalse(machine.IsRegistered(peripheral));
56             }
57         }
58 
59         [Test]
ShouldNotAddUnregisteredPeripheralToGroup()60         public void ShouldNotAddUnregisteredPeripheralToGroup()
61         {
62             using(var machine = new Machine())
63             {
64                 try
65                 {
66                     machine.PeripheralsGroups.GetOrCreate("test-group", new [] { new MappedMemory(machine, 10) });
67                 }
68                 catch (RegistrationException)
69                 {
70                     return;
71                 }
72 
73                 Assert.Fail();
74             }
75         }
76     }
77 }
78 
79