go.fuchsia.dev/infra@v0.0.0-20240507153436-9b593402251b/cmd/size_check/sizes/sizes_test.go (about) 1 // Copyright 2022 The Fuchsia Authors. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package sizes 6 7 import ( 8 "testing" 9 10 "github.com/google/go-cmp/cmp" 11 ) 12 13 func TestParseBinarySizes(t *testing.T) { 14 t.Parallel() 15 16 tests := []struct { 17 name string 18 raw map[string]any 19 expected BinarySizes 20 expectErr bool 21 }{ 22 { 23 name: "two components", 24 raw: map[string]any{ 25 "componentA": float64(30), 26 "componentA.budget": float64(50), 27 "componentA.creepBudget": float64(10), 28 "componentA.owner": "owner@componentA.dev", 29 "componentB": float64(20), 30 "componentB.budget": float64(40), 31 "componentB.creepBudget": float64(5), 32 "componentB.owner": "owner@componentB.dev", 33 }, 34 expected: BinarySizes{ 35 "componentA": { 36 Size: 30, 37 Budget: 50, 38 CreepBudget: 10, 39 }, 40 "componentB": { 41 Size: 20, 42 Budget: 40, 43 CreepBudget: 5, 44 }, 45 }, 46 expectErr: false, 47 }, 48 { 49 name: "unexpected non-float64", 50 raw: map[string]any{ 51 "componentA": "30", 52 "componentA.creepBudget": float64(10), 53 "componentA.owner": "owner@componentA.dev", 54 }, 55 expected: nil, 56 expectErr: true, 57 }, 58 { 59 name: "missing budget", 60 raw: map[string]any{ 61 "componentA": float64(30), 62 "componentA.creepBudget": float64(10), 63 "componentA.owner": "owner@componentA.dev", 64 }, 65 expected: nil, 66 expectErr: true, 67 }, 68 { 69 name: "missing creep budget", 70 raw: map[string]any{ 71 "componentA": float64(30), 72 "componentA.budget": float64(50), 73 "componentA.owner": "owner@componentA.dev", 74 }, 75 expected: nil, 76 expectErr: true, 77 }, 78 } 79 80 for _, test := range tests { 81 t.Run(test.name, func(t *testing.T) { 82 parsed, err := Parse(test.raw) 83 if err != nil { 84 if test.expectErr { 85 return 86 } 87 t.Fatalf("got unexpected error: %s", err) 88 } else if test.expectErr { 89 t.Fatalf("expected error, got nil") 90 } 91 if diff := cmp.Diff(test.expected, parsed); diff != "" { 92 t.Fatalf("different (-want +got):\n%s", diff) 93 } 94 }) 95 } 96 }