File: testUtil.js

package info (click to toggle)
gnome-characters 49.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,980 kB
  • sloc: ansic: 55,549; javascript: 1,221; python: 457; ruby: 62; xml: 59; sh: 28; makefile: 5
file content (41 lines) | stat: -rw-r--r-- 1,336 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
imports.gi.versions.Gdk = '4.0';
imports.gi.versions.Gtk = '4.0';

const { jsUnit: JsUnit } = imports;
const { util: Util } = imports;
const { Gc, GLib, Gsk, Gtk } = imports.gi;

Gtk.init();

const emojis = ['🍕', '🤌', '🥰'];
emojis.forEach(e => JsUnit.assertTrue(
    Util.characterToIconData(e) instanceof GLib.Variant));

const whiteSpaces = ['', ' ', '\n', '\r', '\n', '\t', '\t   \n    \n \r      '];
whiteSpaces.forEach(e => JsUnit.assertNull(Util.characterToIconData(e)));

function testSearch(keywords, maxResults = 5) {
    const upper = keywords.split(' ').map(x => x.toUpperCase());
    const criteria = Gc.SearchCriteria.new_keywords(upper);
    const context = new Gc.SearchContext({ criteria, flags: Gc.SearchFlag.WORD });
    const loop = new GLib.MainLoop(null, false);

    const characters = [];
    context.search(maxResults, null, (_source, res) => {
        try {
            const result = context.search_finish(res);
            characters.push(...Util.searchResultToArray(result));
        } catch (e) {
            throw e;
        } finally {
            loop.quit();
        }
    });

    loop.run();
    return characters;
}

JsUnit.assertTrue(testSearch('pizza').includes('🍕'));
JsUnit.assertTrue(testSearch('joy').includes('😂'));
JsUnit.assertEquals(testSearch('space').length, 0);