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 }