You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.4 KiB
55 lines
1.4 KiB
package bytesize_test
|
|
|
|
import (
|
|
"encoding/json"
|
|
"math"
|
|
"testing"
|
|
|
|
"gitoa.ru/go-4devs/bytesize"
|
|
)
|
|
|
|
var marshalTextTests = []struct {
|
|
in bytesize.Size
|
|
expect string
|
|
}{
|
|
{bytesize.Size(0), `"0B"`},
|
|
{bytesize.Size(100), `"100B"`},
|
|
{bytesize.Size(1024), `"1.024kB"`},
|
|
{bytesize.Size(1024 * 1024), `"1.048576MB"`},
|
|
{bytesize.Size(1024 * 1024 * 1024), `"1.073741824GB"`},
|
|
{bytesize.Size(1024 * 1024 * 1024 * 1024), `"1.099511627776TB"`},
|
|
{bytesize.Size(math.MaxInt64), `"9223.372036854775807PB"`},
|
|
{bytesize.Size(1000), `"1kB"`},
|
|
{bytesize.Size(1000 * 1000), `"1MB"`},
|
|
{bytesize.Size(1000 * 1000 * 1000), `"1GB"`},
|
|
{bytesize.Size(1000 * 1000 * 1000 * 1000), `"1TB"`},
|
|
{bytesize.Size(1000 * 1000 * 1000 * 1000 * 1000), `"1PB"`},
|
|
}
|
|
|
|
func TestMarshalText(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
for _, tc := range marshalTextTests {
|
|
data, err := json.Marshal(tc.in)
|
|
if err != nil {
|
|
t.Errorf("json.Marshal(%q) = _, err:%q", tc.in, err)
|
|
} else if string(data) != tc.expect {
|
|
t.Errorf("json.Marshal(%q) = %q, data does not equals %q", tc.in, data, tc.expect)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestUnmarshalText(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
for _, tc := range marshalTextTests {
|
|
var data bytesize.Size
|
|
err := json.Unmarshal([]byte(tc.expect), &data)
|
|
|
|
if err != nil {
|
|
t.Errorf("json.Unmarshal(%q) = _, err:%q", tc.in, err)
|
|
} else if data != tc.in {
|
|
t.Errorf("json.Unmarshal(%q) = %q, data does not equals %q", tc.in, data, tc.expect)
|
|
}
|
|
}
|
|
}
|
|
|