Files
go-tyme/dur/duration_example_test.go

73 lines
1.7 KiB
Go

package dur_test
import (
"encoding/json"
"fmt"
"time"
"github.com/jimeh/go-tyme/dur"
"gopkg.in/yaml.v3"
)
func ExampleDuration_MarshalJSON() {
type Connection struct {
Timeout dur.Duration `json:"timeout"`
}
conn := Connection{Timeout: dur.Duration(5 * time.Second)}
b, _ := json.Marshal(conn)
fmt.Println(string(b))
// Output:
// {"timeout":"5s"}
}
func ExampleDuration_UnmarshalJSON() {
type Connection struct {
Timeout dur.Duration `json:"timeout"`
}
conn := Connection{}
_ = json.Unmarshal([]byte(`{"timeout": "10s"}`), &conn)
fmt.Printf("%+v (%+v)\n", conn.Timeout, time.Duration(conn.Timeout))
_ = json.Unmarshal([]byte(`{"timeout": 5}`), &conn)
fmt.Printf("%+v (%+v)\n", conn.Timeout, time.Duration(conn.Timeout))
_ = json.Unmarshal([]byte(`{"timeout": 0.5}`), &conn)
fmt.Printf("%+v (%+v)\n", conn.Timeout, time.Duration(conn.Timeout))
// Output:
// 10000000000 (10s)
// 5000000000 (5s)
// 500000000 (500ms)
}
func ExampleDuration_MarshalYAML() {
type Connection struct {
Timeout dur.Duration `yaml:"timeout"`
}
conn := Connection{Timeout: dur.Duration(5 * time.Second)}
b, _ := yaml.Marshal(conn)
fmt.Println(string(b))
// Output:
// timeout: 5s
}
func ExampleDuration_UnmarshalYAML() {
type Connection struct {
Timeout dur.Duration `yaml:"timeout"`
}
conn := Connection{}
_ = yaml.Unmarshal([]byte(`timeout: 10s`), &conn)
fmt.Printf("%+v (%+v)\n", conn.Timeout, time.Duration(conn.Timeout))
_ = yaml.Unmarshal([]byte(`timeout: 5`), &conn)
fmt.Printf("%+v (%+v)\n", conn.Timeout, time.Duration(conn.Timeout))
_ = yaml.Unmarshal([]byte(`timeout: 0.5`), &conn)
fmt.Printf("%+v (%+v)\n", conn.Timeout, time.Duration(conn.Timeout))
// Output:
// 10000000000 (10s)
// 5000000000 (5s)
// 500000000 (500ms)
}