@@ -11,22 +11,6 @@ import XCTest
11
11
12
12
final class BIP39Tests : XCTestCase {
13
13
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
-
30
14
func testBIP39( ) throws {
31
15
var entropy = Data . fromHex ( " 00000000000000000000000000000000 " ) !
32
16
var phrase = BIP39 . generateMnemonicsFromEntropy ( entropy: entropy)
@@ -167,6 +151,7 @@ final class BIP39Tests: XCTestCase {
167
151
XCTAssert ( keystore1? . addresses? . first == keystore2? . addresses? . first)
168
152
}
169
153
154
+ /// It's expected for the entropy bits count to be [128, 256] and (bits mod 32) must return 0.
170
155
func testWrongBitsOfEntropyMustThrow( ) throws {
171
156
XCTAssertThrowsError ( try BIP39 . generateMnemonics ( entropy: 127 ) )
172
157
XCTAssertThrowsError ( try BIP39 . generateMnemonics ( entropy: 255 ) )
@@ -182,4 +167,33 @@ final class BIP39Tests: XCTestCase {
182
167
XCTAssertFalse ( try BIP39 . generateMnemonics ( entropy: 256 ) . isEmpty)
183
168
}
184
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
+ }
185
199
}
0 commit comments