blob: d1bcc394a865e33dd5280f8f9f0f882056e65c1e [file] [log] [blame]
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
final TestWidgetsFlutterBinding binding = TestWidgetsFlutterBinding.ensureInitialized();
test('when receiving an unsupported message', () async {
final ByteData? messageBytes = const JSONMessageCodec().encodeMessage(<String, dynamic>{
'method': 'Scribe.unsupportedMessage',
});
final ByteData? response = await binding.defaultBinaryMessenger.handlePlatformMessage(
'flutter/scribe',
messageBytes,
null,
);
// When a MissingPluginException is thrown, it is caught and a null response
// is returned.
expect(response, isNull);
}, skip: kIsWeb); // [intended]
for (final bool? returnValue in <bool?>[false, true, null]) {
test('Scribe.isStylusHandwritingAvailable calls through to platform channel', () async {
final List<MethodCall> calls = <MethodCall>[];
binding.defaultBinaryMessenger.setMockMethodCallHandler(SystemChannels.scribe, (
MethodCall methodCall,
) {
calls.add(methodCall);
return Future<bool?>.value(returnValue);
});
if (returnValue == null) {
expect(() async {
await Scribe.isStylusHandwritingAvailable();
}, throwsA(isA<FlutterError>()));
} else {
expect(await Scribe.isStylusHandwritingAvailable(), returnValue);
}
expect(calls, hasLength(1));
expect(calls.first.method, 'Scribe.isStylusHandwritingAvailable');
}, skip: kIsWeb); // [intended]
}
for (final bool? returnValue in <bool?>[false, true, null]) {
test('Scribe.isFeatureAvailable calls through to platform channel', () async {
final List<MethodCall> calls = <MethodCall>[];
binding.defaultBinaryMessenger.setMockMethodCallHandler(SystemChannels.scribe, (
MethodCall methodCall,
) {
calls.add(methodCall);
return Future<bool?>.value(returnValue);
});
if (returnValue == null) {
expect(() async {
await Scribe.isFeatureAvailable();
}, throwsA(isA<FlutterError>()));
} else {
expect(await Scribe.isFeatureAvailable(), returnValue);
}
expect(calls, hasLength(1));
expect(calls.first.method, 'Scribe.isFeatureAvailable');
}, skip: kIsWeb); // [intended]
}
test('Scribe.startStylusHandwriting calls through to platform channel', () async {
final List<MethodCall> calls = <MethodCall>[];
binding.defaultBinaryMessenger.setMockMethodCallHandler(SystemChannels.scribe, (
MethodCall methodCall,
) {
calls.add(methodCall);
return Future<void>.value();
});
Scribe.startStylusHandwriting();
expect(calls, hasLength(1));
expect(calls.first.method, 'Scribe.startStylusHandwriting');
}, skip: kIsWeb); // [intended]
}