// 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');