001// SECTION-START[License Header] 002// <editor-fold defaultstate="collapsed" desc=" Generated License "> 003/* 004 * jDTAUS ⁑ ISO-13616 005 * Copyright (C) Christian Schulte, 2013-222 006 * 007 * Permission to use, copy, modify, and/or distribute this software for any 008 * purpose with or without fee is hereby granted, provided that the above 009 * copyright notice and this permission notice appear in all copies. 010 * 011 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 012 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 013 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 014 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 015 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 016 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 017 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 018 * 019 * $JDTAUS: IbanTest.java 8873 2014-01-15 23:40:57Z schulte $ 020 * 021 */ 022// </editor-fold> 023// SECTION-END 024package org.jdtaus.iso13616.test; 025 026import java.io.ByteArrayOutputStream; 027import java.io.IOException; 028import java.io.ObjectInputStream; 029import java.io.ObjectOutputStream; 030import java.math.BigInteger; 031import java.text.ParsePosition; 032import java.util.Arrays; 033import java.util.Collection; 034import java.util.HashSet; 035import java.util.IllegalFormatFlagsException; 036import java.util.Iterator; 037import java.util.LinkedList; 038import java.util.List; 039import java.util.Locale; 040import java.util.Map; 041import java.util.Properties; 042import java.util.Set; 043import org.jdtaus.iso13616.IBAN; 044import org.jdtaus.iso13616.IbanCheckDigitsException; 045import org.jdtaus.iso13616.IbanFormat; 046import org.jdtaus.iso13616.IbanSyntaxException; 047import org.junit.Test; 048import static org.junit.Assert.assertEquals; 049import static org.junit.Assert.assertFalse; 050import static org.junit.Assert.assertNotNull; 051import static org.junit.Assert.assertNull; 052import static org.junit.Assert.assertTrue; 053import static org.junit.Assert.fail; 054 055// SECTION-START[Documentation] 056// <editor-fold defaultstate="collapsed" desc=" Generated Documentation "> 057/** 058 * Testcases for classes {@code org.jdtaus.iban.IBAN}, {@code org.jdtaus.iban.IbanSyntaxException} and {@code org.jdtaus.iban.IbanCheckDigitsException}. 059 * 060 * <dl> 061 * <dt><b>Identifier:</b></dt><dd>jDTAUS ⁑ ISO-13616 ⁑ Tests ⁑ IBAN Test</dd> 062 * <dt><b>Name:</b></dt><dd>jDTAUS ⁑ ISO-13616 ⁑ Tests ⁑ IBAN Test</dd> 063 * <dt><b>Abstract:</b></dt><dd>No</dd> 064 * <dt><b>Final:</b></dt><dd>Yes</dd> 065 * <dt><b>Stateless:</b></dt><dd>Yes</dd> 066 * </dl> 067 * 068 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a> 069 * @version 1.1 070 */ 071// </editor-fold> 072// SECTION-END 073// SECTION-START[Annotations] 074// <editor-fold defaultstate="collapsed" desc=" Generated Annotations "> 075@javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" ) 076// </editor-fold> 077// SECTION-END 078public class IbanTest 079{ 080 // SECTION-START[IbanTest] 081 082 /** Prefix for property names holding valid values formatted using electronic format. */ 083 private static final String VALID_ELECTRONIC_FORMAT_PREFIX = "valid.electronicformat"; 084 085 /** Prefix for property names holding valid values formatted using letter format. */ 086 private static final String VALID_LETTER_FORMAT_PREFIX = "valid.letterformat"; 087 088 /** Prefix for property names holding invalid values. */ 089 private static final String INVALID_PREFIX = "invalid."; 090 091 /** Set of IBAN country codes. */ 092 private static final Set<String> IBAN_COUNTRY_CODES = new HashSet<String>( 128 ); 093 094 /** Set of EPC SEPA country codes. */ 095 private static final Set<String> SEPA_COUNTRY_CODES = new HashSet<String>( 128 ); 096 097 static 098 { 099 SEPA_COUNTRY_CODES.add( "AX" ); // Åland Islands - FI 100 SEPA_COUNTRY_CODES.add( "AT" ); // Austria 101 SEPA_COUNTRY_CODES.add( "PT" ); // Azores & Portugal 102 SEPA_COUNTRY_CODES.add( "BE" ); // Belgium 103 SEPA_COUNTRY_CODES.add( "BG" ); // Bulgaria 104// SEPA_COUNTRY_CODES.add( "IC" ); // Canary Islands - ES - Exceptional reservation 105 SEPA_COUNTRY_CODES.add( "HR" ); // Croatia 106 SEPA_COUNTRY_CODES.add( "CY" ); // Cyprus 107 SEPA_COUNTRY_CODES.add( "CZ" ); // Czech Republic 108 SEPA_COUNTRY_CODES.add( "DK" ); // Denmark 109 SEPA_COUNTRY_CODES.add( "EE" ); // Estonia 110 SEPA_COUNTRY_CODES.add( "FI" ); // Finland 111 SEPA_COUNTRY_CODES.add( "FR" ); // France 112 SEPA_COUNTRY_CODES.add( "GF" ); // French Guiana -FR 113 SEPA_COUNTRY_CODES.add( "DE" ); // Germany 114 SEPA_COUNTRY_CODES.add( "GI" ); // Gibraltar 115 SEPA_COUNTRY_CODES.add( "GR" ); // Greece 116 SEPA_COUNTRY_CODES.add( "GP" ); // Guadeloupe - FR 117 SEPA_COUNTRY_CODES.add( "HU" ); // Hungary 118 SEPA_COUNTRY_CODES.add( "IS" ); // Iceland 119 SEPA_COUNTRY_CODES.add( "IE" ); // Ireland 120 SEPA_COUNTRY_CODES.add( "IT" ); // Italy 121 SEPA_COUNTRY_CODES.add( "LV" ); // Latvia 122 SEPA_COUNTRY_CODES.add( "LI" ); // Liechtenstein 123 SEPA_COUNTRY_CODES.add( "LT" ); // Lithuania 124 SEPA_COUNTRY_CODES.add( "LU" ); // Luxembourg 125 SEPA_COUNTRY_CODES.add( "MT" ); // Malta 126 SEPA_COUNTRY_CODES.add( "MQ" ); // Martinique - FR 127 SEPA_COUNTRY_CODES.add( "YT" ); // Mayotte - FR 128 SEPA_COUNTRY_CODES.add( "MC" ); // Monaco 129 SEPA_COUNTRY_CODES.add( "NL" ); // Netherlands 130 SEPA_COUNTRY_CODES.add( "NO" ); // Norway 131 SEPA_COUNTRY_CODES.add( "PL" ); // Poland 132 SEPA_COUNTRY_CODES.add( "PT" ); // Madeira & Portugal 133 SEPA_COUNTRY_CODES.add( "RE" ); // Réunion - FR 134 SEPA_COUNTRY_CODES.add( "RO" ); // Romania 135 SEPA_COUNTRY_CODES.add( "BL" ); // Saint Barthélemy - FR 136 SEPA_COUNTRY_CODES.add( "MF" ); // Saint Martin (French part) - FR 137 SEPA_COUNTRY_CODES.add( "PM" ); // Saint Pierre and Miquelon- FR 138 SEPA_COUNTRY_CODES.add( "SK" ); // Slovakia 139 SEPA_COUNTRY_CODES.add( "SI" ); // Slovenia 140 SEPA_COUNTRY_CODES.add( "ES" ); // Canary Islands & Spain 141 SEPA_COUNTRY_CODES.add( "SE" ); // Sweden 142 SEPA_COUNTRY_CODES.add( "CH" ); // Switzerland 143 SEPA_COUNTRY_CODES.add( "GB" ); // United Kingdom 144 145 IBAN_COUNTRY_CODES.add( "AL" ); 146 IBAN_COUNTRY_CODES.add( "AD" ); 147 IBAN_COUNTRY_CODES.add( "AT" ); 148 IBAN_COUNTRY_CODES.add( "AZ" ); 149 IBAN_COUNTRY_CODES.add( "BH" ); 150 IBAN_COUNTRY_CODES.add( "BE" ); 151 IBAN_COUNTRY_CODES.add( "BA" ); 152 IBAN_COUNTRY_CODES.add( "BR" ); 153 IBAN_COUNTRY_CODES.add( "BG" ); 154 IBAN_COUNTRY_CODES.add( "CR" ); 155 IBAN_COUNTRY_CODES.add( "HR" ); 156 IBAN_COUNTRY_CODES.add( "CY" ); 157 IBAN_COUNTRY_CODES.add( "CZ" ); 158 IBAN_COUNTRY_CODES.add( "DK" ); 159 IBAN_COUNTRY_CODES.add( "FO" ); 160 IBAN_COUNTRY_CODES.add( "GL" ); 161 IBAN_COUNTRY_CODES.add( "DO" ); 162 IBAN_COUNTRY_CODES.add( "EE" ); 163 IBAN_COUNTRY_CODES.add( "FI" ); 164 IBAN_COUNTRY_CODES.add( "AX" ); 165 IBAN_COUNTRY_CODES.add( "FR" ); 166 IBAN_COUNTRY_CODES.add( "GF" ); 167 IBAN_COUNTRY_CODES.add( "GP" ); 168 IBAN_COUNTRY_CODES.add( "MQ" ); 169 IBAN_COUNTRY_CODES.add( "RE" ); 170 IBAN_COUNTRY_CODES.add( "PF" ); 171 IBAN_COUNTRY_CODES.add( "TF" ); 172 IBAN_COUNTRY_CODES.add( "YT" ); 173 IBAN_COUNTRY_CODES.add( "NC" ); 174 IBAN_COUNTRY_CODES.add( "BL" ); 175 IBAN_COUNTRY_CODES.add( "MF" ); 176 IBAN_COUNTRY_CODES.add( "PM" ); 177 IBAN_COUNTRY_CODES.add( "WF" ); 178 IBAN_COUNTRY_CODES.add( "GE" ); 179 IBAN_COUNTRY_CODES.add( "DE" ); 180 IBAN_COUNTRY_CODES.add( "GI" ); 181 IBAN_COUNTRY_CODES.add( "GR" ); 182 IBAN_COUNTRY_CODES.add( "GT" ); 183 IBAN_COUNTRY_CODES.add( "HU" ); 184 IBAN_COUNTRY_CODES.add( "IS" ); 185 IBAN_COUNTRY_CODES.add( "IE" ); 186 IBAN_COUNTRY_CODES.add( "IL" ); 187 IBAN_COUNTRY_CODES.add( "IT" ); 188 IBAN_COUNTRY_CODES.add( "JO" ); 189 IBAN_COUNTRY_CODES.add( "KZ" ); 190 IBAN_COUNTRY_CODES.add( "KW" ); 191 IBAN_COUNTRY_CODES.add( "LV" ); 192 IBAN_COUNTRY_CODES.add( "LB" ); 193 IBAN_COUNTRY_CODES.add( "LI" ); 194 IBAN_COUNTRY_CODES.add( "LT" ); 195 IBAN_COUNTRY_CODES.add( "LU" ); 196 IBAN_COUNTRY_CODES.add( "MK" ); 197 IBAN_COUNTRY_CODES.add( "MT" ); 198 IBAN_COUNTRY_CODES.add( "MR" ); 199 IBAN_COUNTRY_CODES.add( "MU" ); 200 IBAN_COUNTRY_CODES.add( "MD" ); 201 IBAN_COUNTRY_CODES.add( "MC" ); 202 IBAN_COUNTRY_CODES.add( "ME" ); 203 IBAN_COUNTRY_CODES.add( "NL" ); 204 IBAN_COUNTRY_CODES.add( "NO" ); 205 IBAN_COUNTRY_CODES.add( "PK" ); 206 IBAN_COUNTRY_CODES.add( "PS" ); 207 IBAN_COUNTRY_CODES.add( "PL" ); 208 IBAN_COUNTRY_CODES.add( "PT" ); 209 IBAN_COUNTRY_CODES.add( "RO" ); 210 IBAN_COUNTRY_CODES.add( "QA" ); 211 IBAN_COUNTRY_CODES.add( "SM" ); 212 IBAN_COUNTRY_CODES.add( "SA" ); 213 IBAN_COUNTRY_CODES.add( "RS" ); 214 IBAN_COUNTRY_CODES.add( "SK" ); 215 IBAN_COUNTRY_CODES.add( "SI" ); 216 IBAN_COUNTRY_CODES.add( "ES" ); 217 IBAN_COUNTRY_CODES.add( "SE" ); 218 IBAN_COUNTRY_CODES.add( "CH" ); 219 IBAN_COUNTRY_CODES.add( "TN" ); 220 IBAN_COUNTRY_CODES.add( "TR" ); 221 IBAN_COUNTRY_CODES.add( "AE" ); 222 IBAN_COUNTRY_CODES.add( "GB" ); 223 IBAN_COUNTRY_CODES.add( "JE" ); 224 IBAN_COUNTRY_CODES.add( "GG" ); 225 IBAN_COUNTRY_CODES.add( "IM" ); 226 IBAN_COUNTRY_CODES.add( "VG" ); 227 } 228 229 /** 230 * Gets an array of valid {@code IBAN} values formatted using electronic format. 231 * 232 * @return An array of valid {@code IBAN} values formatted using electronic format. 233 * 234 * @throws IOException if reading property resources fails. 235 */ 236 private String[] getValidValuesElectronicFormat() throws IOException 237 { 238 final Map<Object, Object> properties = this.getProperties(); 239 final Collection<String> col = new LinkedList<String>(); 240 241 for ( final Iterator<Object> it = properties.keySet().iterator(); it.hasNext(); ) 242 { 243 final String key = it.next().toString(); 244 if ( key.startsWith( VALID_ELECTRONIC_FORMAT_PREFIX ) ) 245 { 246 col.add( properties.get( key ).toString() ); 247 } 248 } 249 250 return col.toArray( new String[ col.size() ] ); 251 } 252 253 /** 254 * Gets an array of valid {@code IBAN} values formatted using print format. 255 * 256 * @return An array of valid {@code IBAN} values formatted using print format. 257 * 258 * @throws IOException if reading property resources fails. 259 */ 260 private String[] getValidValuesPrintFormat() throws IOException 261 { 262 final Map<Object, Object> properties = this.getProperties(); 263 final Collection<String> col = new LinkedList<String>(); 264 265 for ( final Iterator<Object> it = properties.keySet().iterator(); it.hasNext(); ) 266 { 267 final String key = it.next().toString(); 268 if ( key.startsWith( VALID_LETTER_FORMAT_PREFIX ) ) 269 { 270 col.add( properties.get( key ).toString() ); 271 } 272 } 273 274 return col.toArray( new String[ col.size() ] ); 275 } 276 277 /** 278 * Gets an array of invalid {@code IBAN} values. 279 * 280 * @return An array of invalid {@code IBAN} values. 281 * 282 * @throws IOException if reading property resources fails. 283 */ 284 private String[] getInvalidValues() throws IOException 285 { 286 final Map<Object, Object> properties = this.getProperties(); 287 final Collection<String> col = new LinkedList<String>(); 288 289 for ( final Iterator<Object> it = properties.keySet().iterator(); it.hasNext(); ) 290 { 291 final String key = it.next().toString(); 292 if ( key.startsWith( INVALID_PREFIX ) ) 293 { 294 col.add( properties.get( key ).toString() ); 295 } 296 } 297 298 return col.toArray( new String[ col.size() ] ); 299 } 300 301 private Map<Object, Object> getProperties() throws IOException 302 { 303 final Properties ret = new Properties(); 304 ret.load( this.getClass().getResourceAsStream( "IbanTest.properties" ) ); 305 return ret; 306 } 307 308 @Test public void CountryCodes() throws Exception 309 { 310 final String[] countryCodes = IBAN.getCountryCodes(); 311 assertNotNull( countryCodes ); 312 assertTrue( IBAN_COUNTRY_CODES.containsAll( Arrays.asList( countryCodes ) ) ); 313 assertTrue( Arrays.asList( countryCodes ).containsAll( IBAN_COUNTRY_CODES ) ); 314 315 final List<String> validCountries = Arrays.asList( Locale.getISOCountries() ); 316 317 for ( int i = 0, l0 = countryCodes.length; i < l0; i++ ) 318 { 319 assertTrue( "Country '" + countryCodes[i] + "' is not a valid ISO country code.", 320 validCountries.contains( countryCodes[i] ) ); 321 322 } 323 } 324 325 @Test public void SepaCountry() throws Exception 326 { 327 try 328 { 329 IBAN.isSepaCountry( null ); 330 fail( "Expected 'NullPointerException' not thrown." ); 331 } 332 catch ( final NullPointerException e ) 333 { 334 System.out.println( e.toString() ); 335 assertNotNull( e.getMessage() ); 336 } 337 338 for ( final String countryCode : SEPA_COUNTRY_CODES ) 339 { 340 assertTrue( "Expected SEPA country '" + countryCode + "' not found.", IBAN.isSepaCountry( countryCode ) ); 341 } 342 343 final Set<String> countriesWithoutSepa = new HashSet<String>( IBAN_COUNTRY_CODES ); 344 countriesWithoutSepa.removeAll( SEPA_COUNTRY_CODES ); 345 346 for ( final String countryCode : countriesWithoutSepa ) 347 { 348 assertFalse( "Non-SEPA country '" + countryCode + "' flagged as SEPA.", IBAN.isSepaCountry( countryCode ) ); 349 } 350 351 final Set<String> sepaCountries = new HashSet<String>( IBAN_COUNTRY_CODES ); 352 sepaCountries.retainAll( SEPA_COUNTRY_CODES ); 353 354 for ( final String countryCode : sepaCountries ) 355 { 356 assertTrue( "Expected SEPA country '" + countryCode + "' not found.", IBAN.isSepaCountry( countryCode ) ); 357 } 358 359 assertFalse( IBAN.isSepaCountry( "NOT_A_COUNTRY_CODE" ) ); 360 } 361 362 @Test public void CharSequence() throws Exception 363 { 364 final IBAN iban = IBAN.parse( "AL47212110090000000235698741" ); 365 366 System.out.println( iban.toString() ); 367 368 assertTrue( iban.length() == "AL47212110090000000235698741".length() ); 369 assertTrue( iban.charAt( 0 ) == 'A' ); 370 assertTrue( iban.charAt( "AL47212110090000000235698741".length() - 1 ) == '1' ); 371 372 try 373 { 374 iban.charAt( "AL47212110090000000235698741".length() ); 375 fail( "Expected 'IndexOutOfBoundsException' not thrown." ); 376 } 377 catch ( final IndexOutOfBoundsException e ) 378 { 379 System.out.println( e.toString() ); 380 assertNotNull( e.getMessage() ); 381 } 382 383 try 384 { 385 iban.subSequence( -1, 0 ); 386 fail( "Expected 'IndexOutOfBoundsException' not thrown." ); 387 } 388 catch ( final IndexOutOfBoundsException e ) 389 { 390 System.out.println( e.toString() ); 391 assertNotNull( e.getMessage() ); 392 } 393 try 394 { 395 iban.subSequence( 0, -1 ); 396 fail( "Expected 'IndexOutOfBoundsException' not thrown." ); 397 } 398 catch ( final IndexOutOfBoundsException e ) 399 { 400 System.out.println( e.toString() ); 401 assertNotNull( e.getMessage() ); 402 } 403 404 assertEquals( "AL47212110090000000235698741", iban.subSequence( 0, "AL47212110090000000235698741".length() ) ); 405 assertEquals( "AL", iban.subSequence( 0, 2 ) ); 406 } 407 408 @Test public void ParseElectronicFormat() throws Exception 409 { 410 final String[] valid = this.getValidValuesElectronicFormat(); 411 412 for ( int i = valid.length - 1; i >= 0; i-- ) 413 { 414 final IBAN iban = IBAN.parse( valid[i] ); 415 assertEquals( valid[i], iban.toString( IbanFormat.ELECTRONIC ) ); 416 System.out.println( iban.toString() ); 417 } 418 } 419 420 @Test public void ParseLetterFormat() throws Exception 421 { 422 final String[] valid = this.getValidValuesPrintFormat(); 423 424 for ( int i = valid.length - 1; i >= 0; i-- ) 425 { 426 final IBAN iban = IBAN.parse( valid[i] ); 427 assertEquals( valid[i], iban.toString( IbanFormat.PRINT ) ); 428 System.out.println( iban.toString() ); 429 } 430 } 431 432 @Test public void ParseBban() throws Exception 433 { 434 final IBAN iban = IBAN.parse( "AL47212110090000000235698741" ); 435 436 try 437 { 438 IBAN.parse( "TEST", (String) null ); 439 fail( "Expected 'NullPointerException' not thrown." ); 440 } 441 catch ( final NullPointerException e ) 442 { 443 System.out.println( e.toString() ); 444 assertNotNull( e.getMessage() ); 445 } 446 447 try 448 { 449 IBAN.parse( null, "TEST" ); 450 fail( "Expected 'NullPointerException' not thrown." ); 451 } 452 catch ( final NullPointerException e ) 453 { 454 System.out.println( e.toString() ); 455 assertNotNull( e.getMessage() ); 456 } 457 458 try 459 { 460 IBAN.parse( "TEST", "212110090000000235698741" ); 461 fail( "Expected 'IllegalArgumentException' not thrown." ); 462 } 463 catch ( final IllegalArgumentException e ) 464 { 465 System.out.println( e.toString() ); 466 assertNotNull( e.getMessage() ); 467 } 468 469 assertEquals( iban, IBAN.parse( "AL", "212110090000000235698741" ) ); 470 471 // 3!n4!n1!n16!c 472 try 473 { 474 IBAN.parse( "AL", "21211009235698741" ); 475 fail( "Expected 'IbanSyntaxException' not thrown." ); 476 } 477 catch ( final IbanSyntaxException e ) 478 { 479 System.out.println( e.toString() ); 480 assertNotNull( e.getMessage() ); 481 assertTrue( e.getErrorIndex() == "21211009235698741".length() ); 482 } 483 try 484 { 485 IBAN.parse( "AL", "2X2110090000000235698741" ); 486 fail( "Expected 'IbanSyntaxException' not thrown." ); 487 } 488 catch ( final IbanSyntaxException e ) 489 { 490 System.out.println( e.toString() ); 491 assertNotNull( e.getMessage() ); 492 assertTrue( e.getErrorIndex() == 1 ); 493 } 494 } 495 496 @Test public void ParseIbanAtPosition() throws Exception 497 { 498 final String[] validElectronicFormat = this.getValidValuesElectronicFormat(); 499 final String[] validPrintFormat = this.getValidValuesPrintFormat(); 500 final String[] invalid = this.getInvalidValues(); 501 502 try 503 { 504 IBAN.parse( "TEST", (ParsePosition) null ); 505 fail( "Expected 'NullPointerException' not thrown." ); 506 } 507 catch ( final NullPointerException e ) 508 { 509 System.out.println( e.toString() ); 510 assertNotNull( e.getMessage() ); 511 } 512 513 try 514 { 515 IBAN.parse( null, new ParsePosition( 0 ) ); 516 fail( "Expected 'NullPointerException' not thrown." ); 517 } 518 catch ( final NullPointerException e ) 519 { 520 System.out.println( e.toString() ); 521 assertNotNull( e.getMessage() ); 522 } 523 524 ParsePosition pos = new ParsePosition( 0 ); 525 IBAN.parse( "", pos ); 526 assertTrue( pos.getErrorIndex() == 0 ); 527 528 pos = new ParsePosition( 0 ); 529 IBAN.parse( "0", pos ); 530 assertTrue( pos.getErrorIndex() == 0 ); 531 532 pos = new ParsePosition( 0 ); 533 IBAN.parse( "00", pos ); 534 assertTrue( pos.getErrorIndex() == 0 ); 535 536 pos = new ParsePosition( 0 ); 537 IBAN.parse( "X", pos ); 538 assertTrue( pos.getErrorIndex() == 1 ); 539 540 pos = new ParsePosition( 0 ); 541 IBAN.parse( "X0", pos ); 542 assertTrue( pos.getErrorIndex() == 1 ); 543 544 pos = new ParsePosition( 0 ); 545 IBAN.parse( "0X", pos ); 546 assertTrue( pos.getErrorIndex() == 0 ); 547 548 pos = new ParsePosition( 0 ); 549 IBAN.parse( "XX", pos ); 550 assertTrue( pos.getErrorIndex() == 1 ); 551 552 // AL2!n3!n4!n1!n16!c 553 pos = new ParsePosition( 0 ); 554 IBAN.parse( "AL4721211009235698741", pos ); 555 assertTrue( pos.getErrorIndex() == "AL4721211009235698741".length() ); 556 557 pos = new ParsePosition( 0 ); 558 IBAN.parse( "AL472X2110090000000235698741", pos ); 559 assertTrue( pos.getErrorIndex() == 5 ); 560 561 try 562 { 563 pos = new ParsePosition( 0 ); 564 IBAN.parse( "AL00212110090000000235698741", pos ); 565 fail( "Expected 'IbanCheckDigitsException' not thrown." ); 566 } 567 catch ( final IbanCheckDigitsException e ) 568 { 569 System.out.println( e.toString() ); 570 assertNotNull( e.getMessage() ); 571 assertEquals( "AL00212110090000000235698741", e.getIban() ); 572 assertEquals( BigInteger.ZERO, e.getCheckDigits() ); 573 } 574 575 try 576 { 577 pos = new ParsePosition( 0 ); 578 IBAN.parse( "AL10 2121 1009 0000 0002 3569 8741", pos ); 579 fail( "Expected 'IbanCheckDigitsException' not thrown." ); 580 } 581 catch ( final IbanCheckDigitsException e ) 582 { 583 System.out.println( e.toString() ); 584 assertNotNull( e.getMessage() ); 585 assertEquals( "AL10212110090000000235698741", e.getIban() ); 586 assertEquals( BigInteger.TEN, e.getCheckDigits() ); 587 } 588 589 for ( int i = validElectronicFormat.length - 1; i >= 0; i-- ) 590 { 591 pos = new ParsePosition( 0 ); 592 IBAN iban = IBAN.parse( validElectronicFormat[i], pos ); 593 assertNotNull( iban ); 594 assertTrue( pos.getErrorIndex() == -1 ); 595 assertTrue( pos.getIndex() == validElectronicFormat[i].length() ); 596 assertEquals( validElectronicFormat[i], iban.toString( IbanFormat.ELECTRONIC ) ); 597 } 598 599 for ( int i = validPrintFormat.length - 1; i >= 0; i-- ) 600 { 601 pos = new ParsePosition( 0 ); 602 IBAN iban = IBAN.parse( validPrintFormat[i], pos ); 603 assertNotNull( iban ); 604 assertTrue( pos.getErrorIndex() == -1 ); 605 assertTrue( pos.getIndex() == validPrintFormat[i].length() ); 606 assertEquals( validPrintFormat[i], iban.toString( IbanFormat.PRINT ) ); 607 } 608 609 for ( int i = invalid.length - 1; i >= 0; i-- ) 610 { 611 pos = new ParsePosition( 0 ); 612 613 if ( invalid[i].equals( "AL47 2121 1009 0000 0002 3569 8741 " ) 614 || invalid[i].equals( "AL47212110090000000235698741 " ) ) 615 { 616 final IBAN iban = IBAN.parse( invalid[i], pos ); 617 assertNotNull( iban ); 618 assertTrue( pos.getErrorIndex() == -1 ); 619 assertTrue( pos.getIndex() == invalid[i].length() - 1 ); 620 } 621 else 622 { 623 assertNull( "'" + invalid[i] + "'", IBAN.parse( invalid[i], pos ) ); 624 assertTrue( "'" + invalid[i] + "'", pos.getErrorIndex() >= 0 ); 625 } 626 } 627 } 628 629 @Test public void ParseIban() throws Exception 630 { 631 final String[] validElectronicFormat = this.getValidValuesElectronicFormat(); 632 final String[] validPrintFormat = this.getValidValuesPrintFormat(); 633 final String[] invalid = this.getInvalidValues(); 634 635 try 636 { 637 IBAN.parse( null ); 638 fail( "Expected 'NullPointerException' not thrown." ); 639 } 640 catch ( final NullPointerException e ) 641 { 642 System.out.println( e.toString() ); 643 assertNotNull( e.getMessage() ); 644 } 645 646 for ( int i = validElectronicFormat.length - 1; i >= 0; i-- ) 647 { 648 final IBAN iban = IBAN.parse( validElectronicFormat[i] ); 649 assertNotNull( iban ); 650 assertEquals( validElectronicFormat[i], iban.toString( IbanFormat.ELECTRONIC ) ); 651 } 652 653 for ( int i = validPrintFormat.length - 1; i >= 0; i-- ) 654 { 655 final IBAN iban = IBAN.parse( validPrintFormat[i] ); 656 assertNotNull( iban ); 657 assertEquals( validPrintFormat[i], iban.toString( IbanFormat.PRINT ) ); 658 } 659 660 for ( int i = invalid.length - 1; i >= 0; i-- ) 661 { 662 try 663 { 664 IBAN.parse( invalid[i] ); 665 fail( "Expected 'IbanSyntaxException' not thrown." ); 666 } 667 catch ( final IbanSyntaxException e ) 668 { 669 System.out.println( e.toString() ); 670 assertNotNull( e.getMessage() ); 671 } 672 } 673 } 674 675 @Test public void ValueOf() throws Exception 676 { 677 final String[] validElectronicFormatValues = this.getValidValuesElectronicFormat(); 678 final String[] validPrintFormatValues = this.getValidValuesPrintFormat(); 679 final String[] invalidValues = this.getInvalidValues(); 680 681 try 682 { 683 IBAN.valueOf( null ); 684 fail( "Expected 'NullPointerException' not thrown." ); 685 } 686 catch ( final NullPointerException e ) 687 { 688 System.out.println( e.toString() ); 689 assertNotNull( e.getMessage() ); 690 } 691 692 for ( int i = validElectronicFormatValues.length - 1; i >= 0; i-- ) 693 { 694 final IBAN iban = IBAN.valueOf( validElectronicFormatValues[i] ); 695 assertEquals( validElectronicFormatValues[i], iban.toString( IbanFormat.ELECTRONIC ) ); 696 System.out.println( iban.toString() ); 697 } 698 for ( int i = validPrintFormatValues.length - 1; i >= 0; i-- ) 699 { 700 final IBAN iban = IBAN.valueOf( validPrintFormatValues[i] ); 701 assertEquals( validPrintFormatValues[i], iban.toString( IbanFormat.PRINT ) ); 702 System.out.println( iban.toString() ); 703 } 704 for ( int i = invalidValues.length - 1; i >= 0; i-- ) 705 { 706 try 707 { 708 IBAN.valueOf( invalidValues[i] ); 709 fail( "Expected 'IllegalArgumentException' not thrown." ); 710 } 711 catch ( final IllegalArgumentException e ) 712 { 713 System.out.println( e.toString() ); 714 assertNotNull( e.getMessage() ); 715 } 716 } 717 718 assertEquals( IBAN.parse( "AL47212110090000000235698741" ), IBAN.valueOf( "AL47212110090000000235698741" ) ); 719 720 try 721 { 722 IBAN.valueOf( "AL10212110090000000235698741" ); 723 fail( "Expected 'IllegalArgumentException' not thrown." ); 724 } 725 catch ( final IllegalArgumentException e ) 726 { 727 System.out.println( e.toString() ); 728 assertNotNull( e.getMessage() ); 729 } 730 } 731 732 @Test public void ValueOfBban() throws Exception 733 { 734 final IBAN iban = IBAN.valueOf( "AL47212110090000000235698741" ); 735 736 try 737 { 738 IBAN.valueOf( "TEST", (String) null ); 739 fail( "Expected 'NullPointerException' not thrown." ); 740 } 741 catch ( final NullPointerException e ) 742 { 743 System.out.println( e.toString() ); 744 assertNotNull( e.getMessage() ); 745 } 746 747 try 748 { 749 IBAN.valueOf( null, "TEST" ); 750 fail( "Expected 'NullPointerException' not thrown." ); 751 } 752 catch ( final NullPointerException e ) 753 { 754 System.out.println( e.toString() ); 755 assertNotNull( e.getMessage() ); 756 } 757 758 try 759 { 760 IBAN.valueOf( "TEST", "212110090000000235698741" ); 761 fail( "Expected 'IllegalArgumentException' not thrown." ); 762 } 763 catch ( final IllegalArgumentException e ) 764 { 765 System.out.println( e.toString() ); 766 assertNotNull( e.getMessage() ); 767 } 768 769 assertEquals( iban, IBAN.valueOf( "AL", "212110090000000235698741" ) ); 770 771 // 3!n4!n1!n16!c 772 try 773 { 774 IBAN.valueOf( "AL", "21211009235698741" ); 775 fail( "Expected 'IllegalArgumentException' not thrown." ); 776 } 777 catch ( final IllegalArgumentException e ) 778 { 779 System.out.println( e.toString() ); 780 assertNotNull( e.getMessage() ); 781 } 782 try 783 { 784 IBAN.parse( "AL", "2X2110090000000235698741" ); 785 fail( "Expected 'IllegalArgumentException' not thrown." ); 786 } 787 catch ( final IbanSyntaxException e ) 788 { 789 System.out.println( e.toString() ); 790 assertNotNull( e.getMessage() ); 791 } 792 } 793 794 @Test public void PeekIban() throws Exception 795 { 796 final String[] validElectronicFormatValues = this.getValidValuesElectronicFormat(); 797 final String[] validPrintFormatValues = this.getValidValuesPrintFormat(); 798 final String[] invalidValues = this.getInvalidValues(); 799 800 try 801 { 802 IBAN.peekIban( null ); 803 fail( "Expected 'NullPointerException' not thrown." ); 804 } 805 catch ( final NullPointerException e ) 806 { 807 System.out.println( e.toString() ); 808 assertNotNull( e.getMessage() ); 809 } 810 811 for ( int i = validElectronicFormatValues.length - 1; i >= 0; i-- ) 812 { 813 assertTrue( validElectronicFormatValues[i], IBAN.peekIban( validElectronicFormatValues[i] ) ); 814 } 815 for ( int i = validPrintFormatValues.length - 1; i >= 0; i-- ) 816 { 817 assertTrue( validPrintFormatValues[i], IBAN.peekIban( validPrintFormatValues[i] ) ); 818 } 819 for ( int i = invalidValues.length - 1; i >= 0; i-- ) 820 { 821 assertFalse( invalidValues[i], IBAN.peekIban( invalidValues[i] ) ); 822 } 823 824 assertTrue( IBAN.peekIban( "D" ) ); 825 assertTrue( IBAN.peekIban( "DE" ) ); 826 assertTrue( IBAN.peekIban( "DE9" ) ); 827 assertTrue( IBAN.peekIban( "DE99" ) ); 828 assertTrue( IBAN.peekIban( "DE99 " ) ); 829 830 assertTrue( IBAN.peekIban( "D" ) ); 831 assertFalse( IBAN.peekIban( "D E" ) ); 832 assertFalse( IBAN.peekIban( "DE 9" ) ); 833 assertFalse( IBAN.peekIban( "DE9 9" ) ); 834 assertFalse( IBAN.peekIban( "DE99 " ) ); 835 836 assertFalse( IBAN.peekIban( "0" ) ); 837 838 assertTrue( IBAN.peekIban( "AL47212110090000000235698741" ) ); 839 840 try 841 { 842 IBAN.peekIban( "AL10212110090000000235698741" ); 843 fail( "Expected 'IbanCheckDigitsException' not thrown." ); 844 } 845 catch ( final IbanCheckDigitsException e ) 846 { 847 System.out.println( e.toString() ); 848 assertNotNull( e.getMessage() ); 849 assertEquals( "AL10212110090000000235698741", e.getIban() ); 850 assertEquals( BigInteger.TEN, e.getCheckDigits() ); 851 } 852 853 try 854 { 855 IBAN.peekIban( "AL10 2121 1009 0000 0002 3569 8741" ); 856 fail( "Expected 'IbanCheckDigitsException' not thrown." ); 857 } 858 catch ( final IbanCheckDigitsException e ) 859 { 860 System.out.println( e.toString() ); 861 assertNotNull( e.getMessage() ); 862 assertEquals( "AL10212110090000000235698741", e.getIban() ); 863 assertEquals( BigInteger.TEN, e.getCheckDigits() ); 864 } 865 } 866 867 @Test public void ToString() throws Exception 868 { 869 final IBAN iban = IBAN.parse( "AL47212110090000000235698741" ); 870 871 try 872 { 873 iban.toString( null ); 874 fail( "Expected 'NullPointerException' not thrown." ); 875 } 876 catch ( final NullPointerException e ) 877 { 878 System.out.println( e.toString() ); 879 assertNotNull( e.getMessage() ); 880 } 881 882 assertEquals( "AL47212110090000000235698741", iban.toString( IbanFormat.ELECTRONIC ) ); 883 assertEquals( "AL47 2121 1009 0000 0002 3569 8741", iban.toString( IbanFormat.PRINT ) ); 884 } 885 886 @Test public void Append() throws Exception 887 { 888 final IBAN iban = IBAN.parse( "AL47212110090000000235698741" ); 889 890 try 891 { 892 iban.append( null, new StringBuilder() ); 893 fail( "Expected 'NullPointerException' not thrown." ); 894 } 895 catch ( final NullPointerException e ) 896 { 897 System.out.println( e.toString() ); 898 assertNotNull( e.getMessage() ); 899 } 900 try 901 { 902 iban.append( IbanFormat.ELECTRONIC, null ); 903 fail( "Expected 'NullPointerException' not thrown." ); 904 } 905 catch ( final NullPointerException e ) 906 { 907 System.out.println( e.toString() ); 908 assertNotNull( e.getMessage() ); 909 } 910 911 assertEquals( "AL47212110090000000235698741", 912 iban.append( IbanFormat.ELECTRONIC, new StringBuilder() ).toString() ); 913 914 assertEquals( "AL47 2121 1009 0000 0002 3569 8741", 915 iban.append( IbanFormat.PRINT, new StringBuilder() ).toString() ); 916 917 } 918 919 @Test public void Formattable() throws Exception 920 { 921 final IBAN iban = IBAN.parse( "AL47212110090000000235698741" ); 922 923 try 924 { 925 iban.formatTo( null, -1, -1, -1 ); 926 fail( "Expected 'NullPointerException' not thrown." ); 927 } 928 catch ( final NullPointerException e ) 929 { 930 System.out.println( e.toString() ); 931 assertNotNull( e.getMessage() ); 932 } 933 934 assertEquals( "AL", String.format( "%1$.2s", iban ) ); 935 assertEquals( "AL", String.format( "%1$#.2s", iban ) ); 936 assertEquals( "AL4721", String.format( "%1$.6s", iban ) ); 937 assertEquals( "AL47 2", String.format( "%1$#.6s", iban ) ); 938 assertEquals( "AL47212110090000000235698741", String.format( "%1$s", iban ) ); 939 assertEquals( "AL47 2121 1009 0000 0002 3569 8741", String.format( "%1$#s", iban ) ); 940 assertEquals( " AL47212110090000000235698741", String.format( "%1$50s", iban ) ); 941 assertEquals( " AL47 2121 1009 0000 0002 3569 8741", String.format( "%1$#50s", iban ) ); 942 assertEquals( "AL47212110090000000235698741 ", String.format( "%1$-50s", iban ) ); 943 assertEquals( "AL47 2121 1009 0000 0002 3569 8741 ", String.format( "%1$-#50s", iban ) ); 944 945 try 946 { 947 String.format( "%1$S", iban ); 948 fail( "Expected 'IllegalFormatFlagsException' not thrown." ); 949 } 950 catch ( final IllegalFormatFlagsException e ) 951 { 952 System.out.println( e.toString() ); 953 assertNotNull( e.getMessage() ); 954 } 955 956 try 957 { 958 String.format( "%1$-50S", iban ); 959 fail( "Expected 'IllegalFormatFlagsException' not thrown." ); 960 } 961 catch ( final IllegalFormatFlagsException e ) 962 { 963 System.out.println( e.toString() ); 964 assertNotNull( e.getMessage() ); 965 } 966 967 try 968 { 969 String.format( "%1$#S", iban ); 970 fail( "Expected 'IllegalFormatFlagsException' not thrown." ); 971 } 972 catch ( final IllegalFormatFlagsException e ) 973 { 974 System.out.println( e.toString() ); 975 assertNotNull( e.getMessage() ); 976 } 977 978 try 979 { 980 String.format( "%1$-#50S", iban ); 981 fail( "Expected 'IllegalFormatFlagsException' not thrown." ); 982 } 983 catch ( final IllegalFormatFlagsException e ) 984 { 985 System.out.println( e.toString() ); 986 assertNotNull( e.getMessage() ); 987 } 988 } 989 990 @Test public void EqualsAndHashCode() throws Exception 991 { 992 final String[] electronic = this.getValidValuesElectronicFormat(); 993 final String[] print = this.getValidValuesPrintFormat(); 994 995 for ( int i = electronic.length - 1; i >= 0; i-- ) 996 { 997 final IBAN iban1 = IBAN.parse( electronic[i] ); 998 final IBAN iban2 = IBAN.parse( electronic[i] ); 999 assertEquals( iban1, iban2 ); 1000 assertTrue( iban1.hashCode() == iban2.hashCode() ); 1001 } 1002 for ( int i = print.length - 1; i >= 0; i-- ) 1003 { 1004 final IBAN iban1 = IBAN.parse( print[i] ); 1005 final IBAN iban2 = IBAN.parse( print[i] ); 1006 assertEquals( iban1, iban2 ); 1007 assertTrue( iban1.hashCode() == iban2.hashCode() ); 1008 } 1009 } 1010 1011 @Test public void CompareTo() throws Exception 1012 { 1013 final String[] electronic = this.getValidValuesElectronicFormat(); 1014 final String[] print = this.getValidValuesPrintFormat(); 1015 final IBAN iban = IBAN.valueOf( "AL47212110090000000235698741" ); 1016 1017 try 1018 { 1019 iban.compareTo( null ); 1020 fail( "Expected 'NullPointerException' not thrown." ); 1021 } 1022 catch ( final NullPointerException e ) 1023 { 1024 System.out.println( e.toString() ); 1025 assertNotNull( e.getMessage() ); 1026 } 1027 1028 for ( int i = electronic.length - 1; i >= 0; i-- ) 1029 { 1030 final IBAN iban1 = IBAN.parse( electronic[i] ); 1031 final IBAN iban2 = IBAN.parse( electronic[i] ); 1032 assertTrue( iban1.compareTo( iban2 ) == 0 ); 1033 } 1034 for ( int i = print.length - 1; i >= 0; i-- ) 1035 { 1036 final IBAN iban1 = IBAN.parse( print[i] ); 1037 final IBAN iban2 = IBAN.parse( print[i] ); 1038 assertTrue( iban1.compareTo( iban2 ) == 0 ); 1039 } 1040 } 1041 1042 @Test public void BankAndBranchIdentifierAndSepaCountry() throws Exception 1043 { 1044 IBAN iban = IBAN.valueOf( "AL47212110090000000235698741" ); 1045 assertEquals( "212", iban.getBankIdentifier() ); 1046 assertEquals( "1100", iban.getBranchIdentifier() ); 1047 assertFalse( iban.isSepaCountry() ); 1048 1049 iban = IBAN.valueOf( "AL47 2121 1009 0000 0002 3569 8741" ); 1050 assertEquals( "212", iban.getBankIdentifier() ); 1051 assertEquals( "1100", iban.getBranchIdentifier() ); 1052 assertFalse( iban.isSepaCountry() ); 1053 1054 IBAN bban = IBAN.valueOf( "AL", "212110090000000235698741" ); 1055 assertEquals( iban, bban ); 1056 assertEquals( "212", bban.getBankIdentifier() ); 1057 assertEquals( "1100", bban.getBranchIdentifier() ); 1058 assertFalse( bban.isSepaCountry() ); 1059 1060 bban = IBAN.valueOf( "AL", "2121 1009 0000 0002 3569 8741" ); 1061 assertEquals( iban, bban ); 1062 assertEquals( "212", bban.getBankIdentifier() ); 1063 assertEquals( "1100", bban.getBranchIdentifier() ); 1064 assertFalse( bban.isSepaCountry() ); 1065 1066 iban = IBAN.valueOf( "AD1200012030200359100100" ); 1067 assertEquals( "0001", iban.getBankIdentifier() ); 1068 assertEquals( "2030", iban.getBranchIdentifier() ); 1069 assertFalse( iban.isSepaCountry() ); 1070 1071 iban = IBAN.valueOf( "AD12 0001 2030 2003 5910 0100" ); 1072 assertEquals( "0001", iban.getBankIdentifier() ); 1073 assertEquals( "2030", iban.getBranchIdentifier() ); 1074 assertFalse( iban.isSepaCountry() ); 1075 1076 bban = IBAN.valueOf( "AD", "00012030200359100100" ); 1077 assertEquals( iban, bban ); 1078 assertEquals( "0001", bban.getBankIdentifier() ); 1079 assertEquals( "2030", bban.getBranchIdentifier() ); 1080 assertFalse( bban.isSepaCountry() ); 1081 1082 bban = IBAN.valueOf( "AD", "0001 2030 2003 5910 0100" ); 1083 assertEquals( iban, bban ); 1084 assertEquals( "0001", bban.getBankIdentifier() ); 1085 assertEquals( "2030", bban.getBranchIdentifier() ); 1086 assertFalse( bban.isSepaCountry() ); 1087 1088 iban = IBAN.valueOf( "AT611904300234573201" ); 1089 assertEquals( "19043", iban.getBankIdentifier() ); 1090 assertNull( iban.getBranchIdentifier() ); 1091 assertTrue( iban.isSepaCountry() ); 1092 1093 iban = IBAN.valueOf( "AT61 1904 3002 3457 3201" ); 1094 assertEquals( "19043", iban.getBankIdentifier() ); 1095 assertNull( iban.getBranchIdentifier() ); 1096 assertTrue( iban.isSepaCountry() ); 1097 1098 bban = IBAN.valueOf( "AT", "1904300234573201" ); 1099 assertEquals( iban, bban ); 1100 assertEquals( "19043", bban.getBankIdentifier() ); 1101 assertNull( bban.getBranchIdentifier() ); 1102 assertTrue( bban.isSepaCountry() ); 1103 1104 bban = IBAN.valueOf( "AT", "1904 3002 3457 3201" ); 1105 assertEquals( iban, bban ); 1106 assertEquals( "19043", bban.getBankIdentifier() ); 1107 assertNull( bban.getBranchIdentifier() ); 1108 assertTrue( bban.isSepaCountry() ); 1109 1110 iban = IBAN.valueOf( "AZ21NABZ00000000137010001944" ); 1111 assertEquals( "NABZ", iban.getBankIdentifier() ); 1112 assertNull( iban.getBranchIdentifier() ); 1113 assertFalse( iban.isSepaCountry() ); 1114 1115 iban = IBAN.valueOf( "AZ21 NABZ 0000 0000 1370 1000 1944" ); 1116 assertEquals( "NABZ", iban.getBankIdentifier() ); 1117 assertNull( iban.getBranchIdentifier() ); 1118 assertFalse( iban.isSepaCountry() ); 1119 1120 bban = IBAN.valueOf( "AZ", "NABZ00000000137010001944" ); 1121 assertEquals( iban, bban ); 1122 assertEquals( "NABZ", bban.getBankIdentifier() ); 1123 assertNull( bban.getBranchIdentifier() ); 1124 assertFalse( bban.isSepaCountry() ); 1125 1126 bban = IBAN.valueOf( "AZ", "NABZ 0000 0000 1370 1000 1944" ); 1127 assertEquals( iban, bban ); 1128 assertEquals( "NABZ", bban.getBankIdentifier() ); 1129 assertNull( bban.getBranchIdentifier() ); 1130 assertFalse( bban.isSepaCountry() ); 1131 1132 iban = IBAN.valueOf( "BH67BMAG00001299123456" ); 1133 assertEquals( "BMAG", iban.getBankIdentifier() ); 1134 assertNull( iban.getBranchIdentifier() ); 1135 assertFalse( iban.isSepaCountry() ); 1136 1137 iban = IBAN.valueOf( "BH67 BMAG 0000 1299 1234 56" ); 1138 assertEquals( "BMAG", iban.getBankIdentifier() ); 1139 assertNull( iban.getBranchIdentifier() ); 1140 assertFalse( iban.isSepaCountry() ); 1141 1142 bban = IBAN.valueOf( "BH", "BMAG00001299123456" ); 1143 assertEquals( iban, bban ); 1144 assertEquals( "BMAG", bban.getBankIdentifier() ); 1145 assertNull( bban.getBranchIdentifier() ); 1146 assertFalse( bban.isSepaCountry() ); 1147 1148 bban = IBAN.valueOf( "BH", "BMAG 0000 1299 1234 56" ); 1149 assertEquals( iban, bban ); 1150 assertEquals( "BMAG", bban.getBankIdentifier() ); 1151 assertNull( bban.getBranchIdentifier() ); 1152 assertFalse( bban.isSepaCountry() ); 1153 1154 iban = IBAN.valueOf( "BE68539007547034" ); 1155 assertEquals( "539", iban.getBankIdentifier() ); 1156 assertNull( iban.getBranchIdentifier() ); 1157 assertTrue( iban.isSepaCountry() ); 1158 1159 iban = IBAN.valueOf( "BE68 5390 0754 7034" ); 1160 assertEquals( "539", iban.getBankIdentifier() ); 1161 assertNull( iban.getBranchIdentifier() ); 1162 assertTrue( iban.isSepaCountry() ); 1163 1164 bban = IBAN.valueOf( "BE", "539007547034" ); 1165 assertEquals( iban, bban ); 1166 assertEquals( "539", bban.getBankIdentifier() ); 1167 assertNull( bban.getBranchIdentifier() ); 1168 assertTrue( bban.isSepaCountry() ); 1169 1170 bban = IBAN.valueOf( "BE", "5390 0754 7034" ); 1171 assertEquals( iban, bban ); 1172 assertEquals( "539", bban.getBankIdentifier() ); 1173 assertNull( bban.getBranchIdentifier() ); 1174 assertTrue( bban.isSepaCountry() ); 1175 1176 iban = IBAN.valueOf( "BA391290079401028494" ); 1177 assertEquals( "129", iban.getBankIdentifier() ); 1178 assertEquals( "007", iban.getBranchIdentifier() ); 1179 assertFalse( iban.isSepaCountry() ); 1180 1181 iban = IBAN.valueOf( "BA39 1290 0794 0102 8494" ); 1182 assertEquals( "129", iban.getBankIdentifier() ); 1183 assertEquals( "007", iban.getBranchIdentifier() ); 1184 assertFalse( iban.isSepaCountry() ); 1185 1186 bban = IBAN.valueOf( "BA", "1290079401028494" ); 1187 assertEquals( iban, bban ); 1188 assertEquals( "129", bban.getBankIdentifier() ); 1189 assertEquals( "007", bban.getBranchIdentifier() ); 1190 assertFalse( bban.isSepaCountry() ); 1191 1192 bban = IBAN.valueOf( "BA", "1290 0794 0102 8494" ); 1193 assertEquals( iban, bban ); 1194 assertEquals( "129", bban.getBankIdentifier() ); 1195 assertEquals( "007", bban.getBranchIdentifier() ); 1196 assertFalse( bban.isSepaCountry() ); 1197 1198 iban = IBAN.valueOf( "BR9700360305000010009795493P1" ); 1199 assertEquals( "00360305", iban.getBankIdentifier() ); 1200 assertEquals( "00001", iban.getBranchIdentifier() ); 1201 assertFalse( iban.isSepaCountry() ); 1202 1203 iban = IBAN.valueOf( "BR97 0036 0305 0000 1000 9795 493P 1" ); 1204 assertEquals( "00360305", iban.getBankIdentifier() ); 1205 assertEquals( "00001", iban.getBranchIdentifier() ); 1206 assertFalse( iban.isSepaCountry() ); 1207 1208 bban = IBAN.valueOf( "BR", "00360305000010009795493P1" ); 1209 assertEquals( iban, bban ); 1210 assertEquals( "00360305", bban.getBankIdentifier() ); 1211 assertEquals( "00001", bban.getBranchIdentifier() ); 1212 assertFalse( bban.isSepaCountry() ); 1213 1214 bban = IBAN.valueOf( "BR", "0036 0305 0000 1000 9795 493P 1" ); 1215 assertEquals( iban, bban ); 1216 assertEquals( "00360305", bban.getBankIdentifier() ); 1217 assertEquals( "00001", bban.getBranchIdentifier() ); 1218 assertFalse( bban.isSepaCountry() ); 1219 1220 iban = IBAN.valueOf( "BG80BNBG96611020345678" ); 1221 assertEquals( "BNBG", iban.getBankIdentifier() ); 1222 assertEquals( "9661", iban.getBranchIdentifier() ); 1223 assertTrue( iban.isSepaCountry() ); 1224 1225 iban = IBAN.valueOf( "BG80 BNBG 9661 1020 3456 78" ); 1226 assertEquals( "BNBG", iban.getBankIdentifier() ); 1227 assertEquals( "9661", iban.getBranchIdentifier() ); 1228 assertTrue( iban.isSepaCountry() ); 1229 1230 bban = IBAN.valueOf( "BG", "BNBG96611020345678" ); 1231 assertEquals( iban, bban ); 1232 assertEquals( "BNBG", bban.getBankIdentifier() ); 1233 assertEquals( "9661", bban.getBranchIdentifier() ); 1234 assertTrue( bban.isSepaCountry() ); 1235 1236 bban = IBAN.valueOf( "BG", "BNBG 9661 1020 3456 78" ); 1237 assertEquals( iban, bban ); 1238 assertEquals( "BNBG", bban.getBankIdentifier() ); 1239 assertEquals( "9661", bban.getBranchIdentifier() ); 1240 assertTrue( bban.isSepaCountry() ); 1241 1242 iban = IBAN.valueOf( "CR0515202001026284066" ); 1243 assertEquals( "152", iban.getBankIdentifier() ); 1244 assertNull( iban.getBranchIdentifier() ); 1245 assertFalse( iban.isSepaCountry() ); 1246 1247 iban = IBAN.valueOf( "CR05 1520 2001 0262 8406 6" ); 1248 assertEquals( "152", iban.getBankIdentifier() ); 1249 assertNull( iban.getBranchIdentifier() ); 1250 assertFalse( iban.isSepaCountry() ); 1251 1252 bban = IBAN.valueOf( "CR", "15202001026284066" ); 1253 assertEquals( iban, bban ); 1254 assertEquals( "152", bban.getBankIdentifier() ); 1255 assertNull( bban.getBranchIdentifier() ); 1256 assertFalse( bban.isSepaCountry() ); 1257 1258 bban = IBAN.valueOf( "CR", "1520 2001 0262 8406 6" ); 1259 assertEquals( iban, bban ); 1260 assertEquals( "152", bban.getBankIdentifier() ); 1261 assertNull( bban.getBranchIdentifier() ); 1262 assertFalse( bban.isSepaCountry() ); 1263 1264 iban = IBAN.valueOf( "HR1210010051863000160" ); 1265 assertEquals( "1001005", iban.getBankIdentifier() ); 1266 assertNull( iban.getBranchIdentifier() ); 1267 assertTrue( iban.isSepaCountry() ); 1268 1269 iban = IBAN.valueOf( "HR12 1001 0051 8630 0016 0" ); 1270 assertEquals( "1001005", iban.getBankIdentifier() ); 1271 assertNull( iban.getBranchIdentifier() ); 1272 assertTrue( iban.isSepaCountry() ); 1273 1274 bban = IBAN.valueOf( "HR", "10010051863000160" ); 1275 assertEquals( iban, bban ); 1276 assertEquals( "1001005", bban.getBankIdentifier() ); 1277 assertNull( bban.getBranchIdentifier() ); 1278 assertTrue( bban.isSepaCountry() ); 1279 1280 bban = IBAN.valueOf( "HR", "1001 0051 8630 0016 0" ); 1281 assertEquals( iban, bban ); 1282 assertEquals( "1001005", bban.getBankIdentifier() ); 1283 assertNull( bban.getBranchIdentifier() ); 1284 assertTrue( bban.isSepaCountry() ); 1285 1286 iban = IBAN.valueOf( "CY17002001280000001200527600" ); 1287 assertEquals( "002", iban.getBankIdentifier() ); 1288 assertEquals( "00128", iban.getBranchIdentifier() ); 1289 assertTrue( iban.isSepaCountry() ); 1290 1291 iban = IBAN.valueOf( "CY17 0020 0128 0000 0012 0052 7600" ); 1292 assertEquals( "002", iban.getBankIdentifier() ); 1293 assertEquals( "00128", iban.getBranchIdentifier() ); 1294 assertTrue( iban.isSepaCountry() ); 1295 1296 bban = IBAN.valueOf( "CY", "002001280000001200527600" ); 1297 assertEquals( iban, bban ); 1298 assertEquals( "002", bban.getBankIdentifier() ); 1299 assertEquals( "00128", bban.getBranchIdentifier() ); 1300 assertTrue( bban.isSepaCountry() ); 1301 1302 bban = IBAN.valueOf( "CY", "0020 0128 0000 0012 0052 7600" ); 1303 assertEquals( iban, bban ); 1304 assertEquals( "002", bban.getBankIdentifier() ); 1305 assertEquals( "00128", bban.getBranchIdentifier() ); 1306 assertTrue( bban.isSepaCountry() ); 1307 1308 iban = IBAN.valueOf( "CZ6508000000192000145399" ); 1309 assertEquals( "0800", iban.getBankIdentifier() ); 1310 assertNull( iban.getBranchIdentifier() ); 1311 assertTrue( iban.isSepaCountry() ); 1312 1313 iban = IBAN.valueOf( "CZ65 0800 0000 1920 0014 5399" ); 1314 assertEquals( "0800", iban.getBankIdentifier() ); 1315 assertNull( iban.getBranchIdentifier() ); 1316 assertTrue( iban.isSepaCountry() ); 1317 1318 bban = IBAN.valueOf( "CZ", "08000000192000145399" ); 1319 assertEquals( iban, bban ); 1320 assertEquals( "0800", bban.getBankIdentifier() ); 1321 assertNull( bban.getBranchIdentifier() ); 1322 assertTrue( bban.isSepaCountry() ); 1323 1324 bban = IBAN.valueOf( "CZ", "0800 0000 1920 0014 5399" ); 1325 assertEquals( iban, bban ); 1326 assertEquals( "0800", bban.getBankIdentifier() ); 1327 assertNull( bban.getBranchIdentifier() ); 1328 assertTrue( bban.isSepaCountry() ); 1329 1330 iban = IBAN.valueOf( "DK5000400440116243" ); 1331 assertEquals( "0040", iban.getBankIdentifier() ); 1332 assertNull( iban.getBranchIdentifier() ); 1333 assertTrue( iban.isSepaCountry() ); 1334 1335 iban = IBAN.valueOf( "DK50 0040 0440 1162 43" ); 1336 assertEquals( "0040", iban.getBankIdentifier() ); 1337 assertNull( iban.getBranchIdentifier() ); 1338 assertTrue( iban.isSepaCountry() ); 1339 1340 bban = IBAN.valueOf( "DK", "00400440116243" ); 1341 assertEquals( iban, bban ); 1342 assertEquals( "0040", bban.getBankIdentifier() ); 1343 assertNull( bban.getBranchIdentifier() ); 1344 assertTrue( bban.isSepaCountry() ); 1345 1346 bban = IBAN.valueOf( "DK", "0040 0440 1162 43" ); 1347 assertEquals( iban, bban ); 1348 assertEquals( "0040", bban.getBankIdentifier() ); 1349 assertNull( bban.getBranchIdentifier() ); 1350 assertTrue( bban.isSepaCountry() ); 1351 1352 iban = IBAN.valueOf( "FO6264600001631634" ); 1353 assertEquals( "6460", iban.getBankIdentifier() ); 1354 assertNull( iban.getBranchIdentifier() ); 1355 assertFalse( iban.isSepaCountry() ); 1356 1357 iban = IBAN.valueOf( "FO62 6460 0001 6316 34" ); 1358 assertEquals( "6460", iban.getBankIdentifier() ); 1359 assertNull( iban.getBranchIdentifier() ); 1360 assertFalse( iban.isSepaCountry() ); 1361 1362 bban = IBAN.valueOf( "FO", "64600001631634" ); 1363 assertEquals( iban, bban ); 1364 assertEquals( "6460", bban.getBankIdentifier() ); 1365 assertNull( bban.getBranchIdentifier() ); 1366 assertFalse( bban.isSepaCountry() ); 1367 1368 bban = IBAN.valueOf( "FO", "6460 0001 6316 34" ); 1369 assertEquals( iban, bban ); 1370 assertEquals( "6460", bban.getBankIdentifier() ); 1371 assertNull( bban.getBranchIdentifier() ); 1372 assertFalse( bban.isSepaCountry() ); 1373 1374 iban = IBAN.valueOf( "GL8964710001000206" ); 1375 assertEquals( "6471", iban.getBankIdentifier() ); 1376 assertNull( iban.getBranchIdentifier() ); 1377 assertFalse( iban.isSepaCountry() ); 1378 1379 iban = IBAN.valueOf( "GL89 6471 0001 0002 06" ); 1380 assertEquals( "6471", iban.getBankIdentifier() ); 1381 assertNull( iban.getBranchIdentifier() ); 1382 assertFalse( iban.isSepaCountry() ); 1383 1384 bban = IBAN.valueOf( "GL", "64710001000206" ); 1385 assertEquals( iban, bban ); 1386 assertEquals( "6471", bban.getBankIdentifier() ); 1387 assertNull( bban.getBranchIdentifier() ); 1388 assertFalse( bban.isSepaCountry() ); 1389 1390 bban = IBAN.valueOf( "GL", "6471 0001 0002 06" ); 1391 assertEquals( iban, bban ); 1392 assertEquals( "6471", bban.getBankIdentifier() ); 1393 assertNull( bban.getBranchIdentifier() ); 1394 assertFalse( bban.isSepaCountry() ); 1395 1396 iban = IBAN.valueOf( "DO28BAGR00000001212453611324" ); 1397 assertEquals( "BAGR", iban.getBankIdentifier() ); 1398 assertNull( iban.getBranchIdentifier() ); 1399 assertFalse( iban.isSepaCountry() ); 1400 1401 iban = IBAN.valueOf( "DO28 BAGR 0000 0001 2124 5361 1324" ); 1402 assertEquals( "BAGR", iban.getBankIdentifier() ); 1403 assertNull( iban.getBranchIdentifier() ); 1404 assertFalse( iban.isSepaCountry() ); 1405 1406 bban = IBAN.valueOf( "DO", "BAGR00000001212453611324" ); 1407 assertEquals( iban, bban ); 1408 assertEquals( "BAGR", bban.getBankIdentifier() ); 1409 assertNull( bban.getBranchIdentifier() ); 1410 assertFalse( bban.isSepaCountry() ); 1411 1412 bban = IBAN.valueOf( "DO", "BAGR 0000 0001 2124 5361 1324" ); 1413 assertEquals( iban, bban ); 1414 assertEquals( "BAGR", bban.getBankIdentifier() ); 1415 assertNull( bban.getBranchIdentifier() ); 1416 assertFalse( bban.isSepaCountry() ); 1417 1418 iban = IBAN.valueOf( "EE382200221020145685" ); 1419 assertEquals( "22", iban.getBankIdentifier() ); 1420 assertNull( iban.getBranchIdentifier() ); 1421 assertTrue( iban.isSepaCountry() ); 1422 1423 iban = IBAN.valueOf( "EE38 2200 2210 2014 5685" ); 1424 assertEquals( "22", iban.getBankIdentifier() ); 1425 assertNull( iban.getBranchIdentifier() ); 1426 assertTrue( iban.isSepaCountry() ); 1427 1428 bban = IBAN.valueOf( "EE", "2200221020145685" ); 1429 assertEquals( iban, bban ); 1430 assertEquals( "22", bban.getBankIdentifier() ); 1431 assertNull( bban.getBranchIdentifier() ); 1432 assertTrue( bban.isSepaCountry() ); 1433 1434 bban = IBAN.valueOf( "EE", "2200 2210 2014 5685" ); 1435 assertEquals( iban, bban ); 1436 assertEquals( "22", bban.getBankIdentifier() ); 1437 assertNull( bban.getBranchIdentifier() ); 1438 assertTrue( bban.isSepaCountry() ); 1439 1440 iban = IBAN.valueOf( "FI2112345600000785" ); 1441 assertEquals( "123", iban.getBankIdentifier() ); 1442 assertNull( iban.getBranchIdentifier() ); 1443 assertTrue( iban.isSepaCountry() ); 1444 1445 iban = IBAN.valueOf( "FI21 1234 5600 0007 85" ); 1446 assertEquals( "123", iban.getBankIdentifier() ); 1447 assertNull( iban.getBranchIdentifier() ); 1448 assertTrue( iban.isSepaCountry() ); 1449 1450 bban = IBAN.valueOf( "FI", "12345600000785" ); 1451 assertEquals( iban, bban ); 1452 assertEquals( "123", bban.getBankIdentifier() ); 1453 assertNull( bban.getBranchIdentifier() ); 1454 assertTrue( bban.isSepaCountry() ); 1455 1456 bban = IBAN.valueOf( "FI", "1234 5600 0007 85" ); 1457 assertEquals( iban, bban ); 1458 assertEquals( "123", bban.getBankIdentifier() ); 1459 assertNull( bban.getBranchIdentifier() ); 1460 assertTrue( bban.isSepaCountry() ); 1461 1462 bban = IBAN.valueOf( "AX", "1234 5600 0007 85" ); 1463 assertEquals( iban, bban ); 1464 assertEquals( "AX", bban.getCountryCode() ); 1465 assertEquals( "123", bban.getBankIdentifier() ); 1466 assertNull( bban.getBranchIdentifier() ); 1467 assertTrue( bban.isSepaCountry() ); 1468 1469 iban = IBAN.valueOf( "FR1420041010050500013M02606" ); 1470 assertEquals( "20041", iban.getBankIdentifier() ); 1471 assertNull( iban.getBranchIdentifier() ); 1472 assertTrue( iban.isSepaCountry() ); 1473 1474 iban = IBAN.valueOf( "FR14 2004 1010 0505 0001 3M02 606" ); 1475 assertEquals( "20041", iban.getBankIdentifier() ); 1476 assertNull( iban.getBranchIdentifier() ); 1477 assertTrue( iban.isSepaCountry() ); 1478 1479 bban = IBAN.valueOf( "FR", "20041010050500013M02606" ); 1480 assertEquals( iban, bban ); 1481 assertEquals( "20041", bban.getBankIdentifier() ); 1482 assertNull( bban.getBranchIdentifier() ); 1483 assertTrue( bban.isSepaCountry() ); 1484 1485 bban = IBAN.valueOf( "FR", "2004 1010 0505 0001 3M02 606" ); 1486 assertEquals( iban, bban ); 1487 assertEquals( "20041", bban.getBankIdentifier() ); 1488 assertNull( bban.getBranchIdentifier() ); 1489 assertTrue( bban.isSepaCountry() ); 1490 1491 bban = IBAN.valueOf( "BL", "2004 1010 0505 0001 3M02 606" ); 1492 assertEquals( iban, bban ); 1493 assertEquals( "BL", bban.getCountryCode() ); 1494 assertEquals( "20041", bban.getBankIdentifier() ); 1495 assertNull( bban.getBranchIdentifier() ); 1496 assertTrue( bban.isSepaCountry() ); 1497 1498 bban = IBAN.valueOf( "GF", "2004 1010 0505 0001 3M02 606" ); 1499 assertEquals( iban, bban ); 1500 assertEquals( "GF", bban.getCountryCode() ); 1501 assertEquals( "20041", bban.getBankIdentifier() ); 1502 assertNull( bban.getBranchIdentifier() ); 1503 assertTrue( bban.isSepaCountry() ); 1504 1505 bban = IBAN.valueOf( "GP", "2004 1010 0505 0001 3M02 606" ); 1506 assertEquals( iban, bban ); 1507 assertEquals( "GP", bban.getCountryCode() ); 1508 assertEquals( "20041", bban.getBankIdentifier() ); 1509 assertNull( bban.getBranchIdentifier() ); 1510 assertTrue( bban.isSepaCountry() ); 1511 1512 bban = IBAN.valueOf( "MF", "2004 1010 0505 0001 3M02 606" ); 1513 assertEquals( iban, bban ); 1514 assertEquals( "MF", bban.getCountryCode() ); 1515 assertEquals( "20041", bban.getBankIdentifier() ); 1516 assertNull( bban.getBranchIdentifier() ); 1517 assertTrue( bban.isSepaCountry() ); 1518 1519 bban = IBAN.valueOf( "MQ", "2004 1010 0505 0001 3M02 606" ); 1520 assertEquals( iban, bban ); 1521 assertEquals( "MQ", bban.getCountryCode() ); 1522 assertEquals( "20041", bban.getBankIdentifier() ); 1523 assertNull( bban.getBranchIdentifier() ); 1524 assertTrue( bban.isSepaCountry() ); 1525 1526 bban = IBAN.valueOf( "NC", "2004 1010 0505 0001 3M02 606" ); 1527 assertEquals( iban, bban ); 1528 assertEquals( "NC", bban.getCountryCode() ); 1529 assertEquals( "20041", bban.getBankIdentifier() ); 1530 assertNull( bban.getBranchIdentifier() ); 1531 assertFalse( bban.isSepaCountry() ); 1532 1533 bban = IBAN.valueOf( "PF", "2004 1010 0505 0001 3M02 606" ); 1534 assertEquals( iban, bban ); 1535 assertEquals( "PF", bban.getCountryCode() ); 1536 assertEquals( "20041", bban.getBankIdentifier() ); 1537 assertNull( bban.getBranchIdentifier() ); 1538 assertFalse( bban.isSepaCountry() ); 1539 1540 bban = IBAN.valueOf( "PM", "2004 1010 0505 0001 3M02 606" ); 1541 assertEquals( iban, bban ); 1542 assertEquals( "PM", bban.getCountryCode() ); 1543 assertEquals( "20041", bban.getBankIdentifier() ); 1544 assertNull( bban.getBranchIdentifier() ); 1545 assertTrue( bban.isSepaCountry() ); 1546 1547 bban = IBAN.valueOf( "RE", "2004 1010 0505 0001 3M02 606" ); 1548 assertEquals( iban, bban ); 1549 assertEquals( "RE", bban.getCountryCode() ); 1550 assertEquals( "20041", bban.getBankIdentifier() ); 1551 assertNull( bban.getBranchIdentifier() ); 1552 assertTrue( bban.isSepaCountry() ); 1553 1554 bban = IBAN.valueOf( "TF", "2004 1010 0505 0001 3M02 606" ); 1555 assertEquals( iban, bban ); 1556 assertEquals( "TF", bban.getCountryCode() ); 1557 assertEquals( "20041", bban.getBankIdentifier() ); 1558 assertNull( bban.getBranchIdentifier() ); 1559 assertFalse( bban.isSepaCountry() ); 1560 1561 bban = IBAN.valueOf( "WF", "2004 1010 0505 0001 3M02 606" ); 1562 assertEquals( iban, bban ); 1563 assertEquals( "WF", bban.getCountryCode() ); 1564 assertEquals( "20041", bban.getBankIdentifier() ); 1565 assertNull( bban.getBranchIdentifier() ); 1566 assertFalse( bban.isSepaCountry() ); 1567 1568 bban = IBAN.valueOf( "YT", "2004 1010 0505 0001 3M02 606" ); 1569 assertEquals( iban, bban ); 1570 assertEquals( "YT", bban.getCountryCode() ); 1571 assertEquals( "20041", bban.getBankIdentifier() ); 1572 assertNull( bban.getBranchIdentifier() ); 1573 assertTrue( bban.isSepaCountry() ); 1574 1575 iban = IBAN.valueOf( "GE29NB0000000101904917" ); 1576 assertEquals( "NB", iban.getBankIdentifier() ); 1577 assertNull( iban.getBranchIdentifier() ); 1578 assertFalse( iban.isSepaCountry() ); 1579 1580 iban = IBAN.valueOf( "GE29 NB00 0000 0101 9049 17" ); 1581 assertEquals( "NB", iban.getBankIdentifier() ); 1582 assertNull( iban.getBranchIdentifier() ); 1583 assertFalse( iban.isSepaCountry() ); 1584 1585 bban = IBAN.valueOf( "GE", "NB0000000101904917" ); 1586 assertEquals( iban, bban ); 1587 assertEquals( "NB", bban.getBankIdentifier() ); 1588 assertNull( bban.getBranchIdentifier() ); 1589 assertFalse( bban.isSepaCountry() ); 1590 1591 bban = IBAN.valueOf( "GE", "NB00 0000 0101 9049 17" ); 1592 assertEquals( iban, bban ); 1593 assertEquals( "NB", bban.getBankIdentifier() ); 1594 assertNull( bban.getBranchIdentifier() ); 1595 assertFalse( bban.isSepaCountry() ); 1596 1597 iban = IBAN.valueOf( "DE89370400440532013000" ); 1598 assertEquals( "37040044", iban.getBankIdentifier() ); 1599 assertNull( iban.getBranchIdentifier() ); 1600 assertTrue( iban.isSepaCountry() ); 1601 1602 iban = IBAN.valueOf( "DE89 3704 0044 0532 0130 00" ); 1603 assertEquals( "37040044", iban.getBankIdentifier() ); 1604 assertNull( iban.getBranchIdentifier() ); 1605 assertTrue( iban.isSepaCountry() ); 1606 1607 bban = IBAN.valueOf( "DE", "370400440532013000" ); 1608 assertEquals( iban, bban ); 1609 assertEquals( "37040044", bban.getBankIdentifier() ); 1610 assertNull( bban.getBranchIdentifier() ); 1611 assertTrue( bban.isSepaCountry() ); 1612 1613 bban = IBAN.valueOf( "DE", "3704 0044 0532 0130 00" ); 1614 assertEquals( iban, bban ); 1615 assertEquals( "37040044", bban.getBankIdentifier() ); 1616 assertNull( bban.getBranchIdentifier() ); 1617 assertTrue( bban.isSepaCountry() ); 1618 1619 iban = IBAN.valueOf( "GI75NWBK000000007099453" ); 1620 assertEquals( "NWBK", iban.getBankIdentifier() ); 1621 assertNull( iban.getBranchIdentifier() ); 1622 assertTrue( iban.isSepaCountry() ); 1623 1624 iban = IBAN.valueOf( "GI75 NWBK 0000 0000 7099 453" ); 1625 assertEquals( "NWBK", iban.getBankIdentifier() ); 1626 assertNull( iban.getBranchIdentifier() ); 1627 assertTrue( iban.isSepaCountry() ); 1628 1629 bban = IBAN.valueOf( "GI", "NWBK000000007099453" ); 1630 assertEquals( iban, bban ); 1631 assertEquals( "NWBK", bban.getBankIdentifier() ); 1632 assertNull( bban.getBranchIdentifier() ); 1633 assertTrue( bban.isSepaCountry() ); 1634 1635 bban = IBAN.valueOf( "GI", "NWBK 0000 0000 7099 453" ); 1636 assertEquals( iban, bban ); 1637 assertEquals( "NWBK", bban.getBankIdentifier() ); 1638 assertNull( bban.getBranchIdentifier() ); 1639 assertTrue( bban.isSepaCountry() ); 1640 1641 iban = IBAN.valueOf( "GR1601101250000000012300695" ); 1642 assertEquals( "011", iban.getBankIdentifier() ); 1643 assertEquals( "0125", iban.getBranchIdentifier() ); 1644 assertTrue( iban.isSepaCountry() ); 1645 1646 iban = IBAN.valueOf( "GR16 0110 1250 0000 0001 2300 695" ); 1647 assertEquals( "011", iban.getBankIdentifier() ); 1648 assertEquals( "0125", iban.getBranchIdentifier() ); 1649 assertTrue( iban.isSepaCountry() ); 1650 1651 bban = IBAN.valueOf( "GR", "01101250000000012300695" ); 1652 assertEquals( iban, bban ); 1653 assertEquals( "011", bban.getBankIdentifier() ); 1654 assertEquals( "0125", bban.getBranchIdentifier() ); 1655 assertTrue( bban.isSepaCountry() ); 1656 1657 bban = IBAN.valueOf( "GR", "0110 1250 0000 0001 2300 695" ); 1658 assertEquals( iban, bban ); 1659 assertEquals( "011", bban.getBankIdentifier() ); 1660 assertEquals( "0125", bban.getBranchIdentifier() ); 1661 assertTrue( bban.isSepaCountry() ); 1662 1663 iban = IBAN.valueOf( "GT82TRAJ01020000001210029690" ); 1664 assertEquals( "TRAJ", iban.getBankIdentifier() ); 1665 assertNull( iban.getBranchIdentifier() ); 1666 assertFalse( iban.isSepaCountry() ); 1667 1668 iban = IBAN.valueOf( "GT82 TRAJ 0102 0000 0012 1002 9690" ); 1669 assertEquals( "TRAJ", iban.getBankIdentifier() ); 1670 assertNull( iban.getBranchIdentifier() ); 1671 assertFalse( iban.isSepaCountry() ); 1672 1673 bban = IBAN.valueOf( "GT", "TRAJ01020000001210029690" ); 1674 assertEquals( iban, bban ); 1675 assertEquals( "TRAJ", bban.getBankIdentifier() ); 1676 assertNull( bban.getBranchIdentifier() ); 1677 assertFalse( bban.isSepaCountry() ); 1678 1679 bban = IBAN.valueOf( "GT", "TRAJ 0102 0000 0012 1002 9690" ); 1680 assertEquals( iban, bban ); 1681 assertEquals( "TRAJ", bban.getBankIdentifier() ); 1682 assertNull( bban.getBranchIdentifier() ); 1683 assertFalse( bban.isSepaCountry() ); 1684 1685 iban = IBAN.valueOf( "HU42117730161111101800000000" ); 1686 assertEquals( "117", iban.getBankIdentifier() ); 1687 assertEquals( "7301", iban.getBranchIdentifier() ); 1688 assertTrue( iban.isSepaCountry() ); 1689 1690 iban = IBAN.valueOf( "HU42 1177 3016 1111 1018 0000 0000" ); 1691 assertEquals( "117", iban.getBankIdentifier() ); 1692 assertEquals( "7301", iban.getBranchIdentifier() ); 1693 assertTrue( iban.isSepaCountry() ); 1694 1695 bban = IBAN.valueOf( "HU", "117730161111101800000000" ); 1696 assertEquals( iban, bban ); 1697 assertEquals( "117", bban.getBankIdentifier() ); 1698 assertEquals( "7301", bban.getBranchIdentifier() ); 1699 assertTrue( bban.isSepaCountry() ); 1700 1701 bban = IBAN.valueOf( "HU", "1177 3016 1111 1018 0000 0000" ); 1702 assertEquals( iban, bban ); 1703 assertEquals( "117", bban.getBankIdentifier() ); 1704 assertEquals( "7301", bban.getBranchIdentifier() ); 1705 assertTrue( bban.isSepaCountry() ); 1706 1707 iban = IBAN.valueOf( "IS140159260076545510730339" ); 1708 assertEquals( "0159", iban.getBankIdentifier() ); 1709 assertNull( iban.getBranchIdentifier() ); 1710 assertTrue( iban.isSepaCountry() ); 1711 1712 iban = IBAN.valueOf( "IS14 0159 2600 7654 5510 7303 39" ); 1713 assertEquals( "0159", iban.getBankIdentifier() ); 1714 assertNull( iban.getBranchIdentifier() ); 1715 assertTrue( iban.isSepaCountry() ); 1716 1717 bban = IBAN.valueOf( "IS", "0159260076545510730339" ); 1718 assertEquals( iban, bban ); 1719 assertEquals( "0159", bban.getBankIdentifier() ); 1720 assertNull( bban.getBranchIdentifier() ); 1721 assertTrue( bban.isSepaCountry() ); 1722 1723 bban = IBAN.valueOf( "IS", "0159 2600 7654 5510 7303 39" ); 1724 assertEquals( iban, bban ); 1725 assertEquals( "0159", bban.getBankIdentifier() ); 1726 assertNull( bban.getBranchIdentifier() ); 1727 assertTrue( bban.isSepaCountry() ); 1728 1729 iban = IBAN.valueOf( "IE29AIBK93115212345678" ); 1730 assertEquals( "AIBK", iban.getBankIdentifier() ); 1731 assertEquals( "931152", iban.getBranchIdentifier() ); 1732 assertTrue( iban.isSepaCountry() ); 1733 1734 iban = IBAN.valueOf( "IE29 AIBK 9311 5212 3456 78" ); 1735 assertEquals( "AIBK", iban.getBankIdentifier() ); 1736 assertEquals( "931152", iban.getBranchIdentifier() ); 1737 assertTrue( iban.isSepaCountry() ); 1738 1739 bban = IBAN.valueOf( "IE", "AIBK93115212345678" ); 1740 assertEquals( iban, bban ); 1741 assertEquals( "AIBK", bban.getBankIdentifier() ); 1742 assertEquals( "931152", bban.getBranchIdentifier() ); 1743 assertTrue( bban.isSepaCountry() ); 1744 1745 bban = IBAN.valueOf( "IE", "AIBK 9311 5212 3456 78" ); 1746 assertEquals( iban, bban ); 1747 assertEquals( "AIBK", bban.getBankIdentifier() ); 1748 assertEquals( "931152", bban.getBranchIdentifier() ); 1749 assertTrue( bban.isSepaCountry() ); 1750 1751 iban = IBAN.valueOf( "IL620108000000099999999" ); 1752 assertEquals( "010", iban.getBankIdentifier() ); 1753 assertEquals( "800", iban.getBranchIdentifier() ); 1754 assertFalse( iban.isSepaCountry() ); 1755 1756 iban = IBAN.valueOf( "IL62 0108 0000 0009 9999 999" ); 1757 assertEquals( "010", iban.getBankIdentifier() ); 1758 assertEquals( "800", iban.getBranchIdentifier() ); 1759 assertFalse( iban.isSepaCountry() ); 1760 1761 bban = IBAN.valueOf( "IL", "0108000000099999999" ); 1762 assertEquals( iban, bban ); 1763 assertEquals( "010", bban.getBankIdentifier() ); 1764 assertEquals( "800", bban.getBranchIdentifier() ); 1765 assertFalse( bban.isSepaCountry() ); 1766 1767 bban = IBAN.valueOf( "IL", "0108 0000 0009 9999 999" ); 1768 assertEquals( iban, bban ); 1769 assertEquals( "010", bban.getBankIdentifier() ); 1770 assertEquals( "800", bban.getBranchIdentifier() ); 1771 assertFalse( bban.isSepaCountry() ); 1772 1773 iban = IBAN.valueOf( "IT60X0542811101000000123456" ); 1774 assertEquals( "05428", iban.getBankIdentifier() ); 1775 assertEquals( "11101", iban.getBranchIdentifier() ); 1776 assertTrue( iban.isSepaCountry() ); 1777 1778 iban = IBAN.valueOf( "IT60 X054 2811 1010 0000 0123 456" ); 1779 assertEquals( "05428", iban.getBankIdentifier() ); 1780 assertEquals( "11101", iban.getBranchIdentifier() ); 1781 assertTrue( iban.isSepaCountry() ); 1782 1783 bban = IBAN.valueOf( "IT", "X0542811101000000123456" ); 1784 assertEquals( iban, bban ); 1785 assertEquals( "05428", bban.getBankIdentifier() ); 1786 assertEquals( "11101", bban.getBranchIdentifier() ); 1787 assertTrue( bban.isSepaCountry() ); 1788 1789 bban = IBAN.valueOf( "IT", "X054 2811 1010 0000 0123 456" ); 1790 assertEquals( iban, bban ); 1791 assertEquals( "05428", bban.getBankIdentifier() ); 1792 assertEquals( "11101", bban.getBranchIdentifier() ); 1793 assertTrue( bban.isSepaCountry() ); 1794 1795 iban = IBAN.valueOf( "JO94CBJO0010000000000131000302" ); 1796 assertEquals( "CBJO", iban.getBankIdentifier() ); 1797 assertNull( iban.getBranchIdentifier() ); 1798 assertFalse( iban.isSepaCountry() ); 1799 1800 iban = IBAN.valueOf( "JO94 CBJO 0010 0000 0000 0131 0003 02" ); 1801 assertEquals( "CBJO", iban.getBankIdentifier() ); 1802 assertNull( iban.getBranchIdentifier() ); 1803 assertFalse( iban.isSepaCountry() ); 1804 1805 bban = IBAN.valueOf( "JO", "CBJO0010000000000131000302" ); 1806 assertEquals( iban, bban ); 1807 assertEquals( "CBJO", iban.getBankIdentifier() ); 1808 assertNull( iban.getBranchIdentifier() ); 1809 assertFalse( iban.isSepaCountry() ); 1810 1811 bban = IBAN.valueOf( "JO", "CBJO 0010 0000 0000 0131 0003 02" ); 1812 assertEquals( iban, bban ); 1813 assertEquals( "CBJO", iban.getBankIdentifier() ); 1814 assertNull( iban.getBranchIdentifier() ); 1815 assertFalse( iban.isSepaCountry() ); 1816 1817 iban = IBAN.valueOf( "KZ86125KZT5004100100" ); 1818 assertEquals( "125", iban.getBankIdentifier() ); 1819 assertNull( iban.getBranchIdentifier() ); 1820 assertFalse( iban.isSepaCountry() ); 1821 1822 iban = IBAN.valueOf( "KZ86 125K ZT50 0410 0100" ); 1823 assertEquals( "125", iban.getBankIdentifier() ); 1824 assertNull( iban.getBranchIdentifier() ); 1825 assertFalse( iban.isSepaCountry() ); 1826 1827 bban = IBAN.valueOf( "KZ", "125KZT5004100100" ); 1828 assertEquals( iban, bban ); 1829 assertEquals( "125", bban.getBankIdentifier() ); 1830 assertNull( bban.getBranchIdentifier() ); 1831 assertFalse( bban.isSepaCountry() ); 1832 1833 bban = IBAN.valueOf( "KZ", "125K ZT50 0410 0100" ); 1834 assertEquals( iban, bban ); 1835 assertEquals( "125", bban.getBankIdentifier() ); 1836 assertNull( bban.getBranchIdentifier() ); 1837 assertFalse( bban.isSepaCountry() ); 1838 1839 iban = IBAN.valueOf( "KW81CBKU0000000000001234560101" ); 1840 assertEquals( "CBKU", iban.getBankIdentifier() ); 1841 assertNull( iban.getBranchIdentifier() ); 1842 assertFalse( iban.isSepaCountry() ); 1843 1844 iban = IBAN.valueOf( "KW81 CBKU 0000 0000 0000 1234 5601 01" ); 1845 assertEquals( "CBKU", iban.getBankIdentifier() ); 1846 assertNull( iban.getBranchIdentifier() ); 1847 assertFalse( iban.isSepaCountry() ); 1848 1849 bban = IBAN.valueOf( "KW", "CBKU0000000000001234560101" ); 1850 assertEquals( iban, bban ); 1851 assertEquals( "CBKU", bban.getBankIdentifier() ); 1852 assertNull( bban.getBranchIdentifier() ); 1853 assertFalse( bban.isSepaCountry() ); 1854 1855 bban = IBAN.valueOf( "KW", "CBKU 0000 0000 0000 1234 5601 01" ); 1856 assertEquals( iban, bban ); 1857 assertEquals( "CBKU", bban.getBankIdentifier() ); 1858 assertNull( bban.getBranchIdentifier() ); 1859 assertFalse( bban.isSepaCountry() ); 1860 1861 iban = IBAN.valueOf( "LV80BANK0000435195001" ); 1862 assertEquals( "BANK", iban.getBankIdentifier() ); 1863 assertNull( iban.getBranchIdentifier() ); 1864 assertTrue( iban.isSepaCountry() ); 1865 1866 iban = IBAN.valueOf( "LV80 BANK 0000 4351 9500 1" ); 1867 assertEquals( "BANK", iban.getBankIdentifier() ); 1868 assertNull( iban.getBranchIdentifier() ); 1869 assertTrue( iban.isSepaCountry() ); 1870 1871 bban = IBAN.valueOf( "LV", "BANK0000435195001" ); 1872 assertEquals( iban, bban ); 1873 assertEquals( "BANK", bban.getBankIdentifier() ); 1874 assertNull( bban.getBranchIdentifier() ); 1875 assertTrue( bban.isSepaCountry() ); 1876 1877 bban = IBAN.valueOf( "LV", "BANK 0000 4351 9500 1" ); 1878 assertEquals( iban, bban ); 1879 assertEquals( "BANK", bban.getBankIdentifier() ); 1880 assertNull( bban.getBranchIdentifier() ); 1881 assertTrue( bban.isSepaCountry() ); 1882 1883 iban = IBAN.valueOf( "LB62099900000001001901229114" ); 1884 assertEquals( "0999", iban.getBankIdentifier() ); 1885 assertNull( iban.getBranchIdentifier() ); 1886 assertFalse( iban.isSepaCountry() ); 1887 1888 iban = IBAN.valueOf( "LB62 0999 0000 0001 0019 0122 9114" ); 1889 assertEquals( "0999", iban.getBankIdentifier() ); 1890 assertNull( iban.getBranchIdentifier() ); 1891 assertFalse( iban.isSepaCountry() ); 1892 1893 bban = IBAN.valueOf( "LB", "099900000001001901229114" ); 1894 assertEquals( iban, bban ); 1895 assertEquals( "0999", bban.getBankIdentifier() ); 1896 assertNull( bban.getBranchIdentifier() ); 1897 assertFalse( bban.isSepaCountry() ); 1898 1899 bban = IBAN.valueOf( "LB", "0999 0000 0001 0019 0122 9114" ); 1900 assertEquals( iban, bban ); 1901 assertEquals( "0999", bban.getBankIdentifier() ); 1902 assertNull( bban.getBranchIdentifier() ); 1903 assertFalse( bban.isSepaCountry() ); 1904 1905 iban = IBAN.valueOf( "LI21088100002324013AA" ); 1906 assertEquals( "08810", iban.getBankIdentifier() ); 1907 assertNull( iban.getBranchIdentifier() ); 1908 assertTrue( iban.isSepaCountry() ); 1909 1910 iban = IBAN.valueOf( "LI21 0881 0000 2324 013A A" ); 1911 assertEquals( "08810", iban.getBankIdentifier() ); 1912 assertNull( iban.getBranchIdentifier() ); 1913 assertTrue( iban.isSepaCountry() ); 1914 1915 bban = IBAN.valueOf( "LI", "088100002324013AA" ); 1916 assertEquals( iban, bban ); 1917 assertEquals( "08810", bban.getBankIdentifier() ); 1918 assertNull( bban.getBranchIdentifier() ); 1919 assertTrue( bban.isSepaCountry() ); 1920 1921 bban = IBAN.valueOf( "LI", "0881 0000 2324 013A A" ); 1922 assertEquals( iban, bban ); 1923 assertEquals( "08810", bban.getBankIdentifier() ); 1924 assertNull( bban.getBranchIdentifier() ); 1925 assertTrue( bban.isSepaCountry() ); 1926 1927 iban = IBAN.valueOf( "LT121000011101001000" ); 1928 assertEquals( "10000", iban.getBankIdentifier() ); 1929 assertNull( iban.getBranchIdentifier() ); 1930 assertTrue( iban.isSepaCountry() ); 1931 1932 iban = IBAN.valueOf( "LT12 1000 0111 0100 1000" ); 1933 assertEquals( "10000", iban.getBankIdentifier() ); 1934 assertNull( iban.getBranchIdentifier() ); 1935 assertTrue( iban.isSepaCountry() ); 1936 1937 bban = IBAN.valueOf( "LT", "1000011101001000" ); 1938 assertEquals( iban, bban ); 1939 assertEquals( "10000", bban.getBankIdentifier() ); 1940 assertNull( bban.getBranchIdentifier() ); 1941 assertTrue( bban.isSepaCountry() ); 1942 1943 bban = IBAN.valueOf( "LT", "1000 0111 0100 1000" ); 1944 assertEquals( iban, bban ); 1945 assertEquals( "10000", bban.getBankIdentifier() ); 1946 assertNull( bban.getBranchIdentifier() ); 1947 assertTrue( bban.isSepaCountry() ); 1948 1949 iban = IBAN.valueOf( "LU280019400644750000" ); 1950 assertEquals( "001", iban.getBankIdentifier() ); 1951 assertNull( iban.getBranchIdentifier() ); 1952 assertTrue( iban.isSepaCountry() ); 1953 1954 iban = IBAN.valueOf( "LU28 0019 4006 4475 0000" ); 1955 assertEquals( "001", iban.getBankIdentifier() ); 1956 assertNull( iban.getBranchIdentifier() ); 1957 assertTrue( iban.isSepaCountry() ); 1958 1959 bban = IBAN.valueOf( "LU", "0019400644750000" ); 1960 assertEquals( iban, bban ); 1961 assertEquals( "001", bban.getBankIdentifier() ); 1962 assertNull( bban.getBranchIdentifier() ); 1963 assertTrue( bban.isSepaCountry() ); 1964 1965 bban = IBAN.valueOf( "LU", "0019 4006 4475 0000" ); 1966 assertEquals( iban, bban ); 1967 assertEquals( "001", bban.getBankIdentifier() ); 1968 assertNull( bban.getBranchIdentifier() ); 1969 assertTrue( bban.isSepaCountry() ); 1970 1971 iban = IBAN.valueOf( "MK07250120000058984" ); 1972 assertEquals( "250", iban.getBankIdentifier() ); 1973 assertNull( iban.getBranchIdentifier() ); 1974 assertFalse( iban.isSepaCountry() ); 1975 1976 iban = IBAN.valueOf( "MK07 2501 2000 0058 984" ); 1977 assertEquals( "250", iban.getBankIdentifier() ); 1978 assertNull( iban.getBranchIdentifier() ); 1979 assertFalse( iban.isSepaCountry() ); 1980 1981 bban = IBAN.valueOf( "MK", "250120000058984" ); 1982 assertEquals( iban, bban ); 1983 assertEquals( "250", bban.getBankIdentifier() ); 1984 assertNull( bban.getBranchIdentifier() ); 1985 assertFalse( bban.isSepaCountry() ); 1986 1987 bban = IBAN.valueOf( "MK", "2501 2000 0058 984" ); 1988 assertEquals( iban, bban ); 1989 assertEquals( "250", bban.getBankIdentifier() ); 1990 assertNull( bban.getBranchIdentifier() ); 1991 assertFalse( bban.isSepaCountry() ); 1992 1993 iban = IBAN.valueOf( "MT84MALT011000012345MTLCAST001S" ); 1994 assertEquals( "MALT", iban.getBankIdentifier() ); 1995 assertEquals( "01100", iban.getBranchIdentifier() ); 1996 assertTrue( iban.isSepaCountry() ); 1997 1998 iban = IBAN.valueOf( "MT84 MALT 0110 0001 2345 MTLC AST0 01S" ); 1999 assertEquals( "MALT", iban.getBankIdentifier() ); 2000 assertEquals( "01100", iban.getBranchIdentifier() ); 2001 assertTrue( iban.isSepaCountry() ); 2002 2003 bban = IBAN.valueOf( "MT", "MALT011000012345MTLCAST001S" ); 2004 assertEquals( iban, bban ); 2005 assertEquals( "MALT", bban.getBankIdentifier() ); 2006 assertEquals( "01100", bban.getBranchIdentifier() ); 2007 assertTrue( bban.isSepaCountry() ); 2008 2009 bban = IBAN.valueOf( "MT", "MALT 0110 0001 2345 MTLC AST0 01S" ); 2010 assertEquals( iban, bban ); 2011 assertEquals( "MALT", bban.getBankIdentifier() ); 2012 assertEquals( "01100", bban.getBranchIdentifier() ); 2013 assertTrue( bban.isSepaCountry() ); 2014 2015 iban = IBAN.valueOf( "MR1300020001010000123456753" ); 2016 assertEquals( "00020", iban.getBankIdentifier() ); 2017 assertEquals( "00101", iban.getBranchIdentifier() ); 2018 assertFalse( iban.isSepaCountry() ); 2019 2020 iban = IBAN.valueOf( "MR13 0002 0001 0100 0012 3456 753" ); 2021 assertEquals( "00020", iban.getBankIdentifier() ); 2022 assertEquals( "00101", iban.getBranchIdentifier() ); 2023 assertFalse( iban.isSepaCountry() ); 2024 2025 bban = IBAN.valueOf( "MR", "00020001010000123456753" ); 2026 assertEquals( iban, bban ); 2027 assertEquals( "00020", bban.getBankIdentifier() ); 2028 assertEquals( "00101", bban.getBranchIdentifier() ); 2029 assertFalse( bban.isSepaCountry() ); 2030 2031 bban = IBAN.valueOf( "MR", "0002 0001 0100 0012 3456 753" ); 2032 assertEquals( iban, bban ); 2033 assertEquals( "00020", bban.getBankIdentifier() ); 2034 assertEquals( "00101", bban.getBranchIdentifier() ); 2035 assertFalse( bban.isSepaCountry() ); 2036 2037 iban = IBAN.valueOf( "MU17BOMM0101101030300200000MUR" ); 2038 assertEquals( "BOMM01", iban.getBankIdentifier() ); 2039 assertEquals( "01", iban.getBranchIdentifier() ); 2040 assertFalse( iban.isSepaCountry() ); 2041 2042 iban = IBAN.valueOf( "MU17 BOMM 0101 1010 3030 0200 000M UR" ); 2043 assertEquals( "BOMM01", iban.getBankIdentifier() ); 2044 assertEquals( "01", iban.getBranchIdentifier() ); 2045 assertFalse( iban.isSepaCountry() ); 2046 2047 bban = IBAN.valueOf( "MU", "BOMM0101101030300200000MUR" ); 2048 assertEquals( iban, bban ); 2049 assertEquals( "BOMM01", bban.getBankIdentifier() ); 2050 assertEquals( "01", bban.getBranchIdentifier() ); 2051 assertFalse( bban.isSepaCountry() ); 2052 2053 bban = IBAN.valueOf( "MU", "BOMM 0101 1010 3030 0200 000M UR" ); 2054 assertEquals( iban, bban ); 2055 assertEquals( "BOMM01", bban.getBankIdentifier() ); 2056 assertEquals( "01", bban.getBranchIdentifier() ); 2057 assertFalse( bban.isSepaCountry() ); 2058 2059 iban = IBAN.valueOf( "MD24AG000225100013104168" ); 2060 assertEquals( "AG", iban.getBankIdentifier() ); 2061 assertNull( iban.getBranchIdentifier() ); 2062 assertFalse( iban.isSepaCountry() ); 2063 2064 iban = IBAN.valueOf( "MD24 AG00 0225 1000 1310 4168" ); 2065 assertEquals( "AG", iban.getBankIdentifier() ); 2066 assertNull( iban.getBranchIdentifier() ); 2067 assertFalse( iban.isSepaCountry() ); 2068 2069 bban = IBAN.valueOf( "MD", "AG000225100013104168" ); 2070 assertEquals( iban, bban ); 2071 assertEquals( "AG", bban.getBankIdentifier() ); 2072 assertNull( bban.getBranchIdentifier() ); 2073 assertFalse( bban.isSepaCountry() ); 2074 2075 bban = IBAN.valueOf( "MD", "AG00 0225 1000 1310 4168" ); 2076 assertEquals( iban, bban ); 2077 assertEquals( "AG", bban.getBankIdentifier() ); 2078 assertNull( bban.getBranchIdentifier() ); 2079 assertFalse( bban.isSepaCountry() ); 2080 2081 iban = IBAN.valueOf( "MC5811222000010123456789030" ); 2082 assertEquals( "11222", iban.getBankIdentifier() ); 2083 assertEquals( "00001", iban.getBranchIdentifier() ); 2084 assertTrue( iban.isSepaCountry() ); 2085 2086 iban = IBAN.valueOf( "MC58 1122 2000 0101 2345 6789 030" ); 2087 assertEquals( "11222", iban.getBankIdentifier() ); 2088 assertEquals( "00001", iban.getBranchIdentifier() ); 2089 assertTrue( iban.isSepaCountry() ); 2090 2091 bban = IBAN.valueOf( "MC", "11222000010123456789030" ); 2092 assertEquals( iban, bban ); 2093 assertEquals( "11222", bban.getBankIdentifier() ); 2094 assertEquals( "00001", bban.getBranchIdentifier() ); 2095 assertTrue( bban.isSepaCountry() ); 2096 2097 bban = IBAN.valueOf( "MC", "1122 2000 0101 2345 6789 030" ); 2098 assertEquals( iban, bban ); 2099 assertEquals( "11222", bban.getBankIdentifier() ); 2100 assertEquals( "00001", bban.getBranchIdentifier() ); 2101 assertTrue( bban.isSepaCountry() ); 2102 2103 iban = IBAN.valueOf( "ME25505000012345678951" ); 2104 assertEquals( "505", iban.getBankIdentifier() ); 2105 assertNull( iban.getBranchIdentifier() ); 2106 assertFalse( iban.isSepaCountry() ); 2107 2108 iban = IBAN.valueOf( "ME25 5050 0001 2345 6789 51" ); 2109 assertEquals( "505", iban.getBankIdentifier() ); 2110 assertNull( iban.getBranchIdentifier() ); 2111 assertFalse( iban.isSepaCountry() ); 2112 2113 bban = IBAN.valueOf( "ME", "505000012345678951" ); 2114 assertEquals( iban, bban ); 2115 assertEquals( "505", bban.getBankIdentifier() ); 2116 assertNull( bban.getBranchIdentifier() ); 2117 assertFalse( bban.isSepaCountry() ); 2118 2119 bban = IBAN.valueOf( "ME", "5050 0001 2345 6789 51" ); 2120 assertEquals( iban, bban ); 2121 assertEquals( "505", bban.getBankIdentifier() ); 2122 assertNull( bban.getBranchIdentifier() ); 2123 assertFalse( bban.isSepaCountry() ); 2124 2125 iban = IBAN.valueOf( "NL91ABNA0417164300" ); 2126 assertEquals( "ABNA", iban.getBankIdentifier() ); 2127 assertNull( iban.getBranchIdentifier() ); 2128 assertTrue( iban.isSepaCountry() ); 2129 2130 iban = IBAN.valueOf( "NL91 ABNA 0417 1643 00" ); 2131 assertEquals( "ABNA", iban.getBankIdentifier() ); 2132 assertNull( iban.getBranchIdentifier() ); 2133 assertTrue( iban.isSepaCountry() ); 2134 2135 bban = IBAN.valueOf( "NL", "ABNA0417164300" ); 2136 assertEquals( iban, bban ); 2137 assertEquals( "ABNA", bban.getBankIdentifier() ); 2138 assertNull( bban.getBranchIdentifier() ); 2139 assertTrue( bban.isSepaCountry() ); 2140 2141 bban = IBAN.valueOf( "NL", "ABNA 0417 1643 00" ); 2142 assertEquals( iban, bban ); 2143 assertEquals( "ABNA", bban.getBankIdentifier() ); 2144 assertNull( bban.getBranchIdentifier() ); 2145 assertTrue( bban.isSepaCountry() ); 2146 2147 iban = IBAN.valueOf( "NO9386011117947" ); 2148 assertEquals( "8601", iban.getBankIdentifier() ); 2149 assertNull( iban.getBranchIdentifier() ); 2150 assertTrue( iban.isSepaCountry() ); 2151 2152 iban = IBAN.valueOf( "NO93 8601 1117 947" ); 2153 assertEquals( "8601", iban.getBankIdentifier() ); 2154 assertNull( iban.getBranchIdentifier() ); 2155 assertTrue( iban.isSepaCountry() ); 2156 2157 bban = IBAN.valueOf( "NO", "86011117947" ); 2158 assertEquals( iban, bban ); 2159 assertEquals( "8601", bban.getBankIdentifier() ); 2160 assertNull( bban.getBranchIdentifier() ); 2161 assertTrue( bban.isSepaCountry() ); 2162 2163 bban = IBAN.valueOf( "NO", "8601 1117 947" ); 2164 assertEquals( iban, bban ); 2165 assertEquals( "8601", bban.getBankIdentifier() ); 2166 assertNull( bban.getBranchIdentifier() ); 2167 assertTrue( bban.isSepaCountry() ); 2168 2169 iban = IBAN.valueOf( "PK36SCBL0000001123456702" ); 2170 assertEquals( "SCBL", iban.getBankIdentifier() ); 2171 assertNull( iban.getBranchIdentifier() ); 2172 assertFalse( iban.isSepaCountry() ); 2173 2174 iban = IBAN.valueOf( "PK36 SCBL 0000 0011 2345 6702" ); 2175 assertEquals( "SCBL", iban.getBankIdentifier() ); 2176 assertNull( iban.getBranchIdentifier() ); 2177 assertFalse( iban.isSepaCountry() ); 2178 2179 bban = IBAN.valueOf( "PK", "SCBL0000001123456702" ); 2180 assertEquals( iban, bban ); 2181 assertEquals( "SCBL", bban.getBankIdentifier() ); 2182 assertNull( bban.getBranchIdentifier() ); 2183 assertFalse( bban.isSepaCountry() ); 2184 2185 bban = IBAN.valueOf( "PK", "SCBL 0000 0011 2345 6702" ); 2186 assertEquals( iban, bban ); 2187 assertEquals( "SCBL", bban.getBankIdentifier() ); 2188 assertNull( bban.getBranchIdentifier() ); 2189 assertFalse( bban.isSepaCountry() ); 2190 2191 iban = IBAN.valueOf( "PS92PALS000000000400123456702" ); 2192 assertEquals( "PALS", iban.getBankIdentifier() ); 2193 assertNull( iban.getBranchIdentifier() ); 2194 assertFalse( iban.isSepaCountry() ); 2195 2196 iban = IBAN.valueOf( "PS92 PALS 0000 0000 0400 1234 5670 2" ); 2197 assertEquals( "PALS", iban.getBankIdentifier() ); 2198 assertNull( iban.getBranchIdentifier() ); 2199 assertFalse( iban.isSepaCountry() ); 2200 2201 bban = IBAN.valueOf( "PS", "PALS000000000400123456702" ); 2202 assertEquals( iban, bban ); 2203 assertEquals( "PALS", bban.getBankIdentifier() ); 2204 assertNull( bban.getBranchIdentifier() ); 2205 assertFalse( bban.isSepaCountry() ); 2206 2207 bban = IBAN.valueOf( "PS", "PALS 0000 0000 0400 1234 5670 2" ); 2208 assertEquals( iban, bban ); 2209 assertEquals( "PALS", bban.getBankIdentifier() ); 2210 assertNull( bban.getBranchIdentifier() ); 2211 assertFalse( bban.isSepaCountry() ); 2212 2213 iban = IBAN.valueOf( "PL61109010140000071219812874" ); 2214 assertEquals( "10901014", iban.getBankIdentifier() ); 2215 assertNull( iban.getBranchIdentifier() ); 2216 assertTrue( iban.isSepaCountry() ); 2217 2218 iban = IBAN.valueOf( "PL61 1090 1014 0000 0712 1981 2874" ); 2219 assertEquals( "10901014", iban.getBankIdentifier() ); 2220 assertNull( iban.getBranchIdentifier() ); 2221 assertTrue( iban.isSepaCountry() ); 2222 2223 bban = IBAN.valueOf( "PL", "109010140000071219812874" ); 2224 assertEquals( iban, bban ); 2225 assertEquals( "10901014", bban.getBankIdentifier() ); 2226 assertNull( bban.getBranchIdentifier() ); 2227 assertTrue( bban.isSepaCountry() ); 2228 2229 bban = IBAN.valueOf( "PL", "1090 1014 0000 0712 1981 2874" ); 2230 assertEquals( iban, bban ); 2231 assertEquals( "10901014", bban.getBankIdentifier() ); 2232 assertNull( bban.getBranchIdentifier() ); 2233 assertTrue( bban.isSepaCountry() ); 2234 2235 iban = IBAN.valueOf( "PT50000201231234567890154" ); 2236 assertEquals( "0002", iban.getBankIdentifier() ); 2237// assertEquals( "0123", iban.getBranchIdentifier() ); As of 2007.47, PT no longer provides a branch identifier. 2238 assertNull( iban.getBranchIdentifier() ); 2239 assertTrue( iban.isSepaCountry() ); 2240 2241 iban = IBAN.valueOf( "PT50 0002 0123 1234 5678 9015 4" ); 2242 assertEquals( "0002", iban.getBankIdentifier() ); 2243// assertEquals( "0123", iban.getBranchIdentifier() ); As of 2007.47, PT no longer provides a branch identifier. 2244 assertNull( iban.getBranchIdentifier() ); 2245 assertTrue( iban.isSepaCountry() ); 2246 2247 bban = IBAN.valueOf( "PT", "000201231234567890154" ); 2248 assertEquals( iban, bban ); 2249 assertEquals( "0002", bban.getBankIdentifier() ); 2250// assertEquals( "0123", bban.getBranchIdentifier() ); As of 2007.47, PT no longer provides a branch identifier. 2251 assertNull( bban.getBranchIdentifier() ); 2252 assertTrue( bban.isSepaCountry() ); 2253 2254 bban = IBAN.valueOf( "PT", "0002 0123 1234 5678 9015 4" ); 2255 assertEquals( iban, bban ); 2256 assertEquals( "0002", bban.getBankIdentifier() ); 2257// assertEquals( "0123", bban.getBranchIdentifier() ); As of 2007.47, PT no longer provides a branch identifier. 2258 assertNull( bban.getBranchIdentifier() ); 2259 assertTrue( bban.isSepaCountry() ); 2260 2261 iban = IBAN.valueOf( "QA58DOHB00001234567890ABCDEFG" ); 2262 assertEquals( "DOHB", iban.getBankIdentifier() ); 2263 assertNull( iban.getBranchIdentifier() ); 2264 assertFalse( iban.isSepaCountry() ); 2265 2266 iban = IBAN.valueOf( "QA58 DOHB 0000 1234 5678 90AB CDEF G" ); 2267 assertEquals( "DOHB", iban.getBankIdentifier() ); 2268 assertNull( iban.getBranchIdentifier() ); 2269 assertFalse( iban.isSepaCountry() ); 2270 2271 bban = IBAN.valueOf( "QA", "DOHB00001234567890ABCDEFG" ); 2272 assertEquals( iban, bban ); 2273 assertEquals( "DOHB", bban.getBankIdentifier() ); 2274 assertNull( bban.getBranchIdentifier() ); 2275 assertFalse( bban.isSepaCountry() ); 2276 2277 bban = IBAN.valueOf( "QA", "DOHB 0000 1234 5678 90AB CDEF G" ); 2278 assertEquals( iban, bban ); 2279 assertEquals( "DOHB", bban.getBankIdentifier() ); 2280 assertNull( bban.getBranchIdentifier() ); 2281 assertFalse( bban.isSepaCountry() ); 2282 2283 iban = IBAN.valueOf( "RO49AAAA1B31007593840000" ); 2284 assertEquals( "AAAA", iban.getBankIdentifier() ); 2285 assertNull( iban.getBranchIdentifier() ); 2286 assertTrue( iban.isSepaCountry() ); 2287 2288 iban = IBAN.valueOf( "RO49 AAAA 1B31 0075 9384 0000" ); 2289 assertEquals( "AAAA", iban.getBankIdentifier() ); 2290 assertNull( iban.getBranchIdentifier() ); 2291 assertTrue( iban.isSepaCountry() ); 2292 2293 bban = IBAN.valueOf( "RO", "AAAA1B31007593840000" ); 2294 assertEquals( iban, bban ); 2295 assertEquals( "AAAA", bban.getBankIdentifier() ); 2296 assertNull( bban.getBranchIdentifier() ); 2297 assertTrue( bban.isSepaCountry() ); 2298 2299 bban = IBAN.valueOf( "RO", "AAAA 1B31 0075 9384 0000" ); 2300 assertEquals( iban, bban ); 2301 assertEquals( "AAAA", bban.getBankIdentifier() ); 2302 assertNull( bban.getBranchIdentifier() ); 2303 assertTrue( bban.isSepaCountry() ); 2304 2305 iban = IBAN.valueOf( "SM86U0322509800000000270100" ); 2306 assertEquals( "03225", iban.getBankIdentifier() ); 2307 assertEquals( "09800", iban.getBranchIdentifier() ); 2308 assertFalse( iban.isSepaCountry() ); 2309 2310 iban = IBAN.valueOf( "SM86 U032 2509 8000 0000 0270 100" ); 2311 assertEquals( "03225", iban.getBankIdentifier() ); 2312 assertEquals( "09800", iban.getBranchIdentifier() ); 2313 assertFalse( iban.isSepaCountry() ); 2314 2315 bban = IBAN.valueOf( "SM", "U0322509800000000270100" ); 2316 assertEquals( iban, bban ); 2317 assertEquals( "03225", bban.getBankIdentifier() ); 2318 assertEquals( "09800", bban.getBranchIdentifier() ); 2319 assertFalse( bban.isSepaCountry() ); 2320 2321 bban = IBAN.valueOf( "SM", "U032 2509 8000 0000 0270 100" ); 2322 assertEquals( iban, bban ); 2323 assertEquals( "03225", bban.getBankIdentifier() ); 2324 assertEquals( "09800", bban.getBranchIdentifier() ); 2325 assertFalse( bban.isSepaCountry() ); 2326 2327 iban = IBAN.valueOf( "SA0380000000608010167519" ); 2328 assertEquals( "80", iban.getBankIdentifier() ); 2329 assertNull( iban.getBranchIdentifier() ); 2330 assertFalse( iban.isSepaCountry() ); 2331 2332 iban = IBAN.valueOf( "SA03 8000 0000 6080 1016 7519" ); 2333 assertEquals( "80", iban.getBankIdentifier() ); 2334 assertNull( iban.getBranchIdentifier() ); 2335 assertFalse( iban.isSepaCountry() ); 2336 2337 bban = IBAN.valueOf( "SA", "80000000608010167519" ); 2338 assertEquals( iban, bban ); 2339 assertEquals( "80", bban.getBankIdentifier() ); 2340 assertNull( bban.getBranchIdentifier() ); 2341 assertFalse( bban.isSepaCountry() ); 2342 2343 bban = IBAN.valueOf( "SA", "8000 0000 6080 1016 7519" ); 2344 assertEquals( iban, bban ); 2345 assertEquals( "80", bban.getBankIdentifier() ); 2346 assertNull( bban.getBranchIdentifier() ); 2347 assertFalse( bban.isSepaCountry() ); 2348 2349 iban = IBAN.valueOf( "RS35260005601001611379" ); 2350 assertEquals( "260", iban.getBankIdentifier() ); 2351 assertNull( iban.getBranchIdentifier() ); 2352 assertFalse( iban.isSepaCountry() ); 2353 2354 iban = IBAN.valueOf( "RS35 2600 0560 1001 6113 79" ); 2355 assertEquals( "260", iban.getBankIdentifier() ); 2356 assertNull( iban.getBranchIdentifier() ); 2357 assertFalse( iban.isSepaCountry() ); 2358 2359 bban = IBAN.valueOf( "RS", "260005601001611379" ); 2360 assertEquals( iban, bban ); 2361 assertEquals( "260", bban.getBankIdentifier() ); 2362 assertNull( bban.getBranchIdentifier() ); 2363 assertFalse( bban.isSepaCountry() ); 2364 2365 bban = IBAN.valueOf( "RS", "2600 0560 1001 6113 79" ); 2366 assertEquals( iban, bban ); 2367 assertEquals( "260", bban.getBankIdentifier() ); 2368 assertNull( bban.getBranchIdentifier() ); 2369 assertFalse( bban.isSepaCountry() ); 2370 2371 iban = IBAN.valueOf( "SK3112000000198742637541" ); 2372 assertEquals( "1200", iban.getBankIdentifier() ); 2373 assertNull( iban.getBranchIdentifier() ); 2374 assertTrue( iban.isSepaCountry() ); 2375 2376 iban = IBAN.valueOf( "SK31 1200 0000 1987 4263 7541" ); 2377 assertEquals( "1200", iban.getBankIdentifier() ); 2378 assertNull( iban.getBranchIdentifier() ); 2379 assertTrue( iban.isSepaCountry() ); 2380 2381 bban = IBAN.valueOf( "SK", "12000000198742637541" ); 2382 assertEquals( iban, bban ); 2383 assertEquals( "1200", bban.getBankIdentifier() ); 2384 assertNull( bban.getBranchIdentifier() ); 2385 assertTrue( bban.isSepaCountry() ); 2386 2387 bban = IBAN.valueOf( "SK", "1200 0000 1987 4263 7541" ); 2388 assertEquals( iban, bban ); 2389 assertEquals( "1200", bban.getBankIdentifier() ); 2390 assertNull( bban.getBranchIdentifier() ); 2391 assertTrue( bban.isSepaCountry() ); 2392 2393 iban = IBAN.valueOf( "SI56263300012039086" ); 2394 assertEquals( "26", iban.getBankIdentifier() ); 2395 assertEquals( "330", iban.getBranchIdentifier() ); 2396 assertTrue( iban.isSepaCountry() ); 2397 2398 iban = IBAN.valueOf( "SI56 2633 0001 2039 086" ); 2399 assertEquals( "26", iban.getBankIdentifier() ); 2400 assertEquals( "330", iban.getBranchIdentifier() ); 2401 assertTrue( iban.isSepaCountry() ); 2402 2403 bban = IBAN.valueOf( "SI", "263300012039086" ); 2404 assertEquals( iban, bban ); 2405 assertEquals( "26", bban.getBankIdentifier() ); 2406 assertEquals( "330", bban.getBranchIdentifier() ); 2407 assertTrue( bban.isSepaCountry() ); 2408 2409 bban = IBAN.valueOf( "SI", "2633 0001 2039 086" ); 2410 assertEquals( iban, bban ); 2411 assertEquals( "26", bban.getBankIdentifier() ); 2412 assertEquals( "330", bban.getBranchIdentifier() ); 2413 assertTrue( bban.isSepaCountry() ); 2414 2415 iban = IBAN.valueOf( "ES9121000418450200051332" ); 2416 assertEquals( "2100", iban.getBankIdentifier() ); 2417 assertEquals( "0418", iban.getBranchIdentifier() ); 2418 assertTrue( iban.isSepaCountry() ); 2419 2420 iban = IBAN.valueOf( "ES91 2100 0418 4502 0005 1332" ); 2421 assertEquals( "2100", iban.getBankIdentifier() ); 2422 assertEquals( "0418", iban.getBranchIdentifier() ); 2423 assertTrue( iban.isSepaCountry() ); 2424 2425 bban = IBAN.valueOf( "ES", "21000418450200051332" ); 2426 assertEquals( iban, bban ); 2427 assertEquals( "2100", bban.getBankIdentifier() ); 2428 assertEquals( "0418", bban.getBranchIdentifier() ); 2429 assertTrue( bban.isSepaCountry() ); 2430 2431 bban = IBAN.valueOf( "ES", "2100 0418 4502 0005 1332" ); 2432 assertEquals( iban, bban ); 2433 assertEquals( "2100", bban.getBankIdentifier() ); 2434 assertEquals( "0418", bban.getBranchIdentifier() ); 2435 assertTrue( bban.isSepaCountry() ); 2436 2437 iban = IBAN.valueOf( "SE4550000000058398257466" ); 2438 assertEquals( "500", iban.getBankIdentifier() ); 2439 assertNull( iban.getBranchIdentifier() ); 2440 assertTrue( iban.isSepaCountry() ); 2441 2442 iban = IBAN.valueOf( "SE45 5000 0000 0583 9825 7466" ); 2443 assertEquals( "500", iban.getBankIdentifier() ); 2444 assertNull( iban.getBranchIdentifier() ); 2445 assertTrue( iban.isSepaCountry() ); 2446 2447 bban = IBAN.valueOf( "SE", "50000000058398257466" ); 2448 assertEquals( iban, bban ); 2449 assertEquals( "500", bban.getBankIdentifier() ); 2450 assertNull( bban.getBranchIdentifier() ); 2451 assertTrue( bban.isSepaCountry() ); 2452 2453 bban = IBAN.valueOf( "SE", "5000 0000 0583 9825 7466" ); 2454 assertEquals( iban, bban ); 2455 assertEquals( "500", bban.getBankIdentifier() ); 2456 assertNull( bban.getBranchIdentifier() ); 2457 assertTrue( bban.isSepaCountry() ); 2458 2459 iban = IBAN.valueOf( "CH9300762011623852957" ); 2460 assertEquals( "00762", iban.getBankIdentifier() ); 2461 assertNull( iban.getBranchIdentifier() ); 2462 assertTrue( iban.isSepaCountry() ); 2463 2464 iban = IBAN.valueOf( "CH93 0076 2011 6238 5295 7" ); 2465 assertEquals( "00762", iban.getBankIdentifier() ); 2466 assertNull( iban.getBranchIdentifier() ); 2467 assertTrue( iban.isSepaCountry() ); 2468 2469 bban = IBAN.valueOf( "CH", "00762011623852957" ); 2470 assertEquals( iban, bban ); 2471 assertEquals( "00762", bban.getBankIdentifier() ); 2472 assertNull( bban.getBranchIdentifier() ); 2473 assertTrue( bban.isSepaCountry() ); 2474 2475 bban = IBAN.valueOf( "CH", "0076 2011 6238 5295 7" ); 2476 assertEquals( iban, bban ); 2477 assertEquals( "00762", bban.getBankIdentifier() ); 2478 assertNull( bban.getBranchIdentifier() ); 2479 assertTrue( bban.isSepaCountry() ); 2480 2481 iban = IBAN.valueOf( "TN5910006035183598478831" ); 2482 assertEquals( "10", iban.getBankIdentifier() ); 2483 assertEquals( "006", iban.getBranchIdentifier() ); 2484 assertFalse( iban.isSepaCountry() ); 2485 2486 iban = IBAN.valueOf( "TN59 1000 6035 1835 9847 8831" ); 2487 assertEquals( "10", iban.getBankIdentifier() ); 2488 assertEquals( "006", iban.getBranchIdentifier() ); 2489 assertFalse( iban.isSepaCountry() ); 2490 2491 bban = IBAN.valueOf( "TN", "10006035183598478831" ); 2492 assertEquals( iban, bban ); 2493 assertEquals( "10", bban.getBankIdentifier() ); 2494 assertEquals( "006", bban.getBranchIdentifier() ); 2495 assertFalse( bban.isSepaCountry() ); 2496 2497 bban = IBAN.valueOf( "TN", "1000 6035 1835 9847 8831" ); 2498 assertEquals( iban, bban ); 2499 assertEquals( "10", bban.getBankIdentifier() ); 2500 assertEquals( "006", bban.getBranchIdentifier() ); 2501 assertFalse( bban.isSepaCountry() ); 2502 2503 iban = IBAN.valueOf( "TR330006100519786457841326" ); 2504 assertEquals( "00061", iban.getBankIdentifier() ); 2505 assertNull( iban.getBranchIdentifier() ); 2506 assertFalse( iban.isSepaCountry() ); 2507 2508 iban = IBAN.valueOf( "TR33 0006 1005 1978 6457 8413 26" ); 2509 assertEquals( "00061", iban.getBankIdentifier() ); 2510 assertNull( iban.getBranchIdentifier() ); 2511 assertFalse( iban.isSepaCountry() ); 2512 2513 bban = IBAN.valueOf( "TR", "0006100519786457841326" ); 2514 assertEquals( iban, bban ); 2515 assertEquals( "00061", bban.getBankIdentifier() ); 2516 assertNull( bban.getBranchIdentifier() ); 2517 assertFalse( bban.isSepaCountry() ); 2518 2519 bban = IBAN.valueOf( "TR", "0006 1005 1978 6457 8413 26" ); 2520 assertEquals( iban, bban ); 2521 assertEquals( "00061", bban.getBankIdentifier() ); 2522 assertNull( bban.getBranchIdentifier() ); 2523 assertFalse( bban.isSepaCountry() ); 2524 2525 iban = IBAN.valueOf( "AE070331234567890123456" ); 2526 assertEquals( "033", iban.getBankIdentifier() ); 2527 assertNull( iban.getBranchIdentifier() ); 2528 assertFalse( iban.isSepaCountry() ); 2529 2530 iban = IBAN.valueOf( "AE07 0331 2345 6789 0123 456" ); 2531 assertEquals( "033", iban.getBankIdentifier() ); 2532 assertNull( iban.getBranchIdentifier() ); 2533 assertFalse( iban.isSepaCountry() ); 2534 2535 bban = IBAN.valueOf( "AE", "0331234567890123456" ); 2536 assertEquals( iban, bban ); 2537 assertEquals( "033", bban.getBankIdentifier() ); 2538 assertNull( bban.getBranchIdentifier() ); 2539 assertFalse( bban.isSepaCountry() ); 2540 2541 bban = IBAN.valueOf( "AE", "0331 2345 6789 0123 456" ); 2542 assertEquals( iban, bban ); 2543 assertEquals( "033", bban.getBankIdentifier() ); 2544 assertNull( bban.getBranchIdentifier() ); 2545 assertFalse( bban.isSepaCountry() ); 2546 2547 iban = IBAN.valueOf( "GB29NWBK60161331926819" ); 2548 assertEquals( "NWBK", iban.getBankIdentifier() ); 2549 assertEquals( "601613", iban.getBranchIdentifier() ); 2550 assertTrue( iban.isSepaCountry() ); 2551 2552 iban = IBAN.valueOf( "GB29 NWBK 6016 1331 9268 19" ); 2553 assertEquals( "NWBK", iban.getBankIdentifier() ); 2554 assertEquals( "601613", iban.getBranchIdentifier() ); 2555 assertTrue( iban.isSepaCountry() ); 2556 2557 bban = IBAN.valueOf( "GB", "NWBK60161331926819" ); 2558 assertEquals( iban, bban ); 2559 assertEquals( "NWBK", bban.getBankIdentifier() ); 2560 assertEquals( "601613", bban.getBranchIdentifier() ); 2561 assertTrue( bban.isSepaCountry() ); 2562 2563 bban = IBAN.valueOf( "GB", "NWBK 6016 1331 9268 19" ); 2564 assertEquals( iban, bban ); 2565 assertEquals( "NWBK", bban.getBankIdentifier() ); 2566 assertEquals( "601613", bban.getBranchIdentifier() ); 2567 assertTrue( bban.isSepaCountry() ); 2568 2569 bban = IBAN.valueOf( "JE", "NWBK 6016 1331 9268 19" ); 2570 assertEquals( iban, bban ); 2571 assertEquals( "JE", bban.getCountryCode() ); 2572 assertEquals( "NWBK", bban.getBankIdentifier() ); 2573 assertEquals( "601613", bban.getBranchIdentifier() ); 2574 assertFalse( bban.isSepaCountry() ); 2575 2576 bban = IBAN.valueOf( "GG", "NWBK 6016 1331 9268 19" ); 2577 assertEquals( iban, bban ); 2578 assertEquals( "GG", bban.getCountryCode() ); 2579 assertEquals( "NWBK", bban.getBankIdentifier() ); 2580 assertEquals( "601613", bban.getBranchIdentifier() ); 2581 assertFalse( bban.isSepaCountry() ); 2582 2583 bban = IBAN.valueOf( "IM", "NWBK 6016 1331 9268 19" ); 2584 assertEquals( iban, bban ); 2585 assertEquals( "IM", bban.getCountryCode() ); 2586 assertEquals( "NWBK", bban.getBankIdentifier() ); 2587 assertEquals( "601613", bban.getBranchIdentifier() ); 2588 assertFalse( bban.isSepaCountry() ); 2589 2590 iban = IBAN.valueOf( "VG96VPVG0000012345678901" ); 2591 assertEquals( "VPVG", iban.getBankIdentifier() ); 2592 assertNull( iban.getBranchIdentifier() ); 2593 assertFalse( iban.isSepaCountry() ); 2594 2595 iban = IBAN.valueOf( "VG96 VPVG 0000 0123 4567 8901" ); 2596 assertEquals( "VPVG", iban.getBankIdentifier() ); 2597 assertNull( iban.getBranchIdentifier() ); 2598 assertFalse( iban.isSepaCountry() ); 2599 2600 bban = IBAN.valueOf( "VG", "VPVG0000012345678901" ); 2601 assertEquals( iban, bban ); 2602 assertEquals( "VPVG", bban.getBankIdentifier() ); 2603 assertNull( bban.getBranchIdentifier() ); 2604 assertFalse( bban.isSepaCountry() ); 2605 2606 bban = IBAN.valueOf( "VG", "VPVG 0000 0123 4567 8901" ); 2607 assertEquals( iban, bban ); 2608 assertEquals( "VPVG", bban.getBankIdentifier() ); 2609 assertNull( bban.getBranchIdentifier() ); 2610 assertFalse( bban.isSepaCountry() ); 2611 } 2612 2613 @Test public void Serializable() throws Exception 2614 { 2615 final ObjectOutputStream out = new ObjectOutputStream( new ByteArrayOutputStream() ); 2616 out.writeObject( IBAN.valueOf( "AL47212110090000000235698741" ) ); 2617 out.close(); 2618 2619 final ObjectInputStream in = new ObjectInputStream( this.getClass().getResourceAsStream( "IBAN.ser" ) ); 2620 final IBAN iban = (IBAN) in.readObject(); 2621 in.close(); 2622 2623 System.out.println( iban.toString() ); 2624 assertEquals( IBAN.valueOf( "AL47212110090000000235698741" ), iban ); 2625 assertEquals( "AL47212110090000000235698741", iban.toString( IbanFormat.ELECTRONIC ) ); 2626 assertEquals( "AL47 2121 1009 0000 0002 3569 8741", iban.toString( IbanFormat.PRINT ) ); 2627 assertEquals( "212", iban.getBankIdentifier() ); 2628 assertEquals( "1100", iban.getBranchIdentifier() ); 2629 assertFalse( iban.isSepaCountry() ); 2630 } 2631// 2632// public static void main( final String... arguments ) throws Exception 2633// { 2634// final ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream( "IBAN.ser" ) ); 2635// out.writeObject( IBAN.valueOf( "AL47212110090000000235698741" ) ); 2636// out.close(); 2637// } 2638// 2639 // SECTION-END 2640 // SECTION-START[Constructors] 2641 // <editor-fold defaultstate="collapsed" desc=" Generated Constructors "> 2642 /** Creates a new {@code IbanTest} instance. */ 2643 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" ) 2644 public IbanTest() 2645 { 2646 // SECTION-START[Default Constructor] 2647 super(); 2648 // SECTION-END 2649 } 2650 // </editor-fold> 2651 // SECTION-END 2652 // SECTION-START[Dependencies] 2653 // SECTION-END 2654 // SECTION-START[Properties] 2655 // SECTION-END 2656 // SECTION-START[Messages] 2657 // SECTION-END 2658 2659}