package Ġcom . stripe . android Ċ Ċ import Ġcom . stripe . android . model . Card Brand Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertTrue Ċ Ċ /** Ċ Ġ* ĠTest Ġclass Ġfor Ġ[ Card Utils ]. Ċ Ġ*/ Ċ class ĠCard UtilsTest Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Possible Card Type _ with Empty Card _ returns Unknown () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . Unknown , ĠCard Utils . get Possible Card Type (" ĠĠ Ġ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Possible Card Type _ with Null Card Number _ returns Unknown () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . Unknown , ĠCard Utils . get Possible Card Type ( null )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Possible Card Type _ with Vis a Prefix _ returns Vis a () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . Vis a , ĠCard Utils . get Possible Card Type (" 4 8 9 9 Ġ 9 9 ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . Vis a , ĠCard Utils . get Possible Card Type (" 4 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Possible Card Type _ with A mex Prefix _ returns A mex () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . American Express , ĠCard Utils . get Possible Card Type (" 3 4 5 ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . American Express , ĠCard Utils . get Possible Card Type (" 3 7 9 9 9 9 9 9 9 9 9 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Possible Card Type _ with J CB Prefix _ returns J CB () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . J CB , ĠCard Utils . get Possible Card Type (" 3 5 3 5 Ġ 3 5 3 5 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Possible Card Type _ with Master Card Prefix _ returns Master Card () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . Master Card , ĠCard Utils . get Possible Card Type (" 2 2 2 2 Ġ 4 5 2 ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . Master Card , ĠCard Utils . get Possible Card Type (" 5 0 5 0 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Possible Card Type _ with Din ers Club Prefix _ returns Din ers Club () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . Din ers Club , ĠCard Utils . get Possible Card Type (" 3 0 3 9 2 2 Ġ 2 2 3 4 ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . Din ers Club , ĠCard Utils . get Possible Card Type (" 3 6 7 7 8 Ġ 9 0 9 8 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Possible Card Type _ with Discover Prefix _ returns Discover () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . Discover , ĠCard Utils . get Possible Card Type (" 6 0 3 5 5 ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . Discover , ĠCard Utils . get Possible Card Type (" 6 4 3 3 Ġ 8 Ġ 9 0 9 2 3 ")) ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġone Ġhas Ġtoo Ġmany Ġnumbers Ġon Ġpurpose . ĠChecking Ġfor Ġlength Ġis Ġnot Ġpart Ġof Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġfunction Ġunder Ġtest . ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . Discover , ĠCard Utils . get Possible Card Type (" 6 5 2 3 4 5 2 3 0 9 2 0 9 3 4 0 2 9 3 4 2 3 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Possible Card Type _ with Union Pay Prefix _ returns Union Pay () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . Union Pay , ĠCard Utils . get Possible Card Type (" 6 2 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Possible Card Type _ with N ons ense Number _ returns Unknown () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . Unknown , ĠCard Utils . get Possible Card Type (" 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . Unknown , ĠCard Utils . get Possible Card Type (" 9 9 9 9 Ġ 9 9 9 9 Ġ 9 9 9 9 Ġ 9 9 9 9 ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Card Brand . Unknown , ĠCard Utils . get Possible Card Type (" 3 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Card Length _ when Valid Vis a Number _ returns True () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Card Utils . isValid Card Length (" 4 2 4 2 4 2 4 2 4 2 4 2 4 2 4 2 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Card Length _ when Valid J CB Number _ returns True () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Card Utils . isValid Card Length (" 3 5 3 0 1 1 1 3 3 3 3 0 0 0 0 0 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Card Length _ when Valid Discover _ returns True () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Card Utils . isValid Card Length (" 6 0 1 1 0 0 0 9 9 0 1 3 9 4 2 4 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Card Length _ when Valid Din ers Club _ returns True () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Card Utils . isValid Card Length (" 3 0 5 6 9 3 0 9 0 2 5 9 0 4 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Card Length _ when Valid Master Card _ returns True () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Card Utils . isValid Card Length (" 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Card Length _ when Valid Am Ex _ returns True () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Card Utils . isValid Card Length (" 3 7 8 2 8 2 2 4 6 3 1 0 0 0 5 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Card Length _ when Valid Union Pay _ returns True () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Card Utils . isValid Card Length (" 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 5 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Card Length _ when Null _ returns False () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( Card Utils . isValid Card Length ( null )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Card Length _ when Vis a Style Number But Din ers Club Length _ returns False () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( Card Utils . isValid Card Length (" 4 2 4 2 4 2 4 2 4 2 4 2 4 2 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Card Length _ when Vis a Style Number But Am Ex Length _ returns False () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( Card Utils . isValid Card Length (" 4 2 4 2 4 2 4 2 4 2 4 2 4 2 4 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Card Length _ when Am Ex Style Number But Vis a Length _ returns False () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( Card Utils . isValid Card Length (" 3 7 8 2 8 2 2 4 6 3 1 0 0 0 5 0 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Card Length _ when Am Ex Style Number But Din ers Club Length _ returns False () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( Card Utils . isValid Card Length (" 3 7 8 2 8 2 2 4 6 3 1 0 0 0 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Card Length _ when Din ers Club Style Number But Vis a Length _ returns False () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( Card Utils . isValid Card Length (" 3 0 5 6 9 3 0 9 0 2 5 9 0 4 0 0 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Card Length _ when Din ers Club Style Number Style Number But A mex Length _ returns False () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( Card Utils . isValid Card Length (" 3 0 5 6 9 3 0 9 0 2 5 9 0 4 0 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Lu hn Number _ when Valid Vis a Number _ returns True () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Card Utils . isValid Lu hn Number (" 4 2 4 2 4 2 4 2 4 2 4 2 4 2 4 2 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Lu hn Number _ when Valid J CB Number _ returns True () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Card Utils . isValid Lu hn Number (" 3 5 3 0 1 1 1 3 3 3 3 0 0 0 0 0 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Lu hn Number _ when Valid Discover _ returns True () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Card Utils . isValid Lu hn Number (" 6 0 1 1 0 0 0 9 9 0 1 3 9 4 2 4 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Lu hn Number _ when Valid Din ers Club _ returns True () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Card Utils . isValid Lu hn Number (" 3 0 5 6 9 3 0 9 0 2 5 9 0 4 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Lu hn Number _ when Valid Master Card _ returns True () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Card Utils . isValid Lu hn Number (" 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Lu hn Number _ when Valid Am Ex _ returns True () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( Card Utils . isValid Lu hn Number (" 3 7 8 2 8 2 2 4 6 3 1 0 0 0 5 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid L un h Number _ when Number Is Invalid _ returns False () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( Card Utils . isValid Lu hn Number (" 4 2 4 2 4 2 4 2 4 2 4 2 4 2 4 3 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Lu hn Number _ when Input IsNull _ returns False () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( Card Utils . isValid Lu hn Number ( null )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisValid Lu hn Number _ when Input IsNot Numeric _ returns False () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( Card Utils . isValid Lu hn Number (" abcdef g ")) ĊĠĠĠĠĠĠĠ Ġ// ĠNote : Ġit Ġis Ġnot Ġthe Ġjob Ġof Ġthis Ġfunction Ġto Ġde - space Ġthe Ġcard Ġnumber , Ġnor Ġde - hy phen Ġit ĊĠĠĠĠĠĠĠ ĠassertFalse ( Card Utils . isValid Lu hn Number (" 4 2 4 2 Ġ 4 2 4 2 Ġ 4 2 4 2 Ġ 4 2 4 2 ")) ĊĠĠĠĠĠĠĠ ĠassertFalse ( Card Utils . isValid Lu hn Number (" 4 2 4 2 - 4 2 4 2 - 4 2 4 2 - 4 2 4 2 ")) ĊĠĠĠ Ġ} Ċ } Ċ