53 lines
2.5 KiB
Dart
53 lines
2.5 KiB
Dart
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 .-,'));
|
||
});
|
||
});
|
||
} |