using NSubstitute; using NUnit.Framework; using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using TINK.Services.BluetoothLock; using TINK.Services.BluetoothLock.BLE; using TINK.Services.BluetoothLock.Tdo; namespace TestLockItBLE.Services.BluetoothLock.BLE { public class TestLockItServiceBase { [Test] public async Task TestCheckReconnect_EmptyList() { var disconnectedDevice = Substitute.For(); disconnectedDevice.GetDeviceState().Returns(DeviceState.Disconnected); var devices = new List { disconnectedDevice }; var locksInfo = new List(); await LockItServiceBase.CheckReconnect( devices, locksInfo, TimeSpan.FromSeconds(0)); await disconnectedDevice.DidNotReceive().ReconnectAsync(Arg.Any(), Arg.Any()); } [Test] public async Task TestCheckReconnect_NoMatchingIdEntry() { var disconnectedDevice = Substitute.For(); disconnectedDevice.GetDeviceState().Returns(DeviceState.Disconnected); disconnectedDevice.Name.Returns("ISHAREIT+334"); disconnectedDevice.Guid.Returns(new Guid("00000000-0000-0000-0000-000000000001")); var devices = new List { disconnectedDevice }; var locksInfo = new List { new LockInfoAuthTdo.Builder { Id = 992, Guid = new Guid("00000000-0000-0000-0000-000000000002"), K_seed = new byte[] { 2 }, K_u = new byte[] { 3 } }.Build() }; await LockItServiceBase.CheckReconnect( devices, locksInfo, TimeSpan.FromSeconds(0)); await disconnectedDevice.DidNotReceive().ReconnectAsync(Arg.Any(), Arg.Any()); } [Test] public async Task TestCheckReconnect() { var disconnectedDevice = Substitute.For(); disconnectedDevice.GetDeviceState().Returns(DeviceState.Disconnected); disconnectedDevice.Name.Returns("ISHAREIT+992"); disconnectedDevice.Guid.Returns(new Guid("00000000-0000-0000-0000-000000000001")); var devices = new List { disconnectedDevice }; var locksInfo = new List { new LockInfoAuthTdo.Builder { Id = 992, Guid = new Guid("00000000-0000-0000-0000-000000000002"), K_seed = new byte[] { 2 }, K_u = new byte[] { 3 }}.Build() }; await LockItServiceBase.CheckReconnect( devices, locksInfo, TimeSpan.FromSeconds(0)); await disconnectedDevice.Received().ReconnectAsync(Arg.Any(), Arg.Any()); } } }