39 lines
1.5 KiB
JavaScript
39 lines
1.5 KiB
JavaScript
// META: script=/resources/testdriver.js
|
|
// META: script=/resources/testdriver-vendor.js
|
|
// META: script=resources/font-asserts.js
|
|
// META: script=resources/font-data.js
|
|
// META: script=resources/font-test-utils.js
|
|
// META: timeout=long
|
|
|
|
'use strict';
|
|
|
|
font_access_test(async t => {
|
|
// Fonts we know about. Not all expected fonts are included.
|
|
const testData = getTestData();
|
|
|
|
// Get the system fonts.
|
|
const fonts = await self.queryLocalFonts();
|
|
assert_true(Array.isArray(fonts), 'Result of query() should be an Array');
|
|
assert_greater_than_equal(fonts.length, 1, 'Need a least one font');
|
|
|
|
fonts.forEach(font => {
|
|
assert_true(
|
|
font instanceof FontData, 'Results should be FontData instances');
|
|
|
|
// Verify properties and types.
|
|
assert_equals(typeof font.postscriptName, 'string');
|
|
assert_true(
|
|
font.postscriptName.split('').every(c => (' ' <= c && c < '\x7f')),
|
|
`postscriptName should be printable ASCII: "${font.postscriptName}"`);
|
|
assert_equals(typeof font.fullName, 'string', 'fullName attribute type');
|
|
assert_equals(typeof font.family, 'string', 'family attribute type');
|
|
assert_equals(typeof font.style, 'string', 'style attribute type');
|
|
|
|
// If the sample test data contains the returned system font,
|
|
// then verify the values of FontData.
|
|
const expectedFont = testData.get(font.postscriptName);
|
|
if (expectedFont) {
|
|
assert_font_equals(font, expectedFont);
|
|
}
|
|
});
|
|
}, 'queryLocalFonts(): FontData property types and values');
|