summaryrefslogtreecommitdiff
path: root/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js
blob: 779a0ed48dfeab7834e97cb33fa9f8c265fd5c95 (plain)
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
( function ( mw, $ ) {
	QUnit.module( 'mediawiki.cldr', QUnit.newMwEnvironment() );

	var pluralTestcases = {
		/*
		 * Sample:
		 * languagecode : [
		 *   [ number, [ 'form1', 'form2', ... ],  'expected', 'description' ]
		 * ];
		 */
		en: [
			[ 0, [ 'one', 'other' ], 'other', 'English plural test- 0 is other' ],
			[ 1, [ 'one', 'other' ], 'one', 'English plural test- 1 is one' ]
		],
		fa: [
			[ 0, [ 'one', 'other' ], 'other', 'Persian plural test- 0 is other' ],
			[ 1, [ 'one', 'other' ], 'one', 'Persian plural test- 1 is one' ],
			[ 2, [ 'one', 'other' ], 'other', 'Persian plural test- 2 is other' ]
		],
		fr: [
			[ 0, [ 'one', 'other' ], 'other', 'French plural test- 0 is other' ],
			[ 1, [ 'one', 'other' ], 'one', 'French plural test- 1 is one' ]
		],
		hi: [
			[ 0, [ 'one', 'other' ], 'one', 'Hindi plural test- 0 is one' ],
			[ 1, [ 'one', 'other' ], 'one', 'Hindi plural test- 1 is one' ],
			[ 2, [ 'one', 'other' ], 'other', 'Hindi plural test- 2 is other' ]
		],
		he: [
			[ 0, [ 'one', 'other' ], 'other', 'Hebrew plural test- 0 is other' ],
			[ 1, [ 'one', 'other' ], 'one', 'Hebrew plural test- 1 is one' ],
			[ 2, [ 'one', 'other' ], 'other', 'Hebrew plural test- 2 is other with 2 forms' ],
			[ 2, [ 'one', 'dual', 'other' ], 'dual', 'Hebrew plural test- 2 is dual with 3 forms' ]
		],
		hu: [
			[ 0, [ 'one', 'other' ], 'other', 'Hungarian plural test- 0 is other' ],
			[ 1, [ 'one', 'other' ], 'one', 'Hungarian plural test- 1 is one' ],
			[ 2, [ 'one', 'other' ], 'other', 'Hungarian plural test- 2 is other' ]
		],
		hy: [
			[ 0, [ 'one', 'other' ], 'other', 'Armenian plural test- 0 is other' ],
			[ 1, [ 'one', 'other' ], 'one', 'Armenian plural test- 1 is one' ],
			[ 2, [ 'one', 'other' ], 'other', 'Armenian plural test- 2 is other' ]
		],
		ar: [
			[ 0, [ 'zero', 'one', 'two', 'few', 'many', 'other' ], 'zero', 'Arabic plural test - 0 is zero' ],
			[ 1, [ 'zero', 'one', 'two', 'few', 'many', 'other' ], 'one', 'Arabic plural test - 1 is one' ],
			[ 2, [ 'zero', 'one', 'two', 'few', 'many', 'other' ], 'two', 'Arabic plural test - 2 is two' ],
			[ 3, [ 'zero', 'one', 'two', 'few', 'many', 'other' ], 'few', 'Arabic plural test - 3 is few' ],
			[ 9, [ 'zero', 'one', 'two', 'few', 'many', 'other' ], 'few', 'Arabic plural test - 9 is few' ],
			[ '9', [ 'zero', 'one', 'two', 'few', 'many', 'other' ], 'few', 'Arabic plural test - 9 is few' ],
			[ 110, [ 'zero', 'one', 'two', 'few', 'many', 'other' ], 'few', 'Arabic plural test - 110 is few' ],
			[ 11, [ 'zero', 'one', 'two', 'few', 'many', 'other' ], 'many', 'Arabic plural test - 11 is many' ],
			[ 15, [ 'zero', 'one', 'two', 'few', 'many', 'other' ], 'many', 'Arabic plural test - 15 is many' ],
			[ 99, [ 'zero', 'one', 'two', 'few', 'many', 'other' ], 'many', 'Arabic plural test - 99 is many' ],
			[ 9999, [ 'zero', 'one', 'two', 'few', 'many', 'other' ], 'many', 'Arabic plural test - 9999 is many' ],
			[ 100, [ 'zero', 'one', 'two', 'few', 'many', 'other' ], 'other', 'Arabic plural test - 100 is other' ],
			[ 102, [ 'zero', 'one', 'two', 'few', 'many', 'other' ], 'other', 'Arabic plural test - 102 is other' ],
			[ 1000, [ 'zero', 'one', 'two', 'few', 'many', 'other' ], 'other', 'Arabic plural test - 1000 is other' ],
			[ 1.7, [ 'zero', 'one', 'two', 'few', 'many', 'other' ], 'other', 'Arabic plural test - 1.7 is other' ]
		]
	};

	function pluralTest( langCode, tests ) {
		QUnit.test( 'Plural Test for ' + langCode, tests.length, function ( assert ) {
			for ( var i = 0; i < tests.length; i++ ) {
				assert.equal(
					mw.language.convertPlural( tests[i][0], tests[i][1] ),
					tests[i][2],
					tests[i][3]
				);
			}
		} );
	}

	$.each( pluralTestcases, function ( langCode, tests ) {
		if ( langCode === mw.config.get( 'wgUserLanguage' ) ) {
			pluralTest( langCode, tests );
		}
	} );
}( mediaWiki, jQuery ) );