===== Software testing : Input validering ===== ==== Validering af CPR nummer ==== * Format: DDMMÅÅ-LLLL * 1. og 2. position $\rightarrow $ fødselsdag. * 3. og 4. position $\rightarrow $ fødselsmåned. * 5. og 6. position $\rightarrow $ fødselsår (den århundrede) * 7. til 10. position $\rightarrow $ løbenummer. fx. Jørgen har fødselsdag d. 13. Juli 1975. De første seks cifre vil derfor være: 13, 07 og 75. * L1 indikerer århundrede personen er født. (se * L4 indikerer køn (lige tal $\rightarrow$ kvinde, ulige $\rightarrow$ mand ) {{ ::loebenr.png |}} ** Obs. Indtil 2007, anvendte vi "modulus 11" operator for at beregne gyldighed af CPR. ** * [[https://da.wikipedia.org/wiki/CPR-nummer#Personnummerets_opbygning|CPR nummerets opbygning]] * [[https://www.medcom.dk/opslag/koder-tabeller-ydere/tabeller/nationale-test-cpr-numre|Test CPR-numre]] * [[https://cdn9.cpr.dk/cpr/media/17534/personnummeret-i-cpr.pdf|CPR nummeres opbygning (PDF)]] === Gruppe Opgave === * Diskuter: Hvad kan vi teste i CPR nummeret hvis vi ikke skal bruge modulus 11 metoden ?? (se link) * Lav en simpel "WinForm" eller ControlP5 form, med et CPR input felt, samt 'submit' knap der aktiverer test af input. (genbrug evt. et eksisterende felt) * Implementer input validering ved indtastning af CPR. ++++ Hint | - Test først om input er tomt - Fjern evt. ekstra karaktere som fx. '-' eller ' ' (mellemrum), du kan anvende **replaceAll** til dette. (se API) - Test om input har den rigtige længde - Forsøg at konvertere tekststring til et array af heltal. (hvis dette fejler er der bogstaver/symboler imellem) - Du kan bruge **Integer.parseInt** funktionen til dette. (se API) - Anvend 'nøgle' på input tal for tal. (dvs. multiplicer **input** med **nøgle**, tal for tal) og gem summen af dine beregninger - Foretag en modulus 11 på dit resultat. (er resultatet 0, er CPR nummeret korrekt) ++++ ---- === Bonus === * Udvid opgave så du også tjekker: * Navn ( database krav, NOT NULL, og max længde 120) * Adresse( database krav, NOT NULL, og max længde 150) * HusNr ( database krav, NOT NULL og positiv heltal ) * Email adresse