gitlab.com/apertussolutions/u-root@v7.0.0+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  }