1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: Apache-2.0
8 "github.com/ghodss/yaml"
9 check "gopkg.in/check.v1"
12 var _ = check.Suite(&ByteSizeSuite{})
14 type ByteSizeSuite struct{}
16 func (s *ByteSizeSuite) TestUnmarshal(c *check.C) {
17 for _, testcase := range []struct {
36 {"4 GiB", 4294967296},
37 {"4TB", 4000000000000},
38 {"4TiB", 4398046511104},
39 {"4PB", 4000000000000000},
40 {"4PiB", 4503599627370496},
41 {"4EB", 4000000000000000000},
42 {"4EiB", 4611686018427387904},
45 err := yaml.Unmarshal([]byte(testcase.in+"\n"), &n)
46 c.Check(err, check.IsNil)
47 c.Check(int64(n), check.Equals, testcase.out)
49 for _, testcase := range []string{
50 "B", "K", "KB", "KiB", "4BK", "4iB", "4A", "b", "4b", "4mB", "4m", "4mib", "4KIB", "4K iB", "4Ki B", "BB", "4BB",
51 "400000 EB", // overflows int64
54 err := yaml.Unmarshal([]byte(testcase+"\n"), &n)
57 c.Check(err, check.NotNil)