@@ -11,22 +11,6 @@ import XCTest
1111
1212final class BIP39Tests : XCTestCase {
1313
14- func testAllLanguageMnemonics( ) throws {
15- for language in BIP39Language . allCases {
16- guard let newMnemonics = try BIP39 . generateMnemonics ( bitsOfEntropy: 128 , language: language) else {
17- XCTFail ( " Failed to generate BIP39 mnemonics phrase " )
18- return
19- }
20- let wordsOfNewMnemonic = newMnemonics. split ( separator: language. separator) . map { String ( $0) }
21- for word in wordsOfNewMnemonic {
22- guard language. words. contains ( word) else {
23- XCTFail ( " Given word is not contained in the list of words of selected language available for mnemonics generation: \( word) ; \( language) " )
24- return
25- }
26- }
27- }
28- }
29-
3014 func testBIP39( ) throws {
3115 var entropy = Data . fromHex ( " 00000000000000000000000000000000 " ) !
3216 var phrase = BIP39 . generateMnemonicsFromEntropy ( entropy: entropy)
@@ -167,6 +151,7 @@ final class BIP39Tests: XCTestCase {
167151 XCTAssert ( keystore1? . addresses? . first == keystore2? . addresses? . first)
168152 }
169153
154+ /// It's expected for the entropy bits count to be [128, 256] and (bits mod 32) must return 0.
170155 func testWrongBitsOfEntropyMustThrow( ) throws {
171156 XCTAssertThrowsError ( try BIP39 . generateMnemonics ( entropy: 127 ) )
172157 XCTAssertThrowsError ( try BIP39 . generateMnemonics ( entropy: 255 ) )
@@ -182,4 +167,33 @@ final class BIP39Tests: XCTestCase {
182167 XCTAssertFalse ( try BIP39 . generateMnemonics ( entropy: 256 ) . isEmpty)
183168 }
184169
170+ func testBip39CorrectWordsCount( ) throws {
171+ XCTAssertEqual ( try BIP39 . generateMnemonics ( entropy: 128 ) . count, 12 )
172+ XCTAssertEqual ( try BIP39 . generateMnemonics ( entropy: 160 ) . count, 15 )
173+ XCTAssertEqual ( try BIP39 . generateMnemonics ( entropy: 192 ) . count, 18 )
174+ XCTAssertEqual ( try BIP39 . generateMnemonics ( entropy: 224 ) . count, 21 )
175+ XCTAssertEqual ( try BIP39 . generateMnemonics ( entropy: 256 ) . count, 24 )
176+ }
177+
178+ func testAllLanguageMnemonics( ) throws {
179+ for language in BIP39Language . allCases {
180+ let mnemonicPhrase = try BIP39 . generateMnemonics ( entropy: 128 , language: language)
181+ for word in mnemonicPhrase {
182+ guard language. words. contains ( word) else {
183+ XCTFail ( " Given word is not contained in the list of words of selected language available for mnemonics generation: \( word) ; \( language) " )
184+ return
185+ }
186+ }
187+ }
188+ }
189+
190+ func testBip39MnemonicSeparatorUse( ) throws {
191+ for language in BIP39Language . allCases {
192+ guard let mnemonicPhrase = try BIP39 . generateMnemonics ( bitsOfEntropy: 128 , language: language) else {
193+ XCTFail ( " Failed to generate BIP39 mnemonics phrase with 128 bits of entropy using language: \( language) " )
194+ return
195+ }
196+ XCTAssertEqual ( mnemonicPhrase. split ( whereSeparator: { $0 == language. separatorCharacter } ) . count, 12 )
197+ }
198+ }
185199}
0 commit comments