github.com/u-root/u-root@v7.0.1-0.20200915234505-ad7babab0a8e+incompatible/cmds/core/uptime/uptime_test.go (about) 1 // Copyright 2019 the u-root Authors. All rights reserved 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package main 6 7 import ( 8 "testing" 9 "time" 10 ) 11 12 var ( 13 testTime = time.Date(0001, 1, 15, 5, 35, 49, 0, time.UTC) 14 ) 15 16 func TestUptime(t *testing.T) { 17 var tests = []struct { 18 name string 19 input string 20 uptime *time.Time 21 err string 22 }{ 23 {"goodInput", "1229749 1422244", &testTime, ""}, 24 {"badDataInput", "string", nil, "error time: invalid duration strings"}, 25 {"emptyDataInput", "", nil, "error:the contents of proc/uptime we are trying to read are empty"}, 26 } 27 28 for _, test := range tests { 29 t.Run(test.name, func(t *testing.T) { 30 gotUptime, err := uptime(test.input) 31 if err == nil && test.err != "" { 32 t.Errorf("Error was not returned:got nil,want %v", test.err) 33 } else if err != nil && err.Error() != test.err { 34 t.Errorf("Mismatched Error returned :got %v ,want %v", err.Error(), test.err) 35 } 36 if gotUptime == nil && test.uptime != nil { 37 t.Errorf("Error mismatched uptime :got nil ,want %v", *test.uptime) 38 } else if gotUptime != nil && test.uptime != nil && *gotUptime != *test.uptime { 39 t.Errorf("Error mismatched uptime :got %v , want %v", *gotUptime, *test.uptime) 40 } else if gotUptime != nil && test.uptime == nil { 41 t.Errorf("Error mismatched uptime :got %v , want nil", *gotUptime) 42 } 43 }) 44 } 45 } 46 47 func TestLoadAverage(t *testing.T) { 48 var tests = []struct { 49 name string 50 input string 51 loadAverage string 52 err string 53 }{ 54 {"goodInput", "0.60 0.70 0.74", "0.60,0.70,0.74", ""}, 55 {"badDataInput", "1.00 2.00", "", "error:invalid contents:the contents of proc/loadavg we are trying to process contain less than the required 3 loadavgs"}, 56 } 57 58 for _, test := range tests { 59 t.Run(test.name, func(t *testing.T) { 60 loadAverage, err := loadavg(test.input) 61 if err == nil && test.err != "" { 62 t.Errorf("Error was not returned:got nil, want %s", test.err) 63 } else if err != nil && err.Error() != test.err { 64 t.Errorf("Mismatched Error returned,got %s ,want %s", err.Error(), test.err) 65 } 66 if loadAverage == "" && test.loadAverage != "" { 67 t.Errorf("Error mismatched loadaverage: got '', want %s", test.loadAverage) 68 } else if loadAverage != "" && test.loadAverage != "" && loadAverage != test.loadAverage { 69 t.Errorf("Error mismatched loadaverage :got %s ,want %s", loadAverage, test.loadAverage) 70 } else if loadAverage != "" && test.loadAverage == "" { 71 t.Errorf("Error mismatched loadaverage :got %s ,want ''", loadAverage) 72 } 73 }) 74 } 75 }