-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathtest.js
115 lines (112 loc) · 5 KB
/
test.js
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
// versligilumi: parsing verses url parameters {{{
function test_versligilumi () {
let fail=0, all=0
;[
['#p=1', 1, 7],
['#p=1&a=1', 1, 8],
['#p=1&b=1', 1, 7],
['#p=1&a=1&b=1', 1, 8],
['#p=1&a=1&b=-1', 2, 8],
['#p=1&a=-1&b=-1', 2, 6],
['#p=1&b=-1&a=-1', 2, 6],
['#p=2', 8, 12],
['#p=1-2', 1, 12],
['#s=1', 1, 7],
['#s=2', 8, 7+286],
['#s=3', 7+286+1, 7+286+200],
['#s=112', 6236-6-5-4+1, 6236-6-5],
['#s=113', 6236-6-5+1, 6236-6],
['#s=114', 6236-6+1, 6236],
['#p=604', 6236-6-5-4+1, 6236],
['#j=1', 1, 141+7],
['#r=-8', 1, 141+7],
['#r=1-8', 1, 141+7],
['#r=-1//7', 1, 141+7],
['#r=-2/3', 1, 141+7],
['#j=2', 142+7, 252+7],
['#j=2-3', 142+7, 92+286+7],
['#j=2-', 142+7, 6236],
['#j=-3', 1, 92+286+7],
['#j=3-', 253+7, 6236],
['#h=-', 1, 6236],
['#h=-2', 1, 141+7],
['#h=1-2', 1, 141+7],
['#h=2/0-2/1', 142+7, 252+7],
['#h=2-3', 75+7, 202+7],
['#h=1/1-2/0', 75+7, 202+7],
['#r=-', 1, 6236],
['#r=-2', 1, 43+7],
['#r=1-2', 1, 43+7],
['#r=2//0-2//7', 142+7, 252+7],
['#r=5-12', 75+7, 202+7],
['#r=2/0-3/3', 75+7, 202+7],
['#r=2/0-3/2', 75+7, 188+7],
['#r=6/1', 7+286+33, 7+286+51],
['#8', 8, 8],
['#120-1299', 120, 1299],
['#k=1/1', 1, 7],
['#k=2/1', 8, 7+7],
['#k=2/2', 8+7, 7+20],
['#k=2/3', 8+20, 7+29],
['#k=2/4', 8+29, 7+39],
['#k=3/1', 8+286, 293+9],
['#k=3/2', 8+286+9, 293+20],
['#k=1', 1, 7],
['#k=2', 8, 7+7],
['#k=3', 8+7, 7+20],
['#k=4', 8+20, 7+29],
['#k=5', 8+29, 7+39],
['#k=42', 8+286, 293+9],
['#k=43', 8+286+9, 293+20],
['#114/1-114/6', 6231, 6236],
['#k=556', 6231, 6236],
['#', null, null],
['?', null, null],
['', null, null],
['#d', null, null],
['?d', null, null],
['d', null, null],
]
.forEach((t) => {
let [st, en] = _versligilumilo(t[0])
if (st !== t[1] || en !== t[2]) {
console.log('versligilumi', t[0], ' got', st, en, ' exp', t[1], t[2])
fail += 1
}
all += 1
})
console.log('versligilumi test finished;', fail, 'failed out of', all)
}/**/ // }}}
// make_title: human readable version of the range to recite {{{
function test_make_title () {
let fail=0, all=0, out, cls
// Remember: all numbers here are 1-based.
[
[[1,1,1,1], 'تسميع الآية الأولى من سورة الفاتحة'],
[[1,7,1,7], 'تسميع الآية ٧ الأخيرة من سورة الفاتحة'],
[[1,4,1,4], 'تسميع الآية ٤ من سورة الفاتحة'],
[[1,4,1,5], 'تسميع الآيتين ٤ و٥ من سورة الفاتحة'],
[[1,6,1,7], 'تسميع الآيتين ٦ و٧ الأخيرة من سورة الفاتحة'],
[[1,2,1,7], 'تسميع سورة الفاتحة من الآية ٢ حتى الآية ٧ الأخيرة'],
[[1,1,1,3], 'تسميع سورة الفاتحة من الآية الأولى حتى الآية ٣'],
[[2,1,2,286], 'تسميع سورة البقرة كاملة'],
[[1,1,2,286], 'تسميع سورتي الفاتحة والبقرة كاملتين'],
// [[1,1,3,200], 'تسميع سور الفاتحة والبقرة وآل عمران كاملة'],
[[1,1,3,200], 'تسميع السور من الفاتحة حتى آل عمران'],
[[1,1,114,6], 'تسميع السور من الفاتحة حتى الناس'],
[[1,1,3,199], 'تسميع من سورة الفاتحة الآية الأولى حتى سورة آل عمران الآية ١٩٩'],
]
.forEach((t) => {
[out, cls] = make_title(...t[0])
out = out.replace(/\xa0/g, ' ') // NBSP
if (out !== t[1]) {
console.log('make_title', t[0], ' got', out, ' exp', t[1])
fail += 1
}
all += 1
})
console.log('make_title test finished;', fail, 'failed out of', all)
}/**/ // }}}
test_versligilumi()
test_make_title()
// vim: fdm=marker :