MnemonicTest::testEntropyToMnemonic()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 4
1
<?php
2
3
namespace BitWasp\Bitcoin\Tests\Mnemonic\Bip39;
4
5
use BitWasp\Buffertools\Buffer;
6
use BitWasp\Buffertools\BufferInterface;
7
use Btccom\JustEncrypt\Encoding\Mnemonic;
8
use Btccom\JustEncrypt\Encoding\Wordlist;
9
use Btccom\JustEncrypt\Test\AbstractTestCase;
10
11
class MnemonicTest extends AbstractTestCase
12
{
13
    /**
14
     * @return array
15
     */
16
    public function getBip39Vectors()
17
    {
18
        $file = json_decode($this->dataFile('bip39.json'), true);
19
        $vectors = [];
20
21
        $bip39 = new Mnemonic(new Wordlist());
22
        foreach ($file as $list => $testSet) {
23
            foreach ($testSet as $set) {
24
                $vectors[] = [
25
                    $bip39,
26
                    Buffer::hex($set[0]),
27
                    $set[1],
28
                    Buffer::hex($set[2])
29
                ];
30
            }
31
        }
32
33
        return $vectors;
34
    }
35
36
    /**
37
     * @dataProvider getBip39Vectors
38
     * @param Mnemonic $bip39
39
     * @param BufferInterface $entropy
40
     * @param $eMnemonic
41
     * @param BufferInterface $eSeed
42
     */
43
    public function testEntropyToMnemonic(Mnemonic $bip39, BufferInterface $entropy, $eMnemonic, BufferInterface $eSeed)
0 ignored issues
show
Unused Code introduced by
The parameter $eSeed is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
44
    {
45
        $mnemonic = $bip39->entropyToMnemonic($entropy);
46
        $this->assertEquals($eMnemonic, $mnemonic);
47
    }
48
49
    /**
50
     * @dataProvider getBip39Vectors
51
     * @param Mnemonic $bip39
52
     * @param BufferInterface $eEntropy
53
     * @param $mnemonic
54
     * @param BufferInterface $eSeed
55
     */
56
    public function testMnemonicToEntropy(Mnemonic $bip39, BufferInterface $eEntropy, $mnemonic, BufferInterface $eSeed)
0 ignored issues
show
Unused Code introduced by
The parameter $eSeed is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
57
    {
58
        $entropy = $bip39->mnemonicToEntropy($mnemonic);
59
        $this->assertEquals($eEntropy->getBinary(), $entropy->getBinary());
60
    }
61
62
    /**
63
     * @expectedException \InvalidArgumentException
64
     * @expectedExceptionMessage Invalid mnemonic
65
     */
66
    public function testIncorrectWordCount()
67
    {
68
        $bip39 = new Mnemonic(new Wordlist());
69
        $mnemonic = 'letter advice';
70
        $bip39->mnemonicToEntropy($mnemonic);
71
    }
72
73
    /**
74
     * @expectedException \InvalidArgumentException
75
     * @expectedExceptionMessage Checksum does not match
76
     */
77
    public function testFailsOnInvalidChecksum()
78
    {
79
        $bip39 = new Mnemonic(new Wordlist());
80
        $mnemonic = 'jelly better achieve collect unaware mountain thought cargo oxygen act hood oxygen';
81
        $bip39->mnemonicToEntropy($mnemonic);
82
    }
83
84
    /**
85
     * @expectedException \InvalidArgumentException
86
     * @expectedExceptionMessage Invalid entropy, must be multitude of 4 bytes
87
     */
88
    public function testFailsOnEntropyMod4()
89
    {
90
        $bip39 = new Mnemonic(new Wordlist());
91
        $bip39->entropyToMnemonic(Buffer::hex(str_repeat('00', 5)));
92
    }
93
94
    /**
95
     * @expectedException \InvalidArgumentException
96
     * @expectedExceptionMessage Invalid entropy, max 1024 bytes
97
     */
98
    public function testFailsOnEntropyTooLong()
99
    {
100
        $bip39 = new Mnemonic(new Wordlist());
101
        $bip39->entropyToMnemonic(Buffer::hex(str_repeat('00', 1028)));
102
    }
103
104
    /**
105
     * @expectedException \InvalidArgumentException
106
     * @expectedExceptionMessage Invalid mnemonic, too long
107
     */
108
    public function testFailsOnMnemonicOfEntropyTooLong()
109
    {
110
        $bip39 = new Mnemonic(new Wordlist());
111
        $mnemonic = 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about end grace oxygen maze bright face loan ticket trial leg cruel lizard bread worry reject journey perfect chef section caught neither install industry';
112
        $bip39->mnemonicToEntropy($mnemonic);
113
    }
114
}
115