File tree 2 files changed +49
-15
lines changed
2 files changed +49
-15
lines changed Original file line number Diff line number Diff line change @@ -9,27 +9,24 @@ class Renavam extends Sanitization
9
9
public function validateRenavam ($ attribute , $ renavam ): bool
10
10
{
11
11
$ renavam = $ this ->sanitize ($ renavam );
12
- $ sum = 0 ;
13
12
$ renavamArray = str_split ($ renavam );
14
- $ digitCount = 0 ;
13
+ $ digit = $ this -> determinarDigito ( $ renavamArray ) ;
15
14
16
- for ($ i = 5 ; $ i >= 2 ; $ i --) {
17
- $ sum += $ renavamArray [$ digitCount ] * $ i ;
18
- $ digitCount ++;
19
- }
20
-
21
- $ valor = $ sum % 11 ;
15
+ return $ digit === (int ) $ renavamArray [4 ];
16
+ }
22
17
23
- $ digit = $ valor ;
18
+ public function determinarDigito ($ renavam ): int
19
+ {
20
+ $ resultante = 0 ;
21
+ $ contador = 0 ;
24
22
25
- if ($ valor == 11 || $ valor == 0 || $ valor >= 10 ) {
26
- $ digit = 0 ;
23
+ for ($ indice = 5 ; $ indice >= 2 ; $ indice --) {
24
+ $ resultante += $ renavam [$ contador ] * $ indice ;
25
+ $ contador ++;
27
26
}
28
27
29
- if ($ digit == $ renavamArray [4 ]) {
30
- return true ;
31
- }
28
+ $ verificador = $ resultante % 11 ;
32
29
33
- return false ;
30
+ return $ verificador >= 10 ? 0 : $ verificador ;
34
31
}
35
32
}
Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ namespace geekcom \ValidatorDocs \Tests \Rules ;
4
+
5
+ use geekcom \ValidatorDocs \Rules \Renavam ;
6
+ use geekcom \ValidatorDocs \Tests \ValidatorTestCase ;
7
+
8
+ final class RenavamTest extends ValidatorTestCase
9
+ {
10
+ /**
11
+ * @test
12
+ *
13
+ * @dataProvider renavamProvider
14
+ */
15
+ public function renavamValido ($ renavam , $ expected ): void
16
+ {
17
+ $ instance = new Renavam ();
18
+
19
+ $ atual = $ instance ->validateRenavam ('' , $ renavam );
20
+
21
+ $ this ->assertSame ($ expected , $ atual );
22
+ }
23
+
24
+ public function renavamProvider (): array
25
+ {
26
+ return [
27
+ 'Input correto ' => [
28
+ 'renavam ' => 639884962 ,
29
+ 'expected ' => true ,
30
+ ],
31
+ 'Input incorreto ' => [
32
+ 'renavam ' => 11111111111 ,
33
+ 'expected ' => false
34
+ ],
35
+ ];
36
+ }
37
+ }
You can’t perform that action at this time.
0 commit comments