signal-desktop/ts/test-both/util/getFontNameByTextScript_test.ts

108 lines
4 KiB
TypeScript
Raw Normal View History

2022-04-06 01:18:07 +00:00
// 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', {}));
2022-04-06 01:18:07 +00:00
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', {}));
2022-04-06 01:18:07 +00:00
const expected = '"PingFang TC Regular", "JhengHei TC Regular", sans-serif';
assert.equal(actual, expected);
});
});