blob: 8c074a2c38c7099b922de5a8455880745a7d3b36 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:test/bootstrap/browser.dart';
import 'package:test/test.dart';
import 'package:ui/src/engine.dart';
void main() {
internalBootstrapBrowserTest(() => testMain);
}
void testMain() {
group('$FontManager', () {
late FontManager fontManager;
const String testFontUrl = '/assets/fonts/ahem.ttf';
setUp(() {
fontManager = FontManager();
});
tearDown(() {
domDocument.fonts!.clear();
});
group('regular special characters', () {
test('Register Asset with no special characters', () async {
const String testFontFamily = 'Ahem';
final List<String> fontFamilyList = <String>[];
fontManager.downloadAsset(
testFontFamily, 'url($testFontUrl)', const <String, String>{});
await fontManager.downloadAllFonts();
fontManager.registerDownloadedFonts();
domDocument.fonts!
.forEach(allowInterop((DomFontFace f, DomFontFace f2, DomFontFaceSet s) {
fontFamilyList.add(f.family!);
}));
expect(fontFamilyList.length, equals(1));
expect(fontFamilyList.first, 'Ahem');
});
test('Register Asset with white space in the family name', () async {
const String testFontFamily = 'Ahem ahem ahem';
final List<String> fontFamilyList = <String>[];
fontManager.downloadAsset(
testFontFamily, 'url($testFontUrl)', const <String, String>{});
await fontManager.downloadAllFonts();
fontManager.registerDownloadedFonts();
domDocument.fonts!
.forEach(allowInterop((DomFontFace f, DomFontFace f2, DomFontFaceSet s) {
fontFamilyList.add(f.family!);
}));
expect(fontFamilyList.length, equals(1));
expect(fontFamilyList.first, 'Ahem ahem ahem');
},
// TODO(mdebbar): https://github.com/flutter/flutter/issues/51142
skip: browserEngine == BrowserEngine.webkit);
test('Register Asset with capital case letters', () async {
const String testFontFamily = 'AhEm';
final List<String> fontFamilyList = <String>[];
fontManager.downloadAsset(
testFontFamily, 'url($testFontUrl)', const <String, String>{});
await fontManager.downloadAllFonts();
fontManager.registerDownloadedFonts();
domDocument.fonts!
.forEach(allowInterop((DomFontFace f, DomFontFace f2, DomFontFaceSet s) {
fontFamilyList.add(f.family!);
}));
expect(fontFamilyList.length, equals(1));
expect(fontFamilyList.first, 'AhEm');
});
});
group('fonts with special characters', () {
test('Register Asset twice with special character slash', () async {
const String testFontFamily = '/Ahem';
final List<String> fontFamilyList = <String>[];
fontManager.downloadAsset(
testFontFamily, 'url($testFontUrl)', const <String, String>{});
await fontManager.downloadAllFonts();
fontManager.registerDownloadedFonts();
domDocument.fonts!
.forEach(allowInterop((DomFontFace f, DomFontFace f2, DomFontFaceSet s) {
fontFamilyList.add(f.family!);
}));
if (browserEngine != BrowserEngine.firefox) {
expect(fontFamilyList.length, equals(2));
expect(fontFamilyList, contains("'/Ahem'"));
expect(fontFamilyList, contains('/Ahem'));
} else {
expect(fontFamilyList.length, equals(1));
expect(fontFamilyList.first, '"/Ahem"');
}
},
// TODO(mdebbar): https://github.com/flutter/flutter/issues/51142
skip: browserEngine == BrowserEngine.webkit);
test('Register Asset twice with exclamation mark', () async {
const String testFontFamily = 'Ahem!!ahem';
final List<String> fontFamilyList = <String>[];
fontManager.downloadAsset(
testFontFamily, 'url($testFontUrl)', const <String, String>{});
await fontManager.downloadAllFonts();
fontManager.registerDownloadedFonts();
domDocument.fonts!
.forEach(allowInterop((DomFontFace f, DomFontFace f2, DomFontFaceSet s) {
fontFamilyList.add(f.family!);
}));
if (browserEngine != BrowserEngine.firefox) {
expect(fontFamilyList.length, equals(2));
expect(fontFamilyList, contains("'Ahem!!ahem'"));
expect(fontFamilyList, contains('Ahem!!ahem'));
} else {
expect(fontFamilyList.length, equals(1));
expect(fontFamilyList.first, '"Ahem!!ahem"');
}
},
// TODO(mdebbar): https://github.com/flutter/flutter/issues/51142
skip: browserEngine == BrowserEngine.webkit);
test('Register Asset twice with comma', () async {
const String testFontFamily = 'Ahem ,ahem';
final List<String> fontFamilyList = <String>[];
fontManager.downloadAsset(
testFontFamily, 'url($testFontUrl)', const <String, String>{});
await fontManager.downloadAllFonts();
fontManager.registerDownloadedFonts();
domDocument.fonts!
.forEach(allowInterop((DomFontFace f, DomFontFace f2, DomFontFaceSet s) {
fontFamilyList.add(f.family!);
}));
if (browserEngine != BrowserEngine.firefox) {
expect(fontFamilyList.length, equals(2));
expect(fontFamilyList, contains("'Ahem ,ahem'"));
expect(fontFamilyList, contains('Ahem ,ahem'));
} else {
expect(fontFamilyList.length, equals(1));
expect(fontFamilyList.first, '"Ahem ,ahem"');
}
},
// TODO(mdebbar): https://github.com/flutter/flutter/issues/51142
skip: browserEngine == BrowserEngine.webkit);
test('Register Asset twice with a digit at the start of a token',
() async {
const String testFontFamily = 'Ahem 1998';
final List<String> fontFamilyList = <String>[];
fontManager.downloadAsset(
testFontFamily, 'url($testFontUrl)', const <String, String>{});
await fontManager.downloadAllFonts();
fontManager.registerDownloadedFonts();
domDocument.fonts!
.forEach(allowInterop((DomFontFace f, DomFontFace f2, DomFontFaceSet s) {
fontFamilyList.add(f.family!);
}));
if (browserEngine != BrowserEngine.firefox) {
expect(fontFamilyList.length, equals(2));
expect(fontFamilyList, contains('Ahem 1998'));
expect(fontFamilyList, contains("'Ahem 1998'"));
} else {
expect(fontFamilyList.length, equals(1));
expect(fontFamilyList.first, '"Ahem 1998"');
}
},
// TODO(mdebbar): https://github.com/flutter/flutter/issues/51142
skip: browserEngine == BrowserEngine.webkit);
});
});
}