             XCTAssertValid(AmericanExpress().validateNumber(Number(rawValue: $0)))
         })
         
+        print("Validate China UnionPay")
+        self.validChinaUnionPayNumbers.forEach({
+            XCTAssertEqual(CardTypeRegister.sharedCardTypeRegister.cardTypeForNumber(Number(rawValue: $0)).name, ChinaUnionPay().name)
+            XCTAssertValid(ChinaUnionPay().validateNumber(Number(rawValue: $0)))
+        })
+        
         print("Validate Diners Club")
         self.validDinersClubNumbers.forEach({
             XCTAssertEqual(CardTypeRegister.sharedCardTypeRegister.cardTypeForNumber(Number(rawValue: $0)).name, DinersClub().name)

        let tooLongDiscover = "60111111111111111"
        let tooLongJCB = "35301113333000000"
        let tooLongMasterCard = "55555555555544444"
        
        XCTAssertIncompleteNumber(Visa().validateNumber(Number(rawValue: tooShortVisa)))
        XCTAssertIncompleteNumber(AmericanExpress().validateNumber(Number(rawValue: tooShortAmex)))

        XCTAssertIncompleteNumber(Discover().validateNumber(Number(rawValue: tooShortDiscover)))
        XCTAssertIncompleteNumber(JCB().validateNumber(Number(rawValue: tooShortJCB)))
        XCTAssertIncompleteNumber(MasterCard().validateNumber(Number(rawValue: tooShortMasterCard)))
        XCTAssertIncompleteNumber(ChinaUnionPay().validateNumber(Number(rawValue: tooShortChinaUnionPay)))
        
        XCTAssertInvalidNumberForType(Visa().validateNumber(Number(rawValue: tooLongVisa)))
        XCTAssertInvalidNumberForType(AmericanExpress().validateNumber(Number(rawValue: tooLongAmex)))
