import 'package:flutter_test/flutter_test.dart'; import 'package:desktop_plugin/print/backend.dart'; import 'package:desktop_plugin/print/mock_backend.dart'; import 'package:desktop_plugin/server/print_queue.dart'; import 'package:desktop_plugin/server/protocol.dart'; void main() { group('协议 DTO', () { test('PrinterStatus.offline 序列化字段与前端约定对齐', () { final json = PrinterStatus.offline('打印机未连接').toJson(); expect(json['online'], false); expect(json['status'], 0x80); expect(json['statusText'], '打印机未连接'); expect((json['ribbon'] as Map)['remain'], -1); expect(json['cardLeft'], -1); expect(json['connection'], 'USB'); }); test('PrintRequest.fromJson 解析 front/back/copies', () { final req = PrintRequest.fromJson({ 'copies': 2, 'front': {'color': 'data:image/png;base64,AAA', 'k': 'data:image/png;base64,BBB'}, 'back': {'color': 'data:image/png;base64,CCC'}, }); expect(req.copies, 2); expect(req.front!.color, 'data:image/png;base64,AAA'); expect(req.front!.k, 'data:image/png;base64,BBB'); expect(req.back!.color, 'data:image/png;base64,CCC'); }); }); group('打印队列', () { test('缺少 front.color 提交即报错', () { final queue = PrintQueue(MockBackend()); expect( () => queue.submit(PrintRequest.fromJson({'copies': 1})), throwsArgumentError, ); }); test('mock 任务串行走完 printing -> done', () async { final queue = PrintQueue(MockBackend()); final id = queue.submit(PrintRequest.fromJson({ 'front': {'color': 'data:image/png;base64,AAA'}, })); expect(id, 't1'); expect(queue.get(id)!.state, 'printing'); await Future.delayed(const Duration(milliseconds: 2700)); expect(queue.get(id)!.state, 'done'); }); }); test('osBackendName 在 mac 上为 cups', () { expect(osBackendName(), anyOf('cups', 'pavo')); }); }