blob: fe406cfde6bce1c5d42f9dfede211bde800c96d1 [file] [log] [blame]
// Copyright 2019 The Fuchsia 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:fidl_fuchsia_ui_remotewidgets/fidl_async.dart';
import 'package:test/test.dart';
import 'package:quickui/quickui.dart';
import 'package:quickui/uistream.dart';
void main() {
test('Create UiStream', () async {
final ui = TestUi();
final uiStream = UiStream(ui)..listen();
final spec = await uiStream.stream.first;
final group = spec.groups.first;
expect(group.title, 'Foo');
expect(group.values.length, 0);
});
test('Update UiStream', () async {
final ui = TestUi();
final uiStream = UiStream(ui)..listen();
final stream = uiStream.stream;
Spec spec = await stream.first;
Group group = spec.groups.first;
expect(group.title, 'Foo');
expect(group.values.length, 0);
ui.update(Value.withNumber(NumberValue(
value: Number.withIntValue(5),
action: 1,
)));
spec = await stream.skip(1).first;
group = spec.groups.first;
expect(group.title, 'Bar');
expect(group.values.length, 1);
expect(group.values.first.$tag, ValueTag.number);
expect(group.values.first.number.action, 1);
expect(group.values.first.number.value.intValue, 5);
});
}
class TestUi extends UiSpec {
TestUi() : super(_build());
@override
void update(Value value) {
spec = Spec(
title: '',
groups: <Group>[
Group(title: 'Bar', values: [value]),
],
);
}
@override
void dispose() {}
static Spec _build() {
return Spec(title: '', groups: <Group>[Group(title: 'Foo', values: [])]);
}
}