twonly-app-dependencies/qr/test/qr_datum_test.dart
2026-02-12 22:01:59 +01:00

46 lines
1.4 KiB
Dart

import 'package:qr/src/byte.dart';
import 'package:qr/src/eci.dart';
import 'package:test/test.dart';
void main() {
group('QrDatum.toDatums', () {
test('Numeric', () {
final datums = QrDatum.toDatums('123456');
expect(datums, hasLength(1));
expect(datums.first, isA<QrNumeric>());
});
test('AlphaNumeric', () {
final datums = QrDatum.toDatums('HELLO WORLD');
expect(datums, hasLength(1));
expect(datums.first, isA<QrAlphaNumeric>());
});
test('Byte (Latin-1)', () {
final datums = QrDatum.toDatums('Hello World!');
expect(datums, hasLength(1));
expect(datums.first, isA<QrByte>());
});
test('Byte (UTF-8 with ECI)', () {
final datums = QrDatum.toDatums('Hello 🌍');
expect(datums, hasLength(2));
expect(datums[0], isA<QrEci>());
expect((datums[0] as QrEci).value, 26);
expect(datums[1], isA<QrByte>());
});
test('Complex Emoji (UTF-8 with ECI)', () {
// Woman + Medium Skin Tone + ZWJ + Heart + VS16 + ZWJ + Kiss Mark + ZWJ
// + Man + Dark Brown Skin Tone
const complexEmoji =
'\u{1F469}\u{1F3FD}\u{200D}\u{2764}\u{FE0F}\u{200D}'
'\u{1F48B}\u{200D}\u{1F468}\u{1F3FE}';
final datums = QrDatum.toDatums(complexEmoji);
expect(datums, hasLength(2));
expect(datums[0], isA<QrEci>());
expect((datums[0] as QrEci).value, 26);
expect(datums[1], isA<QrByte>());
});
});
}