But the assert fails, if I'm reading the stack trace correctly. In the case of assertFalse, the asserted value then can only be true.
But anyway, good to know you solved the problem. On 10/22/2017 07:46 PM, [email protected] wrote: > assertFalse "asserts that a condition is false" (like isFalse). Thus, in > my example isWallet returned false. > > ??? > > Anyhow ... this is weird. I rebooted my computer in the mean time and > started eclipse again. Now the code works as intended. > > Nix für ungut. > > On Sunday, October 22, 2017 at 3:43:50 PM UTC+2, Andreas Schildbach wrote: > > Your test contains assertFalse(WalletProtobufSerializer.isWallet(test)) > and that fails -- so actually the isWallet() method returns true, which > is expected. > > > On 10/22/2017 01:57 PM, [email protected] wrote: > > > > Hello everybody, > > > > I am playing around with bitcoinj again, especially with married > > wallets. I tried to reproduce the following code: > > > > > > https://programtalk.com/vs/?source=bitcoinj/core/src/test/java/org/bitcoinj/store/WalletProtobufSerializerTest.java > > <https://programtalk.com/vs/?source=bitcoinj/core/src/test/java/org/bitcoinj/store/WalletProtobufSerializerTest.java> > > > > > However, it seems that WalletProtobufSerializer.isWallet tests > wrongly > > or the wallet format changed or I did something wrongly. > > > > The version of bitcoinj is 0.14.5, and my code is this: > > > > package test; > > > > import java.io.ByteArrayInputStream; > > import java.io.ByteArrayOutputStream; > > import java.security.SecureRandom; > > import java.util.Date; > > > > import org.bitcoinj.core.Address; > > import org.bitcoinj.core.Coin; > > import org.bitcoinj.core.ECKey; > > import org.bitcoinj.core.NetworkParameters; > > import org.bitcoinj.crypto.DeterministicKey; > > import org.bitcoinj.params.MainNetParams; > > import org.bitcoinj.wallet.DeterministicKeyChain; > > import org.bitcoinj.wallet.MarriedKeyChain; > > import org.bitcoinj.wallet.Wallet; > > import org.bitcoinj.wallet.KeyChain; > > import org.bitcoinj.wallet.WalletProtobufSerializer; > > > > import static org.junit.Assert.*; > > > > public class Main { > > private static final NetworkParameters params = new > MainNetParams(); > > private ECKey key; > > private ECKey watched_key; > > private Address address; > > private Wallet wallet; > > > > public static String WALLET_DESCRIPTION = "The quick brown fox > > lives in \u4f26\u6566"; // Beijing in Chinese > > private long mScriptCreationTime; > > > > public static void main(String[] args) throws Exception{ > > // TODO Auto-generated method stub > > > > Main m = new Main(); > > m.setUp(); > > System.out.println("setup finished"); > > m.testRoundTripNormalWallet(); > > System.out.println("normal wallet tested"); > > m.testRoundTripMarriedWallet(); > > System.out.println("married wallet tested"); > > } > > > > public void setUp() throws Exception { > > this.watched_key = new ECKey(); > > this.wallet = new Wallet(params); > > this.key = new ECKey(); > > this.key.setCreationTimeSeconds(123456789L); > > this.wallet.importKey(this.key); > > this.address = this.key.toAddress(params); > > this.wallet = new Wallet(params); > > this.wallet.importKey(this.key); > > this.mScriptCreationTime = new Date().getTime() / 1000 - > 1234; > > > > this.wallet.addWatchedAddress(this.watched_key.toAddress(params), > > this.mScriptCreationTime); > > this.wallet.setDescription(WALLET_DESCRIPTION); > > } > > > > public void testRoundTripNormalWallet() throws Exception { > > Wallet wallet1 = roundTrip(this.wallet); > > assertEquals(0, wallet1.getTransactions(true).size()); > > assertEquals(Coin.ZERO, wallet1.getBalance()); > > assertArrayEquals(this.key.getPubKey(), > > wallet1.findKeyFromPubHash(this.key.getPubKeyHash()).getPubKey()); > > assertArrayEquals(this.key.getPrivKeyBytes(), > > > wallet1.findKeyFromPubHash(this.key.getPubKeyHash()).getPrivKeyBytes()); > > > assertEquals(this.key.getCreationTimeSeconds(), > > > > wallet1.findKeyFromPubHash(this.key.getPubKeyHash()).getCreationTimeSeconds()); > > > } > > > > public void testRoundTripMarriedWallet() throws Exception { > > // create 2-of-2 married wallet > > this.wallet = new Wallet(params); > > final DeterministicKeyChain partner_chain = new > > DeterministicKeyChain(new SecureRandom()); > > DeterministicKey partner_key = > > DeterministicKey.deserializeB58(null, > > partner_chain.getWatchingKey().serializePubB58(params), params); > > MarriedKeyChain chain = MarriedKeyChain.builder().random(new > > SecureRandom()).followingKeys(partner_key).threshold(2).build(); > > this.wallet.addAndActivateHDChain(chain); > > > > this.address = > > this.wallet.currentAddress(KeyChain.KeyPurpose.RECEIVE_FUNDS); > > > > Wallet wallet1 = roundTrip(this.wallet); > > assertEquals(0, wallet1.getTransactions(true).size()); > > assertEquals(Coin.ZERO, wallet1.getBalance()); > > assertEquals(2, > > wallet1.getActiveKeyChain().getSigsRequiredToSpend()); > > assertEquals(this.address, > > wallet1.currentAddress(KeyChain.KeyPurpose.RECEIVE_FUNDS)); > > } > > > > private static Wallet roundTrip(Wallet wallet) throws Exception { > > ByteArrayOutputStream output = new ByteArrayOutputStream(); > > new WalletProtobufSerializer().writeWallet(wallet, output); > > ByteArrayInputStream test = new > > ByteArrayInputStream(output.toByteArray()); > > assertFalse(WalletProtobufSerializer.isWallet(test)); > > ByteArrayInputStream input = new > > ByteArrayInputStream(output.toByteArray()); > > return new WalletProtobufSerializer().readWallet(input); > > } > > } > > > > Output is: > > > > Oct 22, 2017 1:55:41 PM org.bitcoinj.core.Context getOrCreate > > WARNING: Implicitly creating context. This is a migration step and > this > > message will eventually go away. > > Oct 22, 2017 1:55:41 PM org.bitcoinj.core.Context <init> > > INFO: Creating bitcoinj 0.14.5 context. > > Oct 22, 2017 1:55:41 PM org.bitcoinj.crypto.MnemonicCode toSeed > > INFO: PBKDF2 took 106.8 ms > > Oct 22, 2017 1:55:41 PM org.bitcoinj.wallet.KeyChainGroup > > addAndActivateHDChain > > INFO: Creating and activating a new HD chain: > > org.bitcoinj.wallet.DeterministicKeyChain@47c62251 > > Oct 22, 2017 1:55:41 PM org.bitcoinj.crypto.MnemonicCode toSeed > > INFO: PBKDF2 took 32.68 ms > > Oct 22, 2017 1:55:41 PM org.bitcoinj.wallet.KeyChainGroup > > addAndActivateHDChain > > INFO: Creating and activating a new HD chain: > > org.bitcoinj.wallet.DeterministicKeyChain@239963d8 > > setup finished > > Exception in thread "main" java.lang.AssertionError > > at org.junit.Assert.fail(Assert.java:86) > > at org.junit.Assert.assertTrue(Assert.java:41) > > at org.junit.Assert.assertFalse(Assert.java:64) > > at org.junit.Assert.assertFalse(Assert.java:74) > > at test.Main.roundTrip(Main.java:88) > > at test.Main.testRoundTripNormalWallet(Main.java:59) > > at test.Main.main(Main.java:38) > > > > thanks in adavance. > > > > -- > > You received this message because you are subscribed to the Google > > Groups "bitcoinj" group. > > To unsubscribe from this group and stop receiving emails from it, > send > > an email to [email protected] > > <mailto:[email protected]>. > > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > > > -- > You received this message because you are subscribed to the Google > Groups "bitcoinj" group. > To unsubscribe from this group and stop receiving emails from it, send > an email to [email protected] > <mailto:[email protected]>. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "bitcoinj" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
