@@ -151,6 +151,7 @@ final class BIP39Tests: XCTestCase {
151151 XCTAssert ( keystore1? . addresses? . first == keystore2? . addresses? . first)
152152 }
153153
154+ /// It's expected for the entropy bits count to be [128, 256] and (bits mod 32) must return 0.
154155 func testWrongBitsOfEntropyMustThrow( ) throws {
155156 XCTAssertThrowsError ( try BIP39 . generateMnemonics ( entropy: 127 ) )
156157 XCTAssertThrowsError ( try BIP39 . generateMnemonics ( entropy: 255 ) )
@@ -166,4 +167,33 @@ final class BIP39Tests: XCTestCase {
166167 XCTAssertFalse ( try BIP39 . generateMnemonics ( entropy: 256 ) . isEmpty)
167168 }
168169
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+ }
169199}
0 commit comments