Skip to content

Commit 7d55135

Browse files
mikolakŁukasz RejmanbartoszwilkpawelByszewskiTomoLV
authored
Release 2.2.4 (dotintent#459)
* Fix capitalization style for UUID and constant names (dotintent#437) * Fix capitalization of UUID in Service * Fix capitalization of UUID in ScanResult * Fix capitalization of UUID in Peripheral * Rename bytes to value * Fix capitalization of UUID in metadata strings in ScanResult * Fix constants capitalization in BleError * Revert "Fix capitalization of UUID in metadata strings in ScanResult" This reverts commit 08516ec. * Fix capitalization of UUID in managers for classes * Fix capitalization of UUID for InternalBleManager * Fix capitalization of UUID in CharacteristicsMixin * Fix capitalization of UUID in DevicesMixin * Rename bytes to value in internal classes * Add unit tests for Service (dotintent#439) * unit test for BleManager * [descriptor] override equals & hashcode functions * [tests] add: mock classes for managers * [service] add: service tests * [tests] create characteristics and descriptors using separate generators * [service][tests] cover generating transactionId when it's not specified * [service][tests] clear mocks interactions after each test * [service][tests] add missing test for getting all descriptors for specified characteristic Co-authored-by: Paweł Byszewski <[email protected]> * Descriptor unit tests (dotintent#441) * unit test for BleManager * [descriptor] override equals & hashcode functions * [tests] add: mock classes for managers * [tests] create characteristics and descriptors using separate generators * [descriptor] add: tests * [descriptor] fix: test names * [tests] move all mocks declarations to one aggregate file * [ble-manager][test] add matcher to always check objects' references * [descriptor][test] add tests that check uniquity of transactionId Co-authored-by: pawelByszewski <[email protected]> * [iOS] Fixed casting of Bool arguments received from dart (dotintent#451) * Remove root level `Flutter User Facing API.dart` (dotintent#455) * rename root level file naming interfered with certain build_runner code generators * remove flutter_user_facing_api.dart * Release 2.2.4 Co-authored-by: Łukasz Rejman <[email protected]> Co-authored-by: Bartosz Wilk <[email protected]> Co-authored-by: Paweł Byszewski <[email protected]> Co-authored-by: pawelByszewski <[email protected]> Co-authored-by: Tomasz Bogusz <[email protected]> Co-authored-by: Dustin Graham <[email protected]>
1 parent 47d12e1 commit 7d55135

12 files changed

+141
-116
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 2.2.4
2+
3+
* Fix issue where `withResponse` argument was always true when writing to a characteristic on iOS
4+
* Remove unnecessary file that was interfering with analyzer
5+
16
## 2.2.3
27

38
* Fix issue with duplicated or malformed notification values

Flutter User Facing API.dart

-100
This file was deleted.

android/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
group 'com.polidea.flutter_ble_lib'
2-
version '2.2.3'
2+
version '2.2.4'
33

44
buildscript {
55
repositories {

ios/Classes/FlutterBleLibPlugin.m

+4-4
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ - (void)isDeviceConnected:(FlutterMethodCall *)call result:(FlutterResult)result
230230
}
231231

232232
- (void)observeConnectionState:(FlutterMethodCall *)call result:(FlutterResult)result {
233-
BOOL emitCurrentValue = (BOOL)call.arguments[ARGUMENT_KEY_EMIT_CURRENT_VALUE];
233+
BOOL emitCurrentValue = ((NSNumber *)call.arguments[ARGUMENT_KEY_EMIT_CURRENT_VALUE]).boolValue;
234234
if (emitCurrentValue == YES) {
235235
Resolve resolve = ^(id isConnected) {
236236
if ((BOOL)isConnected == YES) {
@@ -343,7 +343,7 @@ - (void)writeCharacteristicForDevice:(FlutterMethodCall *)call result:(FlutterRe
343343
serviceUUID:call.arguments[ARGUMENT_KEY_SERVICE_UUID]
344344
characteristicUUID:call.arguments[ARGUMENT_KEY_CHARACTERISTIC_UUID]
345345
valueBase64:[self base64encodedStringFromBytes:call.arguments[ARGUMENT_KEY_VALUE]]
346-
response:(BOOL)call.arguments[ARGUMENT_KEY_WITH_RESPONSE]
346+
response:((NSNumber *)call.arguments[ARGUMENT_KEY_WITH_RESPONSE]).boolValue
347347
transactionId:[ArgumentHandler stringOrNil:call.arguments[ARGUMENT_KEY_TRANSACTION_ID]]
348348
resolve:[self resolveForReadWriteCharacteristic:result
349349
transactionId:[ArgumentHandler stringOrNil:call.arguments[ARGUMENT_KEY_TRANSACTION_ID]]]
@@ -354,7 +354,7 @@ - (void)writeCharacteristicForService:(FlutterMethodCall *)call result:(FlutterR
354354
[_adapter writeCharacteristicForService:[call.arguments[ARGUMENT_KEY_SERVICE_ID] doubleValue]
355355
characteristicUUID:call.arguments[ARGUMENT_KEY_CHARACTERISTIC_UUID]
356356
valueBase64:[self base64encodedStringFromBytes:call.arguments[ARGUMENT_KEY_VALUE]]
357-
response:(BOOL)call.arguments[ARGUMENT_KEY_WITH_RESPONSE]
357+
response:((NSNumber *)call.arguments[ARGUMENT_KEY_WITH_RESPONSE]).boolValue
358358
transactionId:[ArgumentHandler stringOrNil:call.arguments[ARGUMENT_KEY_TRANSACTION_ID]]
359359
resolve:[self resolveForReadWriteCharacteristic:result
360360
transactionId:[ArgumentHandler stringOrNil:call.arguments[ARGUMENT_KEY_TRANSACTION_ID]]]
@@ -364,7 +364,7 @@ - (void)writeCharacteristicForService:(FlutterMethodCall *)call result:(FlutterR
364364
- (void)writeCharacteristic:(FlutterMethodCall *)call result:(FlutterResult)result {
365365
[_adapter writeCharacteristic:[call.arguments[ARGUMENT_KEY_CHARACTERISTIC_IDENTIFIER] doubleValue]
366366
valueBase64:[self base64encodedStringFromBytes:call.arguments[ARGUMENT_KEY_VALUE]]
367-
response:(BOOL)call.arguments[ARGUMENT_KEY_WITH_RESPONSE]
367+
response:((NSNumber *)call.arguments[ARGUMENT_KEY_WITH_RESPONSE]).boolValue
368368
transactionId:[ArgumentHandler stringOrNil:call.arguments[ARGUMENT_KEY_TRANSACTION_ID]]
369369
resolve:[self resolveForReadWriteCharacteristic:result
370370
transactionId:[ArgumentHandler stringOrNil:call.arguments[ARGUMENT_KEY_TRANSACTION_ID]]]

ios/flutter_ble_lib.podspec

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#
44
Pod::Spec.new do |s|
55
s.name = 'flutter_ble_lib'
6-
s.version = '2.2.3'
6+
s.version = '2.2.4'
77
s.summary = 'A new flutter plugin project.'
88
s.description = <<-DESC
99
A new flutter plugin project.
@@ -16,7 +16,7 @@ A new flutter plugin project.
1616
s.public_header_files = 'Classes/**/*.h'
1717
s.dependency 'Flutter'
1818
s.swift_versions = ['4.0', '4.2', '5.0']
19-
s.dependency 'MultiplatformBleAdapter', '0.1.5'
19+
s.dependency 'MultiplatformBleAdapter', '~> 0.1.5'
2020

2121
s.ios.deployment_target = '8.0'
2222
end

pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: flutter_ble_lib
22
description: FlutterBle Library is a flutter library that supports BLE operations. It uses MultiPlatformBleAdapter as a native backend..
3-
version: 2.2.3
3+
version: 2.2.4
44
author: "Polidea <[email protected]>"
55
homepage: https://github.com/Polidea/FlutterBleLib
66

test/ble_manager_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ void main() {
1111
final secondInstanceOfBleManager = BleManager();
1212

1313
//then
14-
expect(secondInstanceOfBleManager, firstInstanceOfBlemanager);
14+
expect(secondInstanceOfBleManager, same(firstInstanceOfBlemanager));
1515
});
1616
}

test/descriptor_test.dart

+118
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
import 'dart:async';
2+
import 'dart:typed_data';
3+
4+
import 'package:flutter_ble_lib/flutter_ble_lib.dart';
5+
import 'package:flutter_ble_lib/src/_managers_for_classes.dart';
6+
import 'package:mockito/mockito.dart';
7+
import 'package:test/test.dart';
8+
9+
import 'mock/mocks.dart';
10+
import 'test_util/descriptor_generator.dart';
11+
12+
void main() {
13+
ManagerForDescriptor managerForDescriptor = ManagerForDescriptorMock();
14+
DescriptorGenerator descriptorGenerator =
15+
DescriptorGenerator(managerForDescriptor);
16+
17+
DescriptorWithValue createDescriptor(int seed) =>
18+
descriptorGenerator.create(seed, CharacteristicMock());
19+
20+
Descriptor descriptor = createDescriptor(123);
21+
22+
tearDown(() {
23+
clearInteractions(managerForDescriptor);
24+
});
25+
26+
test("read returns expected value", () async {
27+
//given
28+
when(managerForDescriptor.readDescriptorForIdentifier(descriptor, "456"))
29+
.thenAnswer((_) => Future.value(Uint8List.fromList([1, 2, 3, 4])));
30+
31+
//when
32+
var value = await descriptor.read(transactionId: "456");
33+
34+
//then
35+
expect(value, equals(Uint8List.fromList([1, 2, 3, 4])));
36+
});
37+
38+
test(
39+
"read invokes manager with expected params when transactionId is specified",
40+
() {
41+
//when
42+
descriptor.read(transactionId: "456");
43+
44+
//then
45+
verify(
46+
managerForDescriptor.readDescriptorForIdentifier(descriptor, "456"),
47+
);
48+
});
49+
50+
test(
51+
"read invokes manager with expected params when transactionId is not specified",
52+
() {
53+
//when
54+
descriptor.read();
55+
56+
//then
57+
verify(
58+
managerForDescriptor.readDescriptorForIdentifier(
59+
descriptor, argThat(isNotNull)),
60+
);
61+
});
62+
63+
test(
64+
"read invokes manager with unique transactionId when transactionId is not specified",
65+
() {
66+
//when
67+
descriptor.read();
68+
descriptor.read();
69+
70+
//then
71+
var transactionIds = verify(
72+
managerForDescriptor.readDescriptorForIdentifier(
73+
descriptor, captureThat(isNotNull)),
74+
).captured;
75+
expect(transactionIds[0], isNot(equals(transactionIds[1])));
76+
});
77+
78+
test(
79+
"write invokes manager with expected params when transactionId is specified",
80+
() {
81+
//when
82+
descriptor.write(Uint8List.fromList([1, 2, 3, 4]), transactionId: "456");
83+
84+
//then
85+
verify(
86+
managerForDescriptor.writeDescriptorForIdentifier(
87+
descriptor, Uint8List.fromList([1, 2, 3, 4]), "456"),
88+
);
89+
});
90+
91+
test(
92+
"write invokes manager with expected params when transactionId is not specified",
93+
() {
94+
//when
95+
descriptor.write(Uint8List.fromList([1, 2, 3, 4]));
96+
97+
//then
98+
verify(
99+
managerForDescriptor.writeDescriptorForIdentifier(
100+
descriptor, Uint8List.fromList([1, 2, 3, 4]), argThat(isNotNull)),
101+
);
102+
});
103+
104+
test(
105+
"write invokes manager with unique transactionId when transactionId is not specified",
106+
() {
107+
//when
108+
descriptor.write(Uint8List.fromList([1, 2, 3, 4]));
109+
descriptor.write(Uint8List.fromList([1, 2, 3, 4]));
110+
111+
//then
112+
var transactionIds = verify(
113+
managerForDescriptor.writeDescriptorForIdentifier(descriptor,
114+
Uint8List.fromList([1, 2, 3, 4]), captureThat(isNotNull)))
115+
.captured;
116+
expect(transactionIds[0], isNot(equals(transactionIds[1])));
117+
});
118+
}

test/mock/mock_peripheral.dart

-4
This file was deleted.

test/mock/manager_mock.dart test/mock/mocks.dart

+7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'package:flutter_ble_lib/flutter_ble_lib.dart';
12
import 'package:flutter_ble_lib/src/_managers_for_classes.dart';
23
import 'package:mockito/mockito.dart';
34

@@ -6,3 +7,9 @@ class ManagerForServiceMock extends Mock implements ManagerForService {}
67
class ManagerForCharacteristicMock extends Mock implements ManagerForCharacteristic {}
78

89
class ManagerForDescriptorMock extends Mock implements ManagerForDescriptor {}
10+
11+
class ServiceMock extends Mock implements Service {}
12+
13+
class PeripheralMock extends Mock implements Peripheral {}
14+
15+
class CharacteristicMock extends Mock implements Characteristic {}

test/service_test.dart

+1-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import 'package:flutter_ble_lib/src/_managers_for_classes.dart';
66
import 'package:mockito/mockito.dart';
77
import 'package:test/test.dart';
88

9-
import 'mock/manager_mock.dart';
10-
import 'mock/mock_peripheral.dart';
9+
import 'mock/mocks.dart';
1110
import 'test_util/characteristic_generator.dart';
1211
import 'test_util/descriptor_generator.dart';
1312

test/src/bridge/lib_core_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import 'package:flutter_ble_lib/src/_constants.dart';
1010
import 'package:flutter_test/flutter_test.dart';
1111
import 'package:mockito/mockito.dart';
1212

13-
import '../../mock/mock_peripheral.dart';
1413
import '../../json/ble_error_jsons.dart';
14+
import '../../mock/mocks.dart';
1515

1616
const flutterBleLibMethodChannelName = 'flutter_ble_lib';
1717
const monitorCharacteristicEventChannelName =

0 commit comments

Comments
 (0)