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 
9 using System;
10 using Antmicro.Renode.Core;
11 using NUnit.Framework;
12 using Antmicro.Renode.UnitTests.Mocks;
13 using Antmicro.Renode.Exceptions;
14 
15 namespace Antmicro.Renode.UnitTests
16 {
17     [TestFixture]
18     public class GPIOTests
19     {
20 
21         [Test]
ShouldPropagateConnected()22         public void ShouldPropagateConnected()
23         {
24             var source = new GPIO();
25             var destination = new MockReceiver();
26             source.Connect(destination, 2);
27             var endpoint = source.Endpoints;
28             Assert.AreEqual(2, endpoint[0].Number);
29             Assert.AreEqual(destination, endpoint[0].Receiver);
30         }
31 
32         [Test]
ShouldBeEmptyWhenNotConnected()33         public void ShouldBeEmptyWhenNotConnected()
34         {
35             var source = new GPIO();
36             var endpoint = source.Endpoints;
37             Assert.IsEmpty(endpoint);
38         }
39 
40         [Test]
ShouldConnectBoundGPIOs()41         public void ShouldConnectBoundGPIOs()
42         {
43             var source = new GPIO();
44             var boundIn = new MockReceiverConstrained();
45             source.Connect(boundIn, 2);
46         }
47 
48         [Test]
ShouldThrowOnIllegalInputNo()49         public void ShouldThrowOnIllegalInputNo()
50         {
51             var source = new GPIO();
52             var boundIn = new MockReceiverConstrained();
53 
54             var ex = Assert.Throws<ConstructionException>(() => source.Connect(boundIn, 10));
55             Assert.That(ex.Message, Is.EqualTo("Cannot connect 10th input of Antmicro.Renode.UnitTests.Mocks.MockReceiverConstrained; it has only 5 GPIO inputs."));
56         }
57     }
58 }
59