github.com/devwanda/aphelion-staking@v0.33.9/lite2/provider/mock/mock.go (about)

     1  package mock
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	"github.com/devwanda/aphelion-staking/lite2/provider"
     8  	"github.com/devwanda/aphelion-staking/types"
     9  )
    10  
    11  type mock struct {
    12  	chainID string
    13  	headers map[int64]*types.SignedHeader
    14  	vals    map[int64]*types.ValidatorSet
    15  }
    16  
    17  // New creates a mock provider with the given set of headers and validator
    18  // sets.
    19  func New(chainID string, headers map[int64]*types.SignedHeader, vals map[int64]*types.ValidatorSet) provider.Provider {
    20  	return &mock{
    21  		chainID: chainID,
    22  		headers: headers,
    23  		vals:    vals,
    24  	}
    25  }
    26  
    27  // ChainID returns the blockchain ID.
    28  func (p *mock) ChainID() string {
    29  	return p.chainID
    30  }
    31  
    32  func (p *mock) String() string {
    33  	var headers strings.Builder
    34  	for _, h := range p.headers {
    35  		fmt.Fprintf(&headers, " %d:%X", h.Height, h.Hash())
    36  	}
    37  
    38  	var vals strings.Builder
    39  	for _, v := range p.vals {
    40  		fmt.Fprintf(&vals, " %X", v.Hash())
    41  	}
    42  
    43  	return fmt.Sprintf("mock{headers: %s, vals: %v}", headers.String(), vals.String())
    44  }
    45  
    46  func (p *mock) SignedHeader(height int64) (*types.SignedHeader, error) {
    47  	if height == 0 && len(p.headers) > 0 {
    48  		return p.headers[int64(len(p.headers))], nil
    49  	}
    50  	if _, ok := p.headers[height]; ok {
    51  		return p.headers[height], nil
    52  	}
    53  	return nil, provider.ErrSignedHeaderNotFound
    54  }
    55  
    56  func (p *mock) ValidatorSet(height int64) (*types.ValidatorSet, error) {
    57  	if height == 0 && len(p.vals) > 0 {
    58  		return p.vals[int64(len(p.vals))], nil
    59  	}
    60  	if _, ok := p.vals[height]; ok {
    61  		return p.vals[height], nil
    62  	}
    63  	return nil, provider.ErrValidatorSetNotFound
    64  }