github.com/johnathanhowell/sia@v0.5.1-beta.0.20160524050156-83dcc3d37c94/modules/host/storageobligations_test.go (about)

     1  package host
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/NebulousLabs/Sia/types"
     7  )
     8  
     9  // TestStorageObligationID checks that the return function of the storage
    10  // obligation returns the correct value for the obligaiton id.
    11  func TestStorageObligationID(t *testing.T) {
    12  	t.Parallel()
    13  	// Try a transaction set with just a file contract.
    14  	so1 := &storageObligation{
    15  		OriginTransactionSet: []types.Transaction{{
    16  			FileContracts: []types.FileContract{{
    17  				ValidProofOutputs: []types.SiacoinOutput{
    18  					{
    19  						UnlockHash: types.UnlockHash{2, 1, 3},
    20  						Value:      types.NewCurrency64(35),
    21  					},
    22  					{
    23  						UnlockHash: types.UnlockHash{0, 1, 3},
    24  						Value:      types.NewCurrency64(25),
    25  					},
    26  				},
    27  				MissedProofOutputs: []types.SiacoinOutput{
    28  					{
    29  						UnlockHash: types.UnlockHash{110, 1, 3},
    30  						Value:      types.NewCurrency64(3325),
    31  					},
    32  					{
    33  						UnlockHash: types.UnlockHash{110, 1, 3},
    34  						Value:      types.NewCurrency64(8325),
    35  					},
    36  				},
    37  			}},
    38  		}},
    39  	}
    40  	if so1.id() != so1.OriginTransactionSet[0].FileContractID(0) {
    41  		t.Error("id function of storage obligation is not correct")
    42  	}
    43  
    44  	// Try a file contract that includes file contract dependencies.
    45  	so2 := &storageObligation{
    46  		OriginTransactionSet: []types.Transaction{
    47  			{
    48  				SiacoinOutputs: []types.SiacoinOutput{{
    49  					UnlockHash: types.UnlockHash{1, 3, 2},
    50  					Value:      types.NewCurrency64(5),
    51  				}},
    52  			},
    53  			{
    54  				FileContracts: []types.FileContract{{
    55  					ValidProofOutputs: []types.SiacoinOutput{
    56  						{
    57  							UnlockHash: types.UnlockHash{8, 11, 4},
    58  							Value:      types.NewCurrency64(85),
    59  						},
    60  						{
    61  							UnlockHash: types.UnlockHash{8, 11, 14},
    62  							Value:      types.NewCurrency64(859),
    63  						},
    64  					},
    65  					MissedProofOutputs: []types.SiacoinOutput{
    66  						{
    67  							UnlockHash: types.UnlockHash{8, 113, 4},
    68  							Value:      types.NewCurrency64(853),
    69  						},
    70  						{
    71  							UnlockHash: types.UnlockHash{8, 119, 14},
    72  							Value:      types.NewCurrency64(9859),
    73  						},
    74  					},
    75  				}},
    76  			},
    77  		},
    78  	}
    79  	if so2.id() != so2.OriginTransactionSet[1].FileContractID(0) {
    80  		t.Error("id function of storage obligation incorrect for file contracts with dependencies")
    81  	}
    82  }