| Conditions | 1 | 
| Paths | 1 | 
| Total Lines | 89 | 
| Code Lines | 52 | 
| Lines | 0 | 
| Ratio | 0 % | 
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php  | 
            ||
| 185 | public function testCanReplaceIfOptin()  | 
            ||
| 186 |     { | 
            ||
| 187 | $bitcoind = $this->rpcFactory->startBitcoind();  | 
            ||
| 188 | $this->assertTrue($bitcoind->isRunning());  | 
            ||
| 189 | |||
| 190 | $destKey = PrivateKeyFactory::create(true);  | 
            ||
| 191 | $destSPK = ScriptFactory::scriptPubKey()->p2wkh($destKey->getPubKeyHash());  | 
            ||
| 192 | |||
| 193 | $changeKey = PrivateKeyFactory::create(true);  | 
            ||
| 194 | $changeSPK = ScriptFactory::scriptPubKey()->p2wkh($changeKey->getPubKeyHash());  | 
            ||
| 195 | |||
| 196 | $privateKey = PrivateKeyFactory::create(true);  | 
            ||
| 197 | $scriptPubKey = ScriptFactory::scriptPubKey()->p2wkh($privateKey->getPubKeyHash());  | 
            ||
| 198 | $amount = 100000000;  | 
            ||
| 199 | |||
| 200 | /** @var Utxo[] $utxos */  | 
            ||
| 201 | $utxos = [  | 
            ||
| 202 | $bitcoind->fundOutput($amount, $scriptPubKey),  | 
            ||
| 203 | $bitcoind->fundOutput($amount, $scriptPubKey),  | 
            ||
| 204 | $bitcoind->fundOutput($amount, $scriptPubKey),  | 
            ||
| 205 | $bitcoind->fundOutput($amount, $scriptPubKey),  | 
            ||
| 206 | ];  | 
            ||
| 207 | |||
| 208 | |||
| 209 | // Part 1: replacable tx[#1: replaceable 2]  | 
            ||
| 210 | $nIn = 1;  | 
            ||
| 211 | $tx = $this->createTransaction(  | 
            ||
| 212 | array_slice($utxos, 0, $nIn),  | 
            ||
| 213 | array_fill(0, $nIn, $privateKey),  | 
            ||
| 214 | [  | 
            ||
| 215 | new TransactionOutput(25000000, $destSPK),  | 
            ||
| 216 | new TransactionOutput(74990000, $changeSPK),  | 
            ||
| 217 | ],  | 
            ||
| 218 | array_fill(0, $nIn, TransactionInput::SEQUENCE_FINAL - 3)  | 
            ||
| 219 | );  | 
            ||
| 220 | |||
| 221 |         $result = $bitcoind->makeRpcRequest('sendrawtransaction', [$tx->getHex()]); | 
            ||
| 222 | $this->assertSendRawTransaction($result);  | 
            ||
| 223 | |||
| 224 | |||
| 225 | // Part 2: replace tx[#1: replaceable 1 | #2: replaceable 1]  | 
            ||
| 226 | $nIn = 2;  | 
            ||
| 227 | $tx = $this->createTransaction(  | 
            ||
| 228 | array_slice($utxos, 0, $nIn),  | 
            ||
| 229 | array_fill(0, $nIn, $privateKey),  | 
            ||
| 230 | [  | 
            ||
| 231 | new TransactionOutput(25000000, $destSPK),  | 
            ||
| 232 | new TransactionOutput($amount + 74950000, $changeSPK),  | 
            ||
| 233 | ],  | 
            ||
| 234 | array_fill(0, $nIn, TransactionInput::SEQUENCE_FINAL - 2)  | 
            ||
| 235 | );  | 
            ||
| 236 | |||
| 237 |         $result = $bitcoind->makeRpcRequest('sendrawtransaction', [$tx->getHex()]); | 
            ||
| 238 | $this->assertSendRawTransaction($result);  | 
            ||
| 239 | |||
| 240 | |||
| 241 | // Part 3: replace tx[#1: replaceable 0 | #2: replaceable 0 | #3: replaceable 0]  | 
            ||
| 242 | $nIn = 3;  | 
            ||
| 243 | $tx = $this->createTransaction(  | 
            ||
| 244 | array_slice($utxos, 0, $nIn),  | 
            ||
| 245 | array_fill(0, $nIn, $privateKey),  | 
            ||
| 246 | [  | 
            ||
| 247 | new TransactionOutput(25000000, $destSPK),  | 
            ||
| 248 | new TransactionOutput((2 * $amount) + 74920000, $changeSPK),  | 
            ||
| 249 | ],  | 
            ||
| 250 | array_fill(0, $nIn, TransactionInput::SEQUENCE_FINAL - 1)  | 
            ||
| 251 | );  | 
            ||
| 252 | |||
| 253 |         $result = $bitcoind->makeRpcRequest('sendrawtransaction', [$tx->getHex()]); | 
            ||
| 254 | $this->assertSendRawTransaction($result);  | 
            ||
| 255 | |||
| 256 | |||
| 257 | // Part 4: this one won't work, inputs are all irreplacable  | 
            ||
| 258 | $nIn = 4;  | 
            ||
| 259 | $tx = $this->createTransaction(  | 
            ||
| 260 | array_slice($utxos, 0, $nIn),  | 
            ||
| 261 | array_fill(0, $nIn, $privateKey),  | 
            ||
| 262 | [  | 
            ||
| 263 | new TransactionOutput(25000000, $destSPK),  | 
            ||
| 264 | new TransactionOutput((3 * $amount) + 74900000, $changeSPK),  | 
            ||
| 265 | ],  | 
            ||
| 266 | array_fill(0, $nIn, TransactionInput::SEQUENCE_FINAL)  | 
            ||
| 267 | );  | 
            ||
| 268 | |||
| 269 |         $result = $bitcoind->makeRpcRequest('sendrawtransaction', [$tx->getHex()]); | 
            ||
| 270 | $this->assertBitcoindError(RpcServer::ERROR_TX_MEMPOOL_CONFLICT, $result);  | 
            ||
| 271 | |||
| 272 | $bitcoind->destroy();  | 
            ||
| 273 | }  | 
            ||
| 274 | }  | 
            ||
| 275 |