github.com/vmware/govmomi@v0.51.0/units/size_test.go (about)

     1  // © Broadcom. All Rights Reserved.
     2  // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
     3  // SPDX-License-Identifier: Apache-2.0
     4  
     5  package units
     6  
     7  import (
     8  	"math"
     9  	"testing"
    10  )
    11  
    12  func TestMB(t *testing.T) {
    13  	b := ByteSize(1024 * 1024)
    14  	expected := "1.0MB"
    15  	if b.String() != expected {
    16  		t.Errorf("Expected '%v' but got '%v'", expected, b)
    17  	}
    18  }
    19  
    20  func TestTenMB(t *testing.T) {
    21  	actual := ByteSize(10 * 1024 * 1024).String()
    22  	expected := "10.0MB"
    23  	if actual != expected {
    24  		t.Errorf("Expected '%v' but got '%v'", expected, actual)
    25  	}
    26  }
    27  
    28  func assertEquals(t *testing.T, expected string, actual ByteSize) {
    29  	if expected != actual.String() {
    30  		t.Errorf("Expected '%v' but got '%v'", expected, actual.String())
    31  	}
    32  }
    33  
    34  func TestByteSize(t *testing.T) {
    35  	assertEquals(t, "1B", ByteSize(1))
    36  	assertEquals(t, "10B", ByteSize(10))
    37  	assertEquals(t, "100B", ByteSize(100))
    38  	assertEquals(t, "1000B", ByteSize(1000))
    39  	assertEquals(t, "1.0KB", ByteSize(1024))
    40  	assertEquals(t, "1.0MB", ByteSize(1024*1024))
    41  	assertEquals(t, "1.0MB", ByteSize(1048576))
    42  	assertEquals(t, "10.0MB", ByteSize(10*math.Pow(1024, 2)))
    43  	assertEquals(t, "1.0GB", ByteSize(1024*1024*1024))
    44  	assertEquals(t, "1.0TB", ByteSize(1024*1024*1024*1024))
    45  	assertEquals(t, "1.0TB", ByteSize(1048576*1048576))
    46  	assertEquals(t, "1.0PB", ByteSize(1024*1024*1024*1024*1024))
    47  	assertEquals(t, "1.0EB", ByteSize(1024*1024*1024*1024*1024*1024))
    48  	assertEquals(t, "1.0EB", ByteSize(1048576*1048576*1048576))
    49  }
    50  
    51  func TestByteSizeSet(t *testing.T) {
    52  	var tests = []struct {
    53  		In     string
    54  		OutStr string
    55  		Out    ByteSize
    56  	}{
    57  		{
    58  			In:     "345",
    59  			OutStr: "345B",
    60  			Out:    345.0,
    61  		},
    62  		{
    63  			In:     "345b",
    64  			OutStr: "345B",
    65  			Out:    345.0,
    66  		},
    67  		{
    68  			In:     "345K",
    69  			OutStr: "345.0KB",
    70  			Out:    345 * KB,
    71  		},
    72  		{
    73  			In:     "345kb",
    74  			OutStr: "345.0KB",
    75  			Out:    345 * KB,
    76  		},
    77  		{
    78  			In:     "345kib",
    79  			OutStr: "345.0KB",
    80  			Out:    345 * KB,
    81  		},
    82  		{
    83  			In:     "345KiB",
    84  			OutStr: "345.0KB",
    85  			Out:    345 * KB,
    86  		},
    87  		{
    88  			In:     "345M",
    89  			OutStr: "345.0MB",
    90  			Out:    345 * MB,
    91  		},
    92  		{
    93  			In:     "345G",
    94  			OutStr: "345.0GB",
    95  			Out:    345 * GB,
    96  		},
    97  		{
    98  			In:     "345T",
    99  			OutStr: "345.0TB",
   100  			Out:    345 * TB,
   101  		},
   102  		{
   103  			In:     "345P",
   104  			OutStr: "345.0PB",
   105  			Out:    345 * PB,
   106  		},
   107  		{
   108  			In:     "3E",
   109  			OutStr: "3.0EB",
   110  			Out:    3 * EB,
   111  		},
   112  	}
   113  
   114  	for _, test := range tests {
   115  		var v ByteSize
   116  		err := v.Set(test.In)
   117  		if err != nil {
   118  			t.Errorf("Error: %s [%v]", err, test.In)
   119  			continue
   120  		}
   121  
   122  		if v != test.Out {
   123  			t.Errorf("Out: expect '%v' actual '%v'", test.Out, v)
   124  			continue
   125  		}
   126  
   127  		if v.String() != test.OutStr {
   128  			t.Errorf("String: expect '%v' actual '%v'", test.OutStr, v.String())
   129  		}
   130  	}
   131  }