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 }