Je-li předčíslí, musí být od kmenového čísla odděleno pomlčkou, nebo musí být kmenové číslo doplněno zleva nulami na délku 10.
Je-li délka kmenového čísla 10, je pomlčka za předčíslím nepovinná.
Kontrola čísla - příklad: 2719 - 3203410257 / 0100kmenové číslo - i | číslice | 2^i | číslice * 2^i |
---|---|---|---|
9 | 3 | 512 | 1536 |
8 | 2 | 256 | 512 |
7 | 0 | 128 | 0 |
6 | 3 | 64 | 192 |
5 | 4 | 32 | 128 |
4 | 1 | 16 | 16 |
3 | 0 | 8 | 0 |
2 | 2 | 4 | 8 |
1 | 5 | 2 | 10 |
0 | 7 | 1 | 7 |
Kriterium správnosti: Součet musí být dělitelný 11, tj. Součet mod 11 = 0
předčíslí - pokud existuje: stejná kontrola Součet = 55 ( 55 / 11 = 5 )
Nemá-li kontrolované číslo max. délku, tj. předčíslí 6 a kmenové číslo 10, musí se před kontrolou doplnit zleva nulami na maximum.
Číslo účtu musí projít oběma kontrolami samostatně - nezávisle.
package cz.vsb.cs.navrat;
public class CzechAccountNumberValidator {
/**
* Testuje zda číslo účtu odpovídá pravidlům pro tvorbu čísla účtu v ČR.
* @param cislouctu, které testujeme bez lomítka a kódu banky.
* @return true pokud je test korektní, jinak false.
* @throws IllegalArgumentException errror.account.null vstup je null
* @throws IllegalArgumentException errror.account.length neplatná délka čísla
* @throws IllegalArgumentException errror.account.number neplatné číslo účtu
* @throws IllegalArgumentException errror.account.character neplatný znak v čísle účtu
*/
public static boolean checkBankovniUcet(String ucet) throws IllegalArgumentException {}
}
Jméno metody | Popis testu |
---|---|
testCheckBankovniUcetNull | Pokud je vstupní parametr null, musí vyvolat vyjímku. |
testCheckBankovniUcetEmpty | Pokud je vstupní parametr prázdný řetěz, musí vyvolat vyjímku. |
testCheckBankovniUcetMinLength | Délka kmenového čísla je větší nebo rovno 4. |
testCheckBankovniUcetMaxLength | Délka kmenového čísla je menší nebo rovno 10. |
testCheckBankovniUcetMaxLengthPrefix | Délka předčíslí je maximálně 6. |
testCheckBankovniUcetEmptyPrefix | Pokud není předčíslí, pak není ani pomlčka |
testCheckBankovniUcetChybne | Test na detekci chybného čísla účtu |
testCheckBankovniUcetSpravne1 | Souhrný test na platné číslo účtu. Testuje zda projde číslo s pomlčkou + je sjednocením nasledujících dvou metod. (Neptejte se proč, měl být smazaný :)) |
testCheckBankovniUcetSpravne2 | Testuje zda projde číslo, které neobsahuje pomlčku, ale přesto je s předčíslím. |
testCheckBankovniUcetSpravne3 | Číslo účtu je platné a bez předčíslí. |
testCheckBankovniUcetSpravne4Mezery | V řetězci se mohou objevit mezi číslicemi mezery. Přesto může to být platné číslo účtu. |