Advertisement
apieceoffruit

Electric Door

Jun 25th, 2022
1,043
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using FluentAssertions;
  2. using NSubstitute;
  3. using NUnit.Framework;
  4. using SmartNetwork;
  5.  
  6. namespace SmartNetworkTests
  7. {
  8.     [TestFixture]
  9.     public class ElectricDoor_Should
  10.     {
  11.         void Init()
  12.         {
  13.             PowerSource.ProvidingPower.Returns(true);
  14.             _door.Attach(PowerSource);
  15.         }
  16.  
  17.         [Test]
  18.         public void Start_unlocked()
  19.         {
  20.             _door.TurnOn();
  21.             _door.IsOpen.Should().BeFalse();
  22.             _door.IsLocked.Should().BeFalse();
  23.         }
  24.  
  25.         [Test]
  26.         public void Start_without_power() => new ElectricDoor(_doorHandler).HasPower.Should().BeFalse();
  27.  
  28.         [Test]
  29.         public void Not_function_when_not_powered()
  30.         {
  31.             PowerSource.ProvidingPower.Returns(false);
  32.            
  33.             _door.Handle(Message);
  34.             _door.TurnOn();
  35.             _door.Open();
  36.             _door.ToggleOn();
  37.             _door.ToggleOpen();
  38.             _door.ToggleLocked();
  39.             _door.Lock();
  40.             _door.Unlock();
  41.            
  42.             _doorHandler.DidNotReceive().Handle(Message);
  43.             _doorHandler.DidNotReceive().PoweredOn();
  44.             _doorHandler.DidNotReceive().PoweredOff();
  45.             _doorHandler.DidNotReceive().Opened();
  46.             _doorHandler.DidNotReceive().Closed();
  47.             _doorHandler.DidNotReceive().Locked();
  48.             _doorHandler.DidNotReceive().UnLocked();
  49.         }
  50.  
  51.         [Test]
  52.         public void Handles_message()
  53.         {
  54.             _door.TurnOn();
  55.             _door.Handle(Message);
  56.            
  57.             _doorHandler.Received().Handle(Message);
  58.         }
  59.  
  60.         [Test]
  61.         public void When_not_powered_toggling_lock_does_nothing()
  62.         {
  63.             _door.ToggleLocked();
  64.  
  65.             _door.IsLocked.Should().BeFalse();
  66.            
  67.             _doorHandler.DidNotReceive().Locked();
  68.             _doorHandler.DidNotReceive().UnLocked();
  69.             _doorHandler.DidNotReceive().Opened();
  70.             _doorHandler.DidNotReceive().Closed();
  71.         }
  72.  
  73.         [Test]
  74.         public void When_powered_and_unlocked_toggling_lock_locks()
  75.         {
  76.             _door.TurnOn();
  77.             _door.ToggleLocked();
  78.            
  79.             _doorHandler.Received().Locked();
  80.         }
  81.  
  82.         [Test]
  83.         public void When_powered_and_locked_toggling_lock_unlocks()
  84.         {
  85.             _door.TurnOn();
  86.             _door.Lock();
  87.            
  88.             _door.ToggleLocked();
  89.  
  90.             _door.IsLocked.Should().BeFalse();
  91.            
  92.             _doorHandler.Received().Locked();
  93.             _doorHandler.Received().UnLocked();
  94.  
  95.         }
  96.        
  97.        
  98.         [Test]
  99.         public void Can_be_locked()
  100.         {
  101.             _door.TurnOn();
  102.             _door.Lock();
  103.  
  104.             _door.IsLocked.Should().BeTrue();
  105.             _doorHandler.Received().Locked();
  106.         }
  107.  
  108.         [Test]
  109.         public void When_locked_wont_open()
  110.         {
  111.             _door.TurnOn();
  112.             _door.Lock();
  113.            
  114.             _door.Open();
  115.             _door.IsOpen.Should().BeFalse();
  116.  
  117.             _doorHandler.Received(1).TriedToOpen();
  118.         }
  119.  
  120.         [Test]
  121.         public void When_unlocked_can_open()
  122.         {
  123.             _door.TurnOn();
  124.             _door.Lock();
  125.            
  126.             _door.Unlock();
  127.             _door.Open();
  128.  
  129.             _door.IsOpen.Should().BeTrue();
  130.            
  131.             _doorHandler.Received(1).Opened();
  132.             _doorHandler.Received(1).UnLocked();
  133.            
  134.             _doorHandler.DidNotReceive().TriedToOpen();
  135.         }
  136.  
  137.         [Test]
  138.         public void When_unlocked_unlocking_does_nothing()
  139.         {
  140.             _door.TurnOn();
  141.             _door.Unlock();
  142.            
  143.             _doorHandler.DidNotReceive().UnLocked();
  144.         }
  145.  
  146.  
  147.  
  148.         [Test]
  149.         public void When_already_open_not_open_again()
  150.         {
  151.             _door.TurnOn();
  152.            
  153.             _door.Open();
  154.             _door.Open();
  155.            
  156.             _doorHandler.Received(1).Opened();
  157.         }
  158.  
  159.         [Test]
  160.         public void When_on_and_toggled_turns_off()
  161.         {
  162.             _door.TurnOn();
  163.             _door.ToggleOn();
  164.  
  165.             _door.IsOn.Should().BeFalse();
  166.             _doorHandler.Received(1).PoweredOn();
  167.             _doorHandler.Received(1).PoweredOff();
  168.         }
  169.  
  170.        
  171.         [Test]
  172.         public void When_off_and_toggled_turns_on()
  173.         {
  174.             _door.ToggleOn();
  175.  
  176.             _door.IsOn.Should().BeTrue();
  177.             _doorHandler.Received(1).PoweredOn();
  178.             _doorHandler.DidNotReceive().PoweredOff();
  179.         }
  180.  
  181.         [Test]
  182.         public void When_not_on_cannot_open()
  183.         {
  184.             _door.Open();
  185.             _door.IsOpen.Should().BeFalse();
  186.             _doorHandler.DidNotReceive().Opened();
  187.         }
  188.  
  189.         [Test]
  190.         public void When_open_and_turned_off_cannot_close()
  191.         {
  192.             _door.TurnOn();
  193.             _door.Open();
  194.            
  195.             _door.TurnOff();
  196.  
  197.             _door.Close();
  198.  
  199.             _door.IsOpen.Should().BeTrue();
  200.         }
  201.  
  202.         [Test]
  203.         public void When_loses_power_turns_off()
  204.         {
  205.             _door.TurnOn();
  206.  
  207.             var powerSource = _door.DetachPowerSource();
  208.  
  209.             _door.IsOn.Should().BeFalse();
  210.             _door.HasPower.Should().BeFalse();
  211.  
  212.             powerSource.Should().Be(PowerSource);
  213.            
  214.             _doorHandler.Received(1).PoweredOff();
  215.         }
  216.  
  217.         [Test]
  218.         public void When_open_and_toggledOpen_closes()
  219.         {
  220.             _door.TurnOn();
  221.             _door.Open();
  222.            
  223.             _door.ToggleOpen();
  224.  
  225.             _door.IsOpen.Should().BeFalse();
  226.         }
  227.  
  228.         [Test]
  229.         public void When_closed_and_toggledOpen_opens()
  230.         {
  231.             _door.TurnOn();
  232.             _door.ToggleOpen();
  233.  
  234.             _door.IsOpen.Should().BeTrue();
  235.         }
  236.  
  237.         [Test]
  238.         public void When_closed_and_closing_does_nothing()
  239.         {
  240.             _door.TurnOn();
  241.            
  242.             _door.Close();
  243.            
  244.             _doorHandler.DidNotReceive().Closed();
  245.            
  246.         }
  247.        
  248.         [Test]
  249.         public void When_not_locked_and_powerOn_Opens()
  250.         {
  251.             _door.TurnOn();
  252.            
  253.             _door.Open();
  254.  
  255.             _door.IsOpen.Should().BeTrue();
  256.             _doorHandler.Received().Opened();
  257.         }
  258.  
  259.         [Test]
  260.         public void When_open_cannot_lock()
  261.         {
  262.             _door.TurnOn();
  263.             _door.Open();
  264.            
  265.             _door.Lock();
  266.  
  267.             _door.IsLocked.Should().BeFalse();
  268.             _doorHandler.DidNotReceive().Locked();
  269.         }
  270.        
  271.         [Test]
  272.         public void When_locked_and_turned_off_cannot_unlock()
  273.         {
  274.             _door.TurnOn();
  275.             _door.Lock();
  276.            
  277.             _door.TurnOff();
  278.            
  279.             _door.Unlock();
  280.  
  281.             _door.IsLocked.Should().BeTrue();
  282.             _doorHandler.DidNotReceive().UnLocked();
  283.         }
  284.        
  285.         #region Plumbing
  286.  
  287.         [SetUp]
  288.         public void Setup()
  289.         {
  290.             PowerSource = Substitute.For<PowerSource>();
  291.             _doorHandler = Substitute.For<DoorHandler>();
  292.             _door = new ElectricDoor(_doorHandler);
  293.             Init();
  294.         }
  295.  
  296.         DoorHandler _doorHandler;
  297.         const string Message = "MESSAGE";
  298.         ElectricDoor _door;
  299.         PowerSource PowerSource;
  300.  
  301.         #endregion
  302.     }
  303. }
Advertisement
RAW Paste Data Copied
Advertisement