github.com/mutagen-io/mutagen@v0.18.0-rc1/pkg/encoding/yaml_test.go (about)

     1  package encoding
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  )
     7  
     8  // testMessageYAML is a test structure to use for encoding tests using YAML.
     9  type testMessageYAML struct {
    10  	Section struct {
    11  		Name string `yaml:"name"`
    12  		Age  uint   `yaml:"age"`
    13  	} `yaml:"section"`
    14  }
    15  
    16  const (
    17  	// testMessageYAMLString is the YAML-encoded form of the YAML test data.
    18  	testMessageYAMLString = `
    19  section:
    20    name: "Abraham"
    21    age: 56
    22  `
    23  	// testMessageYAMLName is the YAML test name.
    24  	testMessageYAMLName = "Abraham"
    25  	// testMessageYAMLAge is the YAML test age.
    26  	testMessageYAMLAge = 56
    27  )
    28  
    29  // TestLoadAndUnmarshalYAML tests that loading and unmarshaling YAML data
    30  // succeeds.
    31  func TestLoadAndUnmarshalYAML(t *testing.T) {
    32  	// Write the test YAML to a temporary file and defer its cleanup.
    33  	file, err := os.CreateTemp("", "mutagen_encoding")
    34  	if err != nil {
    35  		t.Fatal("unable to create temporary file:", err)
    36  	} else if _, err = file.Write([]byte(testMessageYAMLString)); err != nil {
    37  		t.Fatal("unable to write data to temporary file:", err)
    38  	} else if err = file.Close(); err != nil {
    39  		t.Fatal("unable to close temporary file:", err)
    40  	}
    41  	defer os.Remove(file.Name())
    42  
    43  	// Attempt to load and unmarshal.
    44  	value := &testMessageYAML{}
    45  	if err := LoadAndUnmarshalYAML(file.Name(), value); err != nil {
    46  		t.Fatal("loadAndUnmarshal failed:", err)
    47  	}
    48  
    49  	// Verify test value names.
    50  	if value.Section.Name != testMessageYAMLName {
    51  		t.Error("test message name mismatch:", value.Section.Name, "!=", testMessageYAMLName)
    52  	}
    53  	if value.Section.Age != testMessageYAMLAge {
    54  		t.Error("test message age mismatch:", value.Section.Age, "!=", testMessageYAMLAge)
    55  	}
    56  }