Skip to content

Instantly share code, notes, and snippets.

@jdrider
Created August 3, 2017 16:06
Show Gist options
  • Save jdrider/9bf2d52950f2faf1f84d6b6cf62413a7 to your computer and use it in GitHub Desktop.
Save jdrider/9bf2d52950f2faf1f84d6b6cf62413a7 to your computer and use it in GitHub Desktop.
Example unit test using MockRxAndroidBle to write to a characteristic
import android.bluetooth.BluetoothGattCharacteristic;
import com.polidea.rxandroidble.RxBleClient;
import com.polidea.rxandroidble.RxBleConnection;
import com.polidea.rxandroidble.RxBleDevice;
import com.polidea.rxandroidble.mockrxandroidble.RxBleClientMock;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import java.util.UUID;
import rx.Observable;
import rx.functions.Func1;
import rx.observers.TestSubscriber;
public class BluetoothTest {
private final static String MOCK_MAC_ADDRESS = "12:AB:34:BC:56:DE";
private final static UUID MESSAGE_CHARACTERISTIC_UUID =
UUID.fromString("a5648e0a-7860-11e7-b5a5-be2e44b06b34");
private final static UUID SERVICE_CHARACTERISTIC_UUID =
UUID.fromString("32cc3f90-7861-11e7-b5a5-be2e44b06b34");
private RxBleClient bleClient;
@Before public void setupMockClient() {
bleClient = new RxBleClientMock.Builder().addDevice(buildMockDevice()).build();
}
@Test public void testMessageSmallerThanMtu() {
TestSubscriber<byte[]> messageIndicationSubscriber = TestSubscriber.create();
bleClient.getBleDevice(MOCK_MAC_ADDRESS)
.establishConnection(false)
.flatMap(new Func1<RxBleConnection, Observable<byte[]>>() {
@Override public Observable<byte[]> call(RxBleConnection rxBleConnection) {
byte[] message = { 0x07, 0x13, 0x05, 0x00, 0x00 };
return rxBleConnection.writeCharacteristic(MESSAGE_CHARACTERISTIC_UUID,
message);
}
})
.subscribe(messageIndicationSubscriber);
messageIndicationSubscriber.assertNoErrors();
messageIndicationSubscriber.assertValueCount(1);
}
private RxBleDevice buildMockDevice() {
return new RxBleClientMock.DeviceBuilder().rssi(90)
.deviceMacAddress(MOCK_MAC_ADDRESS)
.deviceName("BLEDevice")
.scanRecord(new byte[] { 0, 1, 2, 3 })
.notificationSource(MESSAGE_CHARACTERISTIC_UUID,
Observable.just(new byte[] { 2, 4, 6, 8 }))
.addService(SERVICE_CHARACTERISTIC_UUID, buildCharacteristics())
.build();
}
private List<BluetoothGattCharacteristic> buildCharacteristics() {
RxBleClientMock.DescriptorsBuilder descriptorsBuilder =
new RxBleClientMock.DescriptorsBuilder().addDescriptor(UUID.randomUUID(),
new byte[] { 0x01, 0x02, 0x03 });
return new RxBleClientMock.CharacteristicsBuilder().addCharacteristic(
MESSAGE_CHARACTERISTIC_UUID, new byte[0], descriptorsBuilder.build()).build();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment