Files
PotatoPassCore/test/potato_pass_core_test.dart
2026-08-07 15:29:02 +03:00

53 lines
2.5 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 .-,'));
});
});
}