]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /* |
2 | * Test using timers and intervals with curses. | |
3 | */ | |
4 | ||
5 | if (typeof Ncurses !== 'object') { | |
6 | throw new Error('Ncurses required'); | |
7 | } | |
8 | ||
9 | function fillScreen(ch) { | |
10 | var size, w, h; | |
11 | var i, j; | |
12 | ||
13 | size = Ncurses.getmaxyx(); | |
14 | h = size[0]; | |
15 | w = size[1]; | |
16 | ||
17 | for (i = 0; i < h; i++) { | |
18 | for (j = 0; j < w; j++) { | |
19 | Ncurses.mvprintw(i, j, ch); | |
20 | } | |
21 | } | |
22 | Ncurses.refresh(); | |
23 | } | |
24 | ||
25 | function main() { | |
26 | var i, j; | |
27 | var counters = []; | |
28 | var size, w, h; | |
29 | ||
30 | Ncurses.initscr(); | |
31 | size = Ncurses.getmaxyx(); | |
32 | h = size[0]; | |
33 | w = size[1]; | |
34 | ||
35 | fillScreen('.'); | |
36 | ||
37 | setInterval(function () { | |
38 | Ncurses.mvprintw(1, 4, new Date().toISOString()); | |
39 | Ncurses.refresh(); | |
40 | }, 1000); | |
41 | ||
42 | function addCounter(row, index, interval) { | |
43 | counters[index] = 0; | |
44 | setInterval(function () { | |
45 | counters[index]++; | |
46 | Ncurses.mvprintw(row, 4, '' + Date.now() + ' ' + counters[index]); | |
47 | Ncurses.refresh(); | |
48 | }, interval); | |
49 | } | |
50 | ||
51 | function addRandomChar(row, col, interval) { | |
52 | setTimeout(function () { | |
53 | Ncurses.mvprintw(row, col, String.fromCharCode(Math.random() * 64 + 0x20)); | |
54 | Ncurses.refresh(); | |
55 | }, interval); | |
56 | } | |
57 | ||
58 | for (i = 0; i < h - 5; i++) { | |
59 | addCounter(3 + i, i, 363 * i + 400); | |
60 | } | |
61 | ||
62 | /* Here the inserts take a lot of time because the underlying timer manager | |
63 | * data structure has O(n) insertion performance. | |
64 | */ | |
65 | for (i = 0; i < h - 5; i++) { | |
66 | for (j = 0; j < w - 50; j++) { | |
67 | // Math.exp(0)...Math.exp(8) is an uneven distribution between 1...~2980. | |
68 | addRandomChar(3 + i, 28 + j, 58000 - Math.exp(Math.random() * 8) * 20); | |
69 | } | |
70 | } | |
71 | ||
72 | setTimeout(function () { | |
73 | Ncurses.endwin(); | |
74 | Ncurses.delscreen(); | |
75 | requestEventLoopExit(); | |
76 | }, 120e3); | |
77 | } | |
78 | ||
79 | main(); |