blob: fcfa23566f41ce3922625010e519542df7c49aae [file] [log] [blame]
// Copyright 2023 The Chromium 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:devtools_extensions/api.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
group('$DevToolsExtensionEvent', () {
test('parse', () {
var event = DevToolsExtensionEvent.parse({
'type': 'ping',
'data': {'foo': 'bar'},
});
expect(event.type, DevToolsExtensionEventType.ping);
expect(event.data, {'foo': 'bar'});
event = DevToolsExtensionEvent.parse({
'type': 'pong',
'data': {'baz': 'bob'},
});
expect(event.type, DevToolsExtensionEventType.pong);
expect(event.data, {'baz': 'bob'});
event = DevToolsExtensionEvent.parse({
'type': 'idk',
});
expect(event.type, DevToolsExtensionEventType.unknown);
expect(event.data, isNull);
});
test('tryParse', () {
var event = DevToolsExtensionEvent.tryParse({
'type': 'ping',
'data': {'foo': 'bar'},
});
expect(event, isNotNull);
event = DevToolsExtensionEvent.tryParse('bad input');
expect(event, isNull);
event = DevToolsExtensionEvent.tryParse({'more', 'bad', 'input'});
expect(event, isNull);
event = DevToolsExtensionEvent.tryParse({1: 'bad', 2: 'input'});
expect(event, isNull);
});
test('toJson', () {
var event = DevToolsExtensionEvent(DevToolsExtensionEventType.ping);
expect(event.toJson(), {'type': 'ping'});
event = DevToolsExtensionEvent(
DevToolsExtensionEventType.pong,
data: {'foo': 'bar'},
);
expect(event.toJson(), {
'type': 'pong',
'data': {'foo': 'bar'},
});
event = DevToolsExtensionEvent(
DevToolsExtensionEventType.unknown,
data: {'foo': 'bar'},
);
expect(event.toJson(), {
'type': 'unknown',
'data': {'foo': 'bar'},
});
});
});
group('$DevToolsExtensionEventType', () {
test('parses for expected values', () {
expect(
DevToolsExtensionEventType.from('ping'),
DevToolsExtensionEventType.ping,
);
expect(
DevToolsExtensionEventType.from('pong'),
DevToolsExtensionEventType.pong,
);
});
test('parses for unexpected values', () {
expect(
DevToolsExtensionEventType.from('PING'),
DevToolsExtensionEventType.unknown,
);
expect(
DevToolsExtensionEventType.from('pongg'),
DevToolsExtensionEventType.unknown,
);
});
});
}