terminal_isolate_test.dart 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import 'dart:async';
  2. import 'package:flutter_test/flutter_test.dart';
  3. import 'package:xterm/terminal/terminal_backend.dart';
  4. import 'package:xterm/terminal/terminal_isolate.dart';
  5. void main() {
  6. group('Start behavior tests', () {
  7. test('Using TerminalIsolate when not started throws exception', () {
  8. final fixture = _TestFixture();
  9. expect(() => fixture.uut.terminalWidth, throwsA(isA<Exception>()));
  10. });
  11. test('Using TerminalIsolate after started doesn\'t throw exceptions',
  12. () async {
  13. final fixture = _TestFixture();
  14. await fixture.uut.start(testingDontWaitForBootup: true);
  15. //no throw
  16. fixture.uut.showCursor;
  17. });
  18. });
  19. }
  20. class _TestFixture {
  21. _TestFixture() {
  22. fakeBackend = FakeBackend();
  23. uut = TerminalIsolate(maxLines: 10000, backend: fakeBackend);
  24. }
  25. late final TerminalIsolate uut;
  26. late final FakeBackend fakeBackend;
  27. }
  28. class FakeBackend implements TerminalBackend {
  29. @override
  30. void ackProcessed() {}
  31. @override
  32. bool get isReady => true;
  33. @override
  34. // TODO: implement exitCode
  35. Future<int> get exitCode => _exitCodeCompleter.future;
  36. @override
  37. void init() {
  38. _exitCodeCompleter = Completer<int>();
  39. _outStream = StreamController<String>();
  40. _hasInitBeenCalled = true;
  41. }
  42. @override
  43. Stream<String> get out => _outStream.stream;
  44. @override
  45. void resize(int width, int height, int pixelWidth, int pixelHeight) {
  46. _width = width;
  47. _height = height;
  48. _pixelWidth = pixelWidth;
  49. _pixelHeight = pixelHeight;
  50. }
  51. @override
  52. void terminate() {
  53. _isTerminated = true;
  54. }
  55. @override
  56. void write(String _) {}
  57. bool get hasInitBeenCalled => _hasInitBeenCalled;
  58. bool get isTerminated => _isTerminated;
  59. int? get width => _width;
  60. int? get height => _height;
  61. int? get pixelWidth => _pixelWidth;
  62. int? get pixelHeight => _pixelHeight;
  63. bool _hasInitBeenCalled = false;
  64. bool _isTerminated = false;
  65. int? _width;
  66. int? _height;
  67. int? _pixelWidth;
  68. int? _pixelHeight;
  69. late final _exitCodeCompleter;
  70. late final _outStream;
  71. }