[BUGFIX] Get current locale without changing environment
[Packages/TYPO3.CMS.git] / typo3 / sysext / form / Tests / Unit / Validator / IntegerValidatorTest.php
1 <?php
2 namespace TYPO3\CMS\Form\Tests\Unit\Validator;
3
4 /*
5 * This file is part of the TYPO3 CMS project.
6 *
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
10 *
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
13 *
14 * The TYPO3 project - inspiring people to share!
15 */
16
17 /**
18 * Test case
19 */
20 class IntegerValidatorTest extends AbstractValidatorTest
21 {
22 /**
23 * @var string
24 */
25 protected $subjectClassName = \TYPO3\CMS\Form\Domain\Validator\IntegerValidator::class;
26
27 /**
28 * @var string
29 */
30 protected $currentLocale;
31
32 /**
33 * Sets up this test case.
34 */
35 protected function setUp()
36 {
37 $this->currentLocale = setlocale(LC_NUMERIC, 0);
38 }
39
40 /**
41 * Tears down this test case.
42 */
43 protected function tearDown()
44 {
45 setlocale(LC_NUMERIC, $this->currentLocale);
46 parent::tearDown();
47 }
48
49 public function validateForValidInputHasEmptyErrorResultDataProvider()
50 {
51 return [
52 '12 for de locale' => [
53 12,
54 'de_DE.utf8'
55 ],
56 ];
57 }
58
59 /**
60 * @test
61 * @dataProvider validateForValidInputHasEmptyErrorResultDataProvider
62 */
63 public function validateForValidInputHasEmptyErrorResult($value, $locale)
64 {
65 setlocale(LC_NUMERIC, $locale);
66
67 $options = array('element' => uniqid('test'), 'errorMessage' => uniqid('error'));
68 $subject = $this->createSubject($options);
69
70 $this->assertEmpty(
71 $subject->validate($value)->getErrors()
72 );
73 }
74
75 public function validateForInvalidInputHasNotEmptyErrorResultDataProvider()
76 {
77 return [
78 '12.1 for en_US locale' => [
79 12.1,
80 'en_US.utf8'
81 ],
82 // @todo de_DE disabled currently, works locally but not on travis-ci.org
83 /**
84 '12,1 for de_DE locale' => [
85 '12,1',
86 'de_DE.utf8'
87 ],
88 */
89 ];
90 }
91
92 /**
93 * @test
94 * @dataProvider validateForInvalidInputHasNotEmptyErrorResultDataProvider
95 */
96 public function validateForInvalidInputHasNotEmptyErrorResult($value, $locale)
97 {
98 setlocale(LC_NUMERIC, $locale);
99
100 $options = array('element' => uniqid('test'), 'errorMessage' => uniqid('error'));
101 $subject = $this->createSubject($options);
102
103 $this->assertNotEmpty(
104 $subject->validate($value)->getErrors()
105 );
106 }
107 }