@@ -151,6 +151,7 @@ final class BIP39Tests: XCTestCase {
151
151
XCTAssert ( keystore1? . addresses? . first == keystore2? . addresses? . first)
152
152
}
153
153
154
+ /// It's expected for the entropy bits count to be [128, 256] and (bits mod 32) must return 0.
154
155
func testWrongBitsOfEntropyMustThrow( ) throws {
155
156
XCTAssertThrowsError ( try BIP39 . generateMnemonics ( entropy: 127 ) )
156
157
XCTAssertThrowsError ( try BIP39 . generateMnemonics ( entropy: 255 ) )
@@ -166,4 +167,33 @@ final class BIP39Tests: XCTestCase {
166
167
XCTAssertFalse ( try BIP39 . generateMnemonics ( entropy: 256 ) . isEmpty)
167
168
}
168
169
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
+ }
169
199
}
0 commit comments