github.com/paketo-buildpacks/libpak@v1.70.0/internal/toml_marshal_test.go (about)

     1  package internal_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/BurntSushi/toml"
     7  	. "github.com/onsi/gomega"
     8  	"github.com/paketo-buildpacks/libpak/internal"
     9  	"github.com/sclevine/spec"
    10  )
    11  
    12  type Stuff struct {
    13  	AString  string
    14  	AnInt    int
    15  	AFloat   float64
    16  	AnArray  []string
    17  	AMap     map[string]string
    18  	APointer *string
    19  	BPointer *string
    20  }
    21  
    22  func testTOMLMarshal(t *testing.T, context spec.G, it spec.S) {
    23  	var (
    24  		Expect = NewWithT(t).Expect
    25  	)
    26  
    27  	it("marshals and unmarshals without change", func() {
    28  		bString := "b_string"
    29  		someData := Stuff{
    30  			"a_string",
    31  			10034, 3040.23943,
    32  			[]string{"foo", "bar", "baz"},
    33  			map[string]string{
    34  				"AM":  "1",
    35  				"bar": "2",
    36  				"baz": "3",
    37  			},
    38  			nil,
    39  			&bString,
    40  		}
    41  
    42  		dataBytes, err := internal.Marshal(someData)
    43  		Expect(err).ToNot(HaveOccurred())
    44  		Expect(dataBytes).ToNot(BeEmpty())
    45  
    46  		output := Stuff{}
    47  		err = toml.Unmarshal(dataBytes, &output)
    48  		Expect(err).ToNot(HaveOccurred())
    49  		Expect(someData).To(Equal(output))
    50  		Expect(someData.APointer).To(BeNil())
    51  	})
    52  }