make sure IsMine only returns true when we own all keys
[novacoin.git] / src / test / multisig_tests.cpp
index 58f62b9..0c2e41a 100644 (file)
@@ -174,7 +174,7 @@ BOOST_AUTO_TEST_CASE(multisig_Solver1)
     // one key that would satisfy an (a|b) or 2-of-3 keys needed
     // to spend an escrow transaction.
     //
-    CBasicKeyStore keystore, emptykeystore;
+    CBasicKeyStore keystore, emptykeystore, partialkeystore;
     CKey key[3];
     CBitcoinAddress keyaddr[3];
     for (int i = 0; i < 3; i++)
@@ -183,6 +183,7 @@ BOOST_AUTO_TEST_CASE(multisig_Solver1)
         keystore.AddKey(key[i]);
         keyaddr[i].SetPubKey(key[i].GetPubKey());
     }
+    partialkeystore.AddKey(key[0]);
 
     {
         vector<valtype> solutions;
@@ -192,7 +193,7 @@ BOOST_AUTO_TEST_CASE(multisig_Solver1)
         BOOST_CHECK(Solver(s, whichType, solutions));
         BOOST_CHECK(solutions.size() == 1);
         CBitcoinAddress addr;
-        BOOST_CHECK(ExtractAddress(s, &keystore, addr));
+        BOOST_CHECK(ExtractAddress(s, addr));
         BOOST_CHECK(addr == keyaddr[0]);
         BOOST_CHECK(IsMine(keystore, s));
         BOOST_CHECK(!IsMine(emptykeystore, s));
@@ -205,7 +206,7 @@ BOOST_AUTO_TEST_CASE(multisig_Solver1)
         BOOST_CHECK(Solver(s, whichType, solutions));
         BOOST_CHECK(solutions.size() == 1);
         CBitcoinAddress addr;
-        BOOST_CHECK(ExtractAddress(s, &keystore, addr));
+        BOOST_CHECK(ExtractAddress(s, addr));
         BOOST_CHECK(addr == keyaddr[0]);
         BOOST_CHECK(IsMine(keystore, s));
         BOOST_CHECK(!IsMine(emptykeystore, s));
@@ -218,9 +219,10 @@ BOOST_AUTO_TEST_CASE(multisig_Solver1)
         BOOST_CHECK(Solver(s, whichType, solutions));
         BOOST_CHECK_EQUAL(solutions.size(), 4);
         CBitcoinAddress addr;
-        BOOST_CHECK(!ExtractAddress(s, &keystore, addr));
+        BOOST_CHECK(!ExtractAddress(s, addr));
         BOOST_CHECK(IsMine(keystore, s));
         BOOST_CHECK(!IsMine(emptykeystore, s));
+        BOOST_CHECK(!IsMine(partialkeystore, s));
     }
     {
         vector<valtype> solutions;
@@ -231,12 +233,13 @@ BOOST_AUTO_TEST_CASE(multisig_Solver1)
         BOOST_CHECK_EQUAL(solutions.size(), 4);
         vector<CBitcoinAddress> addrs;
         int nRequired;
-        BOOST_CHECK(ExtractAddresses(s, &keystore, whichType, addrs, nRequired));
+        BOOST_CHECK(ExtractAddresses(s, whichType, addrs, nRequired));
         BOOST_CHECK(addrs[0] == keyaddr[0]);
         BOOST_CHECK(addrs[1] == keyaddr[1]);
         BOOST_CHECK(nRequired = 1);
         BOOST_CHECK(IsMine(keystore, s));
         BOOST_CHECK(!IsMine(emptykeystore, s));
+        BOOST_CHECK(!IsMine(partialkeystore, s));
     }
     {
         vector<valtype> solutions;