public void GattCommunicationStatus_ForGattResultIsNull_Unreachable(
     GattServicesProvider sut)
 {
     sut.GattCommunicationStatus
     .Should()
     .Be(GattCommunicationStatus.Unreachable);
 }
        public async Task Refresh_ForConnectedAndCharacteristicsUnreachable_DoesNotAddService(
            GattServicesProvider sut,
            [Freeze] IBluetoothLeDeviceWrapper device,
            [Freeze] IGattServicesDictionary services,
            IGattDeviceServicesResultWrapper result,
            IGattDeviceServiceWrapper service,
            IGattCharacteristicsResultWrapper characteristics)
        {
            result.Status
            .Returns(GattCommunicationStatus.Success);

            result.Services
            .Returns(new[] { service });

            device.ConnectionStatus
            .Returns(BluetoothConnectionStatus.Connected);

            device.GetGattServicesAsync()
            .Returns(Task.FromResult(result));

            characteristics.Status
            .Returns(GattCommunicationStatus.Unreachable);

            service.GetCharacteristicsAsync()
            .Returns(characteristics);

            await sut.Refresh();

            services[service]
            .Should()
            .NotBe(characteristics);
        }
Example #3
0
 public void Services_ForInvoked_CallsServices(
     GattServicesProvider sut,
     [Freeze][Populate] IGattServicesDictionary services)
 {
     sut.Services
     .Should( )
     .BeEquivalentTo(services.ReadOnlyDictionary);
 }
        public async Task Refresh_ForInvoked_ClearsServices(
            GattServicesProvider sut,
            [Freeze] IGattServicesDictionary services)
        {
            await sut.Refresh();

            services.Received()
            .Clear();
        }
Example #5
0
        public void Dispose_ForInvoked_CallsServices(
            GattServicesProvider sut,
            [Freeze][Populate] IGattServicesDictionary services)
        {
            sut.Dispose( );

            services.Received( )
            .Dispose( );
        }
Example #6
0
        public void Refreshed_ForInvoked_CallsSubject(
            GattServicesProvider sut,
            [Freeze] ISubject <GattCommunicationStatus> refreshed)
        {
            using var disposable = sut.Refreshed
                                   .Subscribe(DoNothing);

            refreshed.Received( )
            .Subscribe(Arg.Any <AnonymousObserver <GattCommunicationStatus> > ( ));
        }
        public async Task Refresh_ForDisconnected_SetsGattCommunicationStatusUnreachable(
            GattServicesProvider sut,
            [Freeze] IBluetoothLeDeviceWrapper device)
        {
            device.ConnectionStatus
            .Returns(BluetoothConnectionStatus.Disconnected);

            await sut.Refresh();

            sut.GattCommunicationStatus
            .Should()
            .Be(GattCommunicationStatus.Unreachable);
        }
        public async Task Refresh_ForDisconnected_Notifies(
            GattServicesProvider sut,
            [Freeze] IBluetoothLeDeviceWrapper device,
            [Freeze] ISubject <GattCommunicationStatus> refreshed)
        {
            device.ConnectionStatus
            .Returns(BluetoothConnectionStatus.Disconnected);

            await sut.Refresh();

            refreshed.Received()
            .OnNext(GattCommunicationStatus.Unreachable);
        }
        public async Task Refresh_ForConnected_SetsGattCommunicationStatusUnreachable(
            GattServicesProvider sut,
            [Freeze] IBluetoothLeDeviceWrapper device,
            IGattDeviceServicesResultWrapper result)
        {
            result.Status
            .Returns(GattCommunicationStatus.Unreachable);

            device.ConnectionStatus
            .Returns(BluetoothConnectionStatus.Connected);

            device.GetGattServicesAsync()
            .Returns(Task.FromResult(result));

            await sut.Refresh();

            sut.GattCommunicationStatus
            .Should()
            .Be(GattCommunicationStatus.Unreachable);
        }
        public async Task GattCommunicationStatus_ForConnectedAndServicesAvailable_Success(
            GattServicesProvider sut,
            [Freeze] IBluetoothLeDeviceWrapper device,
            IGattDeviceServicesResultWrapper resultWrapper)
        {
            resultWrapper.Status
            .Returns(GattCommunicationStatus.Success);

            device.ConnectionStatus
            .Returns(BluetoothConnectionStatus.Connected);

            device.GetGattServicesAsync()
            .Returns(resultWrapper);

            await sut.Refresh();

            sut.GattCommunicationStatus
            .Should()
            .Be(resultWrapper.Status);
        }
        public async Task Refresh_ForConnected_Notifies(
            GattServicesProvider sut,
            [Freeze] IBluetoothLeDeviceWrapper device,
            [Freeze] ISubject <GattCommunicationStatus> refreshed,
            IGattDeviceServicesResultWrapper result)
        {
            var expected = GattCommunicationStatus.ProtocolError;

            result.Status
            .Returns(expected);

            device.ConnectionStatus
            .Returns(BluetoothConnectionStatus.Connected);

            device.GetGattServicesAsync()
            .Returns(Task.FromResult(result));

            await sut.Refresh();

            refreshed.Received()
            .OnNext(expected);
        }