github.com/crptec/blockbook@v0.3.2/tests/sync/fakechain.go (about) 1 // +build integration 2 3 package sync 4 5 import "blockbook/bchain" 6 7 type fakeBlockChain struct { 8 bchain.BlockChain 9 returnFakes bool 10 fakeBlocks map[uint32]BlockID 11 bestHeight uint32 12 } 13 14 func (c *fakeBlockChain) GetBestBlockHash() (v string, err error) { 15 return c.GetBlockHash(c.bestHeight) 16 } 17 18 func (c *fakeBlockChain) GetBestBlockHeight() (v uint32, err error) { 19 return c.bestHeight, nil 20 } 21 22 func (c *fakeBlockChain) GetBlockHash(height uint32) (v string, err error) { 23 if height > c.bestHeight { 24 return "", bchain.ErrBlockNotFound 25 } 26 if c.returnFakes { 27 if b, found := c.fakeBlocks[height]; found { 28 return b.Hash, nil 29 } 30 } 31 return c.BlockChain.GetBlockHash(height) 32 } 33 34 func (c *fakeBlockChain) GetBlock(hash string, height uint32) (*bchain.Block, error) { 35 if height > 0 && height > c.bestHeight { 36 return nil, bchain.ErrBlockNotFound 37 } 38 if c.returnFakes { 39 if hash == "" && height > 0 { 40 var err error 41 hash, err = c.GetBlockHash(height) 42 if err != nil { 43 return nil, err 44 } 45 } 46 } 47 b, err := c.BlockChain.GetBlock(hash, height) 48 if err != nil { 49 return nil, err 50 } 51 b.Height = height 52 return b, nil 53 }