import 'dart:typed_data'; import 'package:potato_pass_core/potato_pass_core.dart'; import 'package:test/test.dart'; void main() { group('CompactTextEncoder Tests', () { test('Кодирование и декодирование русской строки', () { const input = 'ИВАНОВ ИВАН ИВАНОВИЧ'; // Кодируем final Uint8List encoded = CompactTextEncoder.encode(input); // Проверяем декодирование final String decoded = CompactTextEncoder.decode(encoded); expect(decoded, equals(input)); }); test('Проверка сжатия размера', () { const input = 'ИВАНОВ ИВАН'; // 11 символов // В UTF-8 кириллица весит 2 байта на символ и займут 22 байта // В 6-битном кодировщике 11 символов округляются до 12 и займут 9 байт final Uint8List encoded = CompactTextEncoder.encode(input); expect(encoded.length, equals(9)); }); test('Обработка строчных букв (автоперевод в верхний регистр)', () { const input = 'Петров Петр'; final Uint8List encoded = CompactTextEncoder.encode(input); final String decoded = CompactTextEncoder.decode(encoded); expect(decoded, equals('ПЕТРОВ ПЕТР')); }); test('Тест некодируемых символов', () { const input = '_.`~!@#\$%^&*()=+\\||//1234567890.';//2 точки и 29 некодирукемый символ (точки чтобы не обрезало) и _ в начале которе final Uint8List encoded = CompactTextEncoder.encode(input); final String decoded = CompactTextEncoder.decode(encoded); expect(decoded, equals('. .'));//2 точки и 29 пробелов (некодируемые символы заменяются на пробелы) }); test('Тест кодируемости всех символов', () { const input = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ .-,';//Все неслужебные символы final Uint8List encoded = CompactTextEncoder.encode(input); final String decoded = CompactTextEncoder.decode(encoded); expect(decoded, equals('АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ .-,')); }); }); }