Signal-Desktop/ts/test-both/util/getFontNameByTextScript_tes...

108 lines
4.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { assert } from 'chai';
import {
fontSniffer,
getFontNameByTextScript,
} from '../../util/getFontNameByTextScript';
import { setupI18n } from '../../util/setupI18n';
describe('getFontNameByTextScript', () => {
it('has arabic', () => {
const text = 'الثعلب البني السريع يقفز فوق الكلب الكسول';
assert.isTrue(fontSniffer.hasArabic(text), 'arabic');
assert.isFalse(fontSniffer.hasLatin(text), 'latin');
assert.isFalse(fontSniffer.hasJapanese(text), 'japanese');
});
it('has chinese (simplified)', () => {
const text = '敏捷的棕色狐狸跳过了懒狗';
assert.isTrue(fontSniffer.hasCJK(text), 'cjk');
assert.isFalse(fontSniffer.hasLatin(text), 'latin');
assert.isFalse(fontSniffer.hasJapanese(text), 'japanese');
});
it('has chinese (traditional)', () => {
const text = '敏捷的棕色狐狸跳過了懶狗';
assert.isTrue(fontSniffer.hasCJK(text), 'cjk');
assert.isFalse(fontSniffer.hasLatin(text), 'latin');
assert.isFalse(fontSniffer.hasJapanese(text), 'japanese');
});
it('has cyrillic (Bulgarian)', () => {
const text = 'Бързата кафява лисица прескача мързеливото куче';
assert.isFalse(fontSniffer.hasLatin(text), 'latin');
assert.isTrue(fontSniffer.hasCyrillic(text), 'cyrillic');
assert.isFalse(fontSniffer.hasArabic(text), 'arabic');
});
it('has cyrillic (Ukranian)', () => {
const text = 'Швидка бура лисиця стрибає через ледачого пса';
assert.isFalse(fontSniffer.hasLatin(text), 'latin');
assert.isTrue(fontSniffer.hasCyrillic(text), 'cyrillic');
assert.isFalse(fontSniffer.hasArabic(text), 'arabic');
});
it('has devanagari', () => {
const text = 'तेज, भूरी लोमडी आलसी कुत्ते के उपर कूद गई';
assert.isTrue(fontSniffer.hasDevanagari(text), 'devanagari');
assert.isFalse(fontSniffer.hasLatin(text), 'latin');
assert.isFalse(fontSniffer.hasCyrillic(text), 'cyrillic');
});
it('has japanese', () => {
const text = '速い茶色のキツネは怠惰な犬を飛び越えます';
assert.isFalse(fontSniffer.hasDevanagari(text), 'devanagari');
assert.isFalse(fontSniffer.hasLatin(text), 'latin');
assert.isTrue(fontSniffer.hasJapanese(text), 'japanese');
assert.isTrue(fontSniffer.hasCJK(text), 'cjk');
});
it('throws when passing in an invalid text style', () => {
const text = 'abc';
assert.throws(() => {
getFontNameByTextScript(text, -1);
});
assert.throws(() => {
getFontNameByTextScript(text, 99);
});
});
it('returns the correct font names in the right order (japanese)', () => {
const text = '速い茶色のキツネは怠惰な犬を飛び越えます';
const actual = getFontNameByTextScript(text, 0);
const expected =
'"Hiragino Sans W3", "PingFang SC Regular", SimHei, sans-serif';
assert.equal(actual, expected);
});
it('returns the correct font names in the right order (latin)', () => {
const text = 'The quick brown fox jumps over the lazy dog';
const actual = getFontNameByTextScript(text, 0);
const expected = 'Inter, sans-serif';
assert.equal(actual, expected);
});
it('returns the correct font names (chinese simplified)', () => {
const text = '敏捷的棕色狐狸跳过了懒狗';
const actual = getFontNameByTextScript(text, 0, setupI18n('zh-CN', {}));
const expected = '"PingFang SC Regular", SimHei, sans-serif';
assert.equal(actual, expected);
});
it('returns the correct font names (chinese traditional)', () => {
const text = '敏捷的棕色狐狸跳過了懶狗';
const actual = getFontNameByTextScript(text, 0, setupI18n('zh-TW', {}));
const expected = '"PingFang TC Regular", "JhengHei TC Regular", sans-serif';
assert.equal(actual, expected);
});
});