Files
plezy/test/i18n/app_locale_utils_test.dart
T

52 lines
1.6 KiB
Dart

import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:plezy/i18n/app_locale_utils.dart';
import 'package:plezy/i18n/strings.g.dart';
void main() {
group('resolvePreferredAppLocale', () {
test('uses explicit Chinese scripts before regions', () {
expect(
resolvePreferredAppLocale([
const Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hant', countryCode: 'TW'),
]),
AppLocale.zhHant,
);
expect(
resolvePreferredAppLocale([
const Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hans', countryCode: 'TW'),
]),
AppLocale.zh,
);
});
test('maps region-only Chinese locales to the expected script', () {
for (final region in const ['TW', 'HK', 'MO']) {
expect(resolvePreferredAppLocale([Locale('zh', region)]), AppLocale.zhHant, reason: region);
}
for (final region in const ['CN', 'SG']) {
expect(resolvePreferredAppLocale([Locale('zh', region)]), AppLocale.zh, reason: region);
}
});
test('preserves device preference order', () {
expect(
resolvePreferredAppLocale(const [
Locale('fr', 'FR'),
Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hant'),
]),
AppLocale.fr,
);
expect(
resolvePreferredAppLocale(const [Locale('xx'), Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hant')]),
AppLocale.zhHant,
);
expect(
resolvePreferredAppLocale(const [Locale('zh'), Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hant')]),
AppLocale.zh,
);
});
});
}