github.com/linuxboot/fiano@v1.2.0/pkg/intel/metadata/common/unittest/read_write.go (about)

     1  // Copyright 2017-2021 the LinuxBoot Authors. All rights reserved
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package unittest
     6  
     7  import (
     8  	"bytes"
     9  	"os"
    10  	"testing"
    11  
    12  	"github.com/linuxboot/fiano/pkg/intel/metadata/bg"
    13  	"github.com/linuxboot/fiano/pkg/intel/metadata/cbnt"
    14  	"github.com/stretchr/testify/require"
    15  )
    16  
    17  func CBNTManifestReadWrite(t *testing.T, m cbnt.Manifest, testDataFilePath string) {
    18  	testData, err := os.ReadFile(testDataFilePath)
    19  	require.NoError(t, err)
    20  
    21  	nR, err := m.ReadFrom(bytes.NewReader(append(testData, []byte(`extra bytes`)...)))
    22  	require.NoError(t, err)
    23  	require.Equal(t, int64(len(testData)), nR)
    24  	require.Equal(t, nR, int64(m.TotalSize()))
    25  
    26  	prettyString := m.PrettyString(0, true)
    27  
    28  	var out bytes.Buffer
    29  	nW, err := m.WriteTo(&out)
    30  	require.NoError(t, err)
    31  
    32  	newPrettyString := m.PrettyString(0, true)
    33  	require.Equal(t, prettyString, newPrettyString, newPrettyString)
    34  	require.Equal(t, string(testData), out.String())
    35  	require.Equal(t, nW, nR)
    36  	require.Equal(t, nW, int64(out.Len()))
    37  }
    38  
    39  func BGManifestReadWrite(t *testing.T, m bg.Manifest, testDataFilePath string) {
    40  	testData, err := os.ReadFile(testDataFilePath)
    41  	require.NoError(t, err)
    42  
    43  	nR, err := m.ReadFrom(bytes.NewReader(testData))
    44  	require.NoError(t, err)
    45  	require.Equal(t, int64(len(testData)), nR)
    46  	require.Equal(t, nR, int64(m.TotalSize()))
    47  
    48  	prettyString := m.PrettyString(0, true)
    49  
    50  	var out bytes.Buffer
    51  	nW, err := m.WriteTo(&out)
    52  	require.NoError(t, err)
    53  
    54  	newPrettyString := m.PrettyString(0, true)
    55  	require.Equal(t, prettyString, newPrettyString, newPrettyString)
    56  	require.Equal(t, string(testData), out.String())
    57  	require.Equal(t, nW, nR)
    58  	require.Equal(t, nW, int64(out.Len()))
    59  }