OSDN Git Service

update
[bytom/vapor.git] / wallet / utxo_test.go
index 86450ba..30c55c8 100644 (file)
@@ -10,14 +10,17 @@ import (
 
        "github.com/vapor/account"
        "github.com/vapor/consensus"
+       "github.com/vapor/database"
        dbm "github.com/vapor/database/leveldb"
        "github.com/vapor/protocol/bc"
        "github.com/vapor/protocol/bc/types"
+       "github.com/vapor/test/mock"
        "github.com/vapor/testutil"
 )
 
 func TestGetAccountUtxos(t *testing.T) {
        testDB := dbm.NewDB("testdb", "leveldb", "temp")
+       testStore := mock.NewMockWalletStore(testDB)
        defer func() {
                testDB.Close()
                os.RemoveAll("temp")
@@ -40,16 +43,16 @@ func TestGetAccountUtxos(t *testing.T) {
                },
                {
                        dbUtxos: map[string]*account.UTXO{
-                               string(account.StandardUTXOKey(bc.Hash{V0: 1})): &account.UTXO{
+                               string(database.StandardUTXOKey(bc.Hash{V0: 1})): &account.UTXO{
                                        OutputID: bc.Hash{V0: 1},
                                },
-                               string(account.StandardUTXOKey(bc.Hash{V0: 2})): &account.UTXO{
+                               string(database.StandardUTXOKey(bc.Hash{V0: 2})): &account.UTXO{
                                        OutputID: bc.Hash{V0: 2},
                                },
-                               string(account.StandardUTXOKey(bc.Hash{V0: 3})): &account.UTXO{
+                               string(database.StandardUTXOKey(bc.Hash{V0: 3})): &account.UTXO{
                                        OutputID: bc.Hash{V0: 3},
                                },
-                               string(account.ContractUTXOKey(bc.Hash{V0: 4})): &account.UTXO{
+                               string(database.ContractUTXOKey(bc.Hash{V0: 4})): &account.UTXO{
                                        OutputID: bc.Hash{V0: 4},
                                },
                        },
@@ -64,16 +67,16 @@ func TestGetAccountUtxos(t *testing.T) {
                },
                {
                        dbUtxos: map[string]*account.UTXO{
-                               string(account.StandardUTXOKey(bc.Hash{V0: 1})): &account.UTXO{
+                               string(database.StandardUTXOKey(bc.Hash{V0: 1})): &account.UTXO{
                                        OutputID: bc.Hash{V0: 1},
                                },
-                               string(account.StandardUTXOKey(bc.Hash{V0: 2})): &account.UTXO{
+                               string(database.StandardUTXOKey(bc.Hash{V0: 2})): &account.UTXO{
                                        OutputID: bc.Hash{V0: 2},
                                },
-                               string(account.StandardUTXOKey(bc.Hash{V0: 3})): &account.UTXO{
+                               string(database.StandardUTXOKey(bc.Hash{V0: 3})): &account.UTXO{
                                        OutputID: bc.Hash{V0: 3},
                                },
-                               string(account.ContractUTXOKey(bc.Hash{V0: 4})): &account.UTXO{
+                               string(database.ContractUTXOKey(bc.Hash{V0: 4})): &account.UTXO{
                                        OutputID: bc.Hash{V0: 4},
                                },
                        },
@@ -92,18 +95,31 @@ func TestGetAccountUtxos(t *testing.T) {
                },
                {
                        dbUtxos: map[string]*account.UTXO{
-                               string(account.StandardUTXOKey(bc.Hash{V0: 1})): &account.UTXO{
+                               string(mock.StandardUTXOKey(bc.Hash{V0: 1})): &account.UTXO{
                                        OutputID: bc.Hash{V0: 1},
                                },
-                               string(account.StandardUTXOKey(bc.Hash{V0: 1, V1: 2})): &account.UTXO{
+                               string(mock.StandardUTXOKey(bc.Hash{V0: 1, V1: 2})): &account.UTXO{
                                        OutputID: bc.Hash{V0: 1, V1: 2},
                                },
-                               string(account.StandardUTXOKey(bc.Hash{V0: 2})): &account.UTXO{
+                               string(mock.StandardUTXOKey(bc.Hash{V0: 2})): &account.UTXO{
                                        OutputID: bc.Hash{V0: 2},
                                },
-                               string(account.StandardUTXOKey(bc.Hash{V0: 2, V1: 2})): &account.UTXO{
+                               string(mock.StandardUTXOKey(bc.Hash{V0: 2, V1: 2})): &account.UTXO{
                                        OutputID: bc.Hash{V0: 2, V1: 2},
                                },
+
+                               // hex.EncodeToString(mock.StandardUTXOKey(bc.Hash{V0: 1})): &account.UTXO{
+                               //      OutputID: bc.Hash{V0: 1},
+                               // },
+                               // hex.EncodeToString(mock.StandardUTXOKey(bc.Hash{V0: 1, V1: 2})): &account.UTXO{
+                               //      OutputID: bc.Hash{V0: 1, V1: 2},
+                               // },
+                               // hex.EncodeToString(mock.StandardUTXOKey(bc.Hash{V0: 2})): &account.UTXO{
+                               //      OutputID: bc.Hash{V0: 2},
+                               // },
+                               // hex.EncodeToString(mock.StandardUTXOKey(bc.Hash{V0: 2, V1: 2})): &account.UTXO{
+                               //      OutputID: bc.Hash{V0: 2, V1: 2},
+                               // },
                        },
                        unconfirmedUtxos: []*account.UTXO{
                                &account.UTXO{
@@ -121,10 +137,10 @@ func TestGetAccountUtxos(t *testing.T) {
                },
                {
                        dbUtxos: map[string]*account.UTXO{
-                               string(account.StandardUTXOKey(bc.Hash{V0: 3})): &account.UTXO{
+                               string(database.StandardUTXOKey(bc.Hash{V0: 3})): &account.UTXO{
                                        OutputID: bc.Hash{V0: 3},
                                },
-                               string(account.ContractUTXOKey(bc.Hash{V0: 4})): &account.UTXO{
+                               string(database.ContractUTXOKey(bc.Hash{V0: 4})): &account.UTXO{
                                        OutputID: bc.Hash{V0: 4},
                                },
                        },
@@ -153,10 +169,10 @@ func TestGetAccountUtxos(t *testing.T) {
                },
                {
                        dbUtxos: map[string]*account.UTXO{
-                               string(account.StandardUTXOKey(bc.Hash{V0: 3})): &account.UTXO{
+                               string(database.StandardUTXOKey(bc.Hash{V0: 3})): &account.UTXO{
                                        OutputID: bc.Hash{V0: 3},
                                },
-                               string(account.ContractUTXOKey(bc.Hash{V0: 4})): &account.UTXO{
+                               string(database.ContractUTXOKey(bc.Hash{V0: 4})): &account.UTXO{
                                        OutputID: bc.Hash{V0: 4},
                                },
                        },
@@ -185,17 +201,22 @@ func TestGetAccountUtxos(t *testing.T) {
                },
        }
 
-       w := &Wallet{DB: testDB}
+       w := &Wallet{store: testStore}
        for i, c := range cases {
                for k, u := range c.dbUtxos {
                        data, err := json.Marshal(u)
                        if err != nil {
                                t.Error(err)
                        }
+                       fmt.Println("k:", []byte(k))
+                       // newKey, _ := hex.DecodeString(k)
+                       // fmt.Println("newkey:", newKey)
+                       // testDB.Set([]byte(k), data)
                        testDB.Set([]byte(k), data)
                }
 
-               w.AccountMgr = account.NewManager(testDB, nil)
+               acccountStore := mock.NewMockAccountStore(testDB)
+               w.AccountMgr = account.NewManager(acccountStore, nil)
                w.AccountMgr.AddUnconfirmedUtxo(c.unconfirmedUtxos)
                gotUtxos := w.GetAccountUtxos("", c.id, c.unconfirmed, c.isSmartContract, false)
                if !testutil.DeepEqual(gotUtxos, c.wantUtxos) {
@@ -203,6 +224,8 @@ func TestGetAccountUtxos(t *testing.T) {
                }
 
                for k := range c.dbUtxos {
+                       // newKey, _ := hex.DecodeString(k)
+                       // testDB.Delete([]byte(k))
                        testDB.Delete([]byte(k))
                }
        }
@@ -210,6 +233,7 @@ func TestGetAccountUtxos(t *testing.T) {
 
 func TestFilterAccountUtxo(t *testing.T) {
        testDB := dbm.NewDB("testdb", "leveldb", "temp")
+       testStore := mock.NewMockWalletStore(testDB)
        defer func() {
                testDB.Close()
                os.RemoveAll("temp")
@@ -349,7 +373,7 @@ func TestFilterAccountUtxo(t *testing.T) {
                },
        }
 
-       w := &Wallet{DB: testDB}
+       w := &Wallet{store: testStore}
        for i, c := range cases {
                for s, p := range c.dbPrograms {
                        data, err := json.Marshal(p)
@@ -363,6 +387,7 @@ func TestFilterAccountUtxo(t *testing.T) {
                        testDB.Set(key, data)
                }
 
+               fmt.Println("len(c.input):", len(c.input))
                gotUtxos := w.filterAccountUtxo(c.input)
                sort.Slice(gotUtxos[:], func(i, j int) bool {
                        return gotUtxos[i].Amount < gotUtxos[j].Amount