File tree Expand file tree Collapse file tree 2 files changed +50
-16
lines changed Expand file tree Collapse file tree 2 files changed +50
-16
lines changed Original file line number Diff line number Diff line change @@ -8,28 +8,25 @@ class Renavam extends Sanitization
88{
99 public function validateRenavam ($ attribute , $ renavam ): bool
1010 {
11- $ renavam = $ this ->sanitize ($ renavam );
12- $ sum = 0 ;
11+ $ renavam = $ this ->sanitize ((string ) $ renavam );
1312 $ renavamArray = str_split ($ renavam );
14- $ digitCount = 0 ;
13+ $ digit = $ this -> determinarDigito ( $ renavamArray ) ;
1514
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+ }
2217
23- $ digit = $ valor ;
18+ public function determinarDigito ($ renavam ): int
19+ {
20+ $ resultante = 0 ;
21+ $ contador = 0 ;
2422
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 ++;
2726 }
2827
29- if ($ digit == $ renavamArray [4 ]) {
30- return true ;
31- }
28+ $ verificador = $ resultante % 11 ;
3229
33- return false ;
30+ return $ verificador >= 10 ? 0 : $ verificador ;
3431 }
3532}
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 , $ esperado ): void
16+ {
17+ $ instance = new Renavam ();
18+
19+ $ atual = $ instance ->validateRenavam ('' , $ renavam );
20+
21+ $ this ->assertSame ($ esperado , $ atual );
22+ }
23+
24+ public function renavamProvider (): array
25+ {
26+ return [
27+ 'Input correto ' => [
28+ 'renavam ' => 639884962 ,
29+ 'esperado ' => true ,
30+ ],
31+ 'Input incorreto ' => [
32+ 'renavam ' => 11111111111 ,
33+ 'esperado ' => false
34+ ],
35+ ];
36+ }
37+ }
You can’t perform that action at this time.
0 commit comments