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