blob: f2094f153aea7371b02e3f3c6ca5bec2ed4559cc [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You under the Apache License, Version 2.0
// (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package types
import (
"encoding/json"
"testing"
"time"
"github.com/stretchr/testify/assert"
"gopkg.in/yaml.v2"
)
type structure1 struct {
Interval TimeDuration `json:"interval" yaml:"interval"`
Name string `json:"name" yaml:"name"`
}
func TestTimeDurationMarshalJSON(t *testing.T) {
value := &structure1{
Interval: TimeDuration{15 * time.Second},
Name: "alex",
}
data, err := json.Marshal(value)
assert.Nil(t, err, "failed to marshal value: %s", err)
assert.Contains(t, string(data), "15s", "bad marshalled json: %s", string(data))
}
func TestTimeDurationUnmarshalJSON(t *testing.T) {
data := `
{
"interval": "3m",
"name": "alex"
}`
var value structure1
err := json.Unmarshal([]byte(data), &value)
assert.Nil(t, err, "failed to unmarshal data to structure1: %v", err)
assert.Equal(t, "alex", value.Name, "bad name: %s", value.Name)
assert.Equal(t, TimeDuration{3 * time.Minute}, value.Interval, "bad interval: %v", value.Interval)
}
func TestTimeDurationMarshalYAML(t *testing.T) {
value := &structure1{
Interval: TimeDuration{15 * time.Second},
Name: "alex",
}
data, err := yaml.Marshal(value)
assert.Nil(t, err, "failed to marshal value: %s", err)
assert.Contains(t, string(data), "15s", "bad marshalled json: %s", string(data))
}
func TestTimeDurationUnmarshalYAML(t *testing.T) {
data := `
interval: 3m
name: alex
`
var value structure1
err := yaml.Unmarshal([]byte(data), &value)
assert.Nil(t, err, "failed to unmarshal data to structure1: %v", err)
assert.Equal(t, "alex", value.Name, "bad name: %s", value.Name)
assert.Equal(t, TimeDuration{3 * time.Minute}, value.Interval, "bad interval: %v", value.Interval)
}