Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 autoindent: */
3
/**
4
 * Numbers_Words class extension to spell numbers in Polish.
5
 *
6
 * PHP versions 4 and 5
7
 *
8
 * LICENSE: This source file is subject to version 3.01 of the PHP license
9
 * that is available through the world-wide-web at the following URI:
10
 * http://www.php.net/license/3_01.txt.  If you did not receive a copy of
11
 * the PHP License and are unable to obtain it through the web, please
12
 * send a note to license@php.net so we can mail you a copy immediately.
13
 *
14
 * @category  Numbers
15
 * @package   Numbers_Words
16
 * @author    Piotr Klaban <makler@man.torun.pl>
17
 * @copyright 1997-2008 The PHP Group
18
 * @license   http://www.php.net/license/3_01.txt  PHP License 3.01
19
 * @version   CVS: $Id: PolishTest.php 277160 2009-03-14 18:54:15Z kouber $
20
 * @link      http://pear.php.net/package/Numbers_Words
21
 * @since     File available only in CVS
22
 */
23
 
24
require_once 'Numbers/Words.php';
25
require_once 'PHPUnit/Framework/TestCase.php';
26
 
27
class Numbers_Words_PolishTest extends PHPUnit_Framework_TestCase
28
{
29
    var $handle;
30
 
31
    function setUp()
32
    {
33
        $this->handle = new Numbers_Words();
34
    }
35
 
36
    /**
37
     * Testing numbers between 0 and 9
38
     */
39
    function testDigits()
40
    {
41
        $digits = array('zero',
42
                        'jeden',
43
                        'dwa',
44
                        'trzy',
45
                        'cztery',
46
                        'piêæ',
47
                        'sze¶æ',
48
                        'siedem',
49
                        'osiem',
50
                        'dziewiêæ'
51
                       );
52
        for ($i = 0; $i < 10; $i++)
53
        {
54
            $number = $this->handle->toWords($i, 'pl');
55
            $this->assertEquals($digits[$i], $number);
56
        }
57
    }
58
 
59
    /**
60
     * Testing numbers between 10 and 99
61
     */
62
    function testTens()
63
    {
64
        $tens = array(11 => 'jedena¶cie',
65
                      12 => 'dwana¶cie',
66
                      16 => 'szesna¶cie',
67
                      19 => 'dziewiêtna¶cie',
68
                      20 => 'dwadzie¶cia',
69
                      21 => 'dwadzie¶cia jeden',
70
                      26 => 'dwadzie¶cia sze¶æ',
71
                      30 => 'trzydzie¶ci',
72
                      31 => 'trzydzie¶ci jeden',
73
                      40 => 'czterdzie¶ci',
74
                      43 => 'czterdzie¶ci trzy',
75
                      50 => 'piêædziesi±t',
76
                      55 => 'piêædziesi±t piêæ',
77
                      60 => 'sze¶ædziesi±t',
78
                      67 => 'sze¶ædziesi±t siedem',
79
                      70 => 'siedemdziesi±t',
80
                      79 => 'siedemdziesi±t dziewiêæ'
81
                     );
82
        foreach ($tens as $number => $word) {
83
            $this->assertEquals($word, $this->handle->toWords($number, 'pl'));
84
        }
85
    }
86
 
87
    /**
88
     * Testing numbers between 100 and 999
89
     */
90
    function testHundreds()
91
    {
92
        $hundreds = array(100 => 'sto',
93
                          101 => 'sto jeden',
94
                          199 => 'sto dziewiêædziesi±t dziewiêæ',
95
                          203 => 'dwie¶cie trzy',
96
                          287 => 'dwie¶cie osiemdziesi±t siedem',
97
                          300 => 'trzysta',
98
                          356 => 'trzysta piêædziesi±t sze¶æ',
99
                          410 => 'czterysta dziesiêæ',
100
                          434 => 'czterysta trzydzie¶ci cztery',
101
                          578 => 'piêæset siedemdziesi±t osiem',
102
                          689 => 'sze¶æset osiemdziesi±t dziewiêæ',
103
                          729 => 'siedemset dwadzie¶cia dziewiêæ',
104
                          894 => 'osiemset dziewiêædziesi±t cztery',
105
                          999 => 'dziewiêæset dziewiêædziesi±t dziewiêæ'
106
                         );
107
        foreach ($hundreds as $number => $word) {
108
            $this->assertEquals($word, $this->handle->toWords($number, 'pl'));
109
        }
110
    }
111
 
112
    /**
113
     * Testing numbers between 1000 and 9999
114
     */
115
    function testThousands()
116
    {
117
        $thousands = array(1000 => 'jeden tysi±c',
118
                           1001 => 'jeden tysi±c jeden',
119
                           1097 => 'jeden tysi±c dziewiêædziesi±t siedem',
120
                           1104 => 'jeden tysi±c sto cztery',
121
                           1243 => 'jeden tysi±c dwie¶cie czterdzie¶ci trzy',
122
                           2385 => 'dwa tysi±ce trzysta osiemdziesi±t piêæ',
123
                           3766 => 'trzy tysi±ce siedemset sze¶ædziesi±t sze¶æ',
124
                           4196 => 'cztery tysi±ce sto dziewiêædziesi±t sze¶æ',
125
                           5846 => 'piêæ tysiêcy osiemset czterdzie¶ci sze¶æ',
126
                           6459 => 'sze¶æ tysiêcy czterysta piêædziesi±t dziewiêæ',
127
                           7232 => 'siedem tysiêcy dwie¶cie trzydzie¶ci dwa',
128
                           8569 => 'osiem tysiêcy piêæset sze¶ædziesi±t dziewiêæ',
129
                           9539 => 'dziewiêæ tysiêcy piêæset trzydzie¶ci dziewiêæ'
130
                          );
131
        foreach ($thousands as $number => $word) {
132
            $this->assertEquals($word, $this->handle->toWords($number, 'pl'));
133
        }
134
    }
135
}