| // Copyright 2018 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 'dart:typed_data'; |
| import 'package:test/test.dart'; |
| import 'package:fidl_fidl_examples_bindingstest/fidl_async.dart'; |
| |
| import './server.dart'; |
| |
| void main() async { |
| TestServerInstance server; |
| |
| group('one way', () { |
| setUpAll(() async { |
| server = TestServerInstance(); |
| await server.start(); |
| }); |
| |
| tearDownAll(() async { |
| await server.stop(); |
| server = null; |
| }); |
| |
| test('no args', () async { |
| await server.proxy.oneWayNoArgs(); |
| final bool received = await server.proxy.receivedOneWayNoArgs(); |
| expect(received, isTrue); |
| }); |
| |
| test('string arg', () async { |
| await server.proxy.oneWayStringArg('Hello, world'); |
| final String stringReply = await server.proxy.receivedOneWayString(); |
| expect(stringReply, equals('Hello, world')); |
| }); |
| |
| test('three args', () async { |
| final primes = |
| Uint8List.fromList([2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]); |
| await server.proxy.oneWayThreeArgs( |
| 23, 42, NoHandleStruct(foo: 'hello', bar: 1729, baz: primes)); |
| final threeReply = await server.proxy.receivedOneWayThreeArgs(); |
| expect(threeReply.x, equals(23)); |
| expect(threeReply.y, equals(42)); |
| expect(threeReply.z.foo, equals('hello')); |
| expect(threeReply.z.bar, equals(1729)); |
| expect(threeReply.z.baz, unorderedEquals(primes)); |
| }); |
| |
| test('table', () async { |
| final primes = |
| Uint8List.fromList([2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]); |
| await server.proxy.oneWayExampleTable( |
| ExampleTable(foo: 'hello', bar: 1729, baz: primes)); |
| final received = await server.proxy.receivedOneWayExampleTable(); |
| expect(received.foo, equals('hello')); |
| expect(received.bar, equals(1729)); |
| expect(received.baz, unorderedEquals(primes)); |
| }); |
| |
| test('partial table', () async { |
| await server.proxy.oneWayExampleTable( |
| ExampleTable(bar: 1729)); // not seting foo, nor baz |
| final received = await server.proxy.receivedOneWayExampleTable(); |
| expect(received.foo, equals(null)); |
| expect(received.bar, equals(1729)); |
| expect(received.baz, equals(null)); |
| }); |
| |
| test('empty table', () async { |
| await server.proxy.oneWayExampleTable( |
| ExampleTable()); |
| final received = await server.proxy.receivedOneWayExampleTable(); |
| expect(received.foo, equals(null)); |
| expect(received.bar, equals(null)); |
| expect(received.baz, equals(null)); |
| }); |
| |
| test('xunion with string', () async { |
| await server.proxy.oneWayExampleXunion( |
| ExampleXunion.withFoo('hello')); |
| final received = await server.proxy.receivedOneWayExampleXunion(); |
| expect(received.foo, equals('hello')); |
| expect(received.bar, equals(null)); |
| expect(received.baz, equals(null)); |
| }); |
| |
| test('xunion with int', () async { |
| await server.proxy.oneWayExampleXunion( |
| ExampleXunion.withBar(1729)); |
| final received = await server.proxy.receivedOneWayExampleXunion(); |
| expect(received.foo, equals(null)); |
| expect(received.bar, equals(1729)); |
| expect(received.baz, equals(null)); |
| }); |
| |
| test('xunion with vector of bytes', () async { |
| final primes = |
| Uint8List.fromList([2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]); |
| await server.proxy.oneWayExampleXunion( |
| ExampleXunion.withBaz(primes)); |
| final received = await server.proxy.receivedOneWayExampleXunion(); |
| expect(received.foo, equals(null)); |
| expect(received.bar, equals(null)); |
| expect(received.baz, unorderedEquals(primes)); |
| }); |
| }); |
| } |