github.com/diadata-org/diadata@v1.4.593/pkg/utils/dates_test.go (about)

     1  package utils
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  )
     7  
     8  func TestCheckWeekDay(t *testing.T) {
     9  	date1, _ := time.Parse("2006-01-02", "2020-01-01")
    10  	date2, _ := time.Parse("2006-01-02", "2020-04-18")
    11  	date3, _ := time.Parse("2006-01-02", "2020-04-19")
    12  
    13  	tables := []struct {
    14  		date    time.Time
    15  		weekday bool
    16  	}{
    17  		{date1, true},
    18  		{date2, false},
    19  		{date3, false},
    20  	}
    21  	for _, table := range tables {
    22  		value := CheckWeekDay(table.date)
    23  		if value != table.weekday {
    24  			t.Errorf("Value of %s was incorrect, got: %v, want: %v.", table.date, value, table.weekday)
    25  		}
    26  	}
    27  }
    28  
    29  func TestContainsDay(t *testing.T) {
    30  	date1, _ := time.Parse("2006-01-02", "2020-04-01")
    31  	date2, _ := time.Parse("2006-01-02 15:04:05", "2020-04-18 14:22:55")
    32  	date3, _ := time.Parse("2006-01-02", "2020-04-18")
    33  
    34  	dates1 := []time.Time{date1, date2}
    35  	dates2 := []time.Time{date1}
    36  	dates3 := []time.Time{}
    37  
    38  	tables := []struct {
    39  		dates []time.Time
    40  		date  time.Time
    41  		value bool
    42  	}{
    43  		{dates1, date1, true},
    44  		{dates1, date3, true},
    45  		{dates2, date2, false},
    46  		{dates3, date3, false},
    47  	}
    48  	for _, table := range tables {
    49  		value := ContainsDay(table.dates, table.date)
    50  		if value != table.value {
    51  			t.Errorf("Slice %v contains date %v. Got %v but want %v.", table.dates, table.date, value, table.value)
    52  		}
    53  	}
    54  }
    55  
    56  func TestSameDays(t *testing.T) {
    57  	date1, _ := time.Parse("2006-01-02", "2020-04-01")
    58  	date2, _ := time.Parse("2006-01-02 15:04:05", "2020-04-18 14:22:55")
    59  	date3, _ := time.Parse("2006-01-02 15:04:05", "2020-04-18 02:22:55")
    60  	date4, _ := time.Parse("2006-01-02", "2020-04-18")
    61  
    62  	tables := []struct {
    63  		date1 time.Time
    64  		date2 time.Time
    65  		value bool
    66  	}{
    67  		{date1, date2, false},
    68  		{date2, date3, true},
    69  		{date2, date4, true},
    70  		{date4, date3, true},
    71  	}
    72  	for _, table := range tables {
    73  		value := SameDays(table.date1, table.date2)
    74  		if value != table.value {
    75  			t.Errorf("Got %v and %v are the same day: %v, but should be %v.", table.date1, table.date2, value, table.value)
    76  		}
    77  	}
    78  }
    79  
    80  func TestCountDays(t *testing.T) {
    81  	date1, _ := time.Parse("2006-01-02", "2020-04-01")
    82  	date2, _ := time.Parse("2006-01-02 15:04:05", "2020-04-10 14:22:55")
    83  	date3, _ := time.Parse("2006-01-02", "2020-04-02")
    84  	date4, _ := time.Parse("2006-01-02", "2020-04-03")
    85  
    86  	tables := []struct {
    87  		dateInit  time.Time
    88  		dateFinal time.Time
    89  		business  bool
    90  		days      int
    91  		err       error
    92  	}{
    93  		{date1, date2, true, 7, nil},
    94  		{date1, date2, false, 9, nil},
    95  		{date1, date3, true, 1, nil},
    96  		{date1, date3, false, 1, nil},
    97  		{date1, date4, false, 2, nil},
    98  		{date1, date4, true, 2, nil},
    99  	}
   100  	for _, table := range tables {
   101  		value, err := CountDays(table.dateInit, table.dateFinal, table.business)
   102  		if value != table.days {
   103  			t.Errorf("Number of days bewteen %v and %v is %v but should be %v, as business is %v.", table.dateInit, table.dateFinal, value, table.days, table.business)
   104  		}
   105  		if err != nil {
   106  			t.Errorf("Error should be %v but is %v", table.err, err)
   107  		}
   108  	}
   109  }
   110  
   111  func TestGetYesterday(t *testing.T) {
   112  	date1 := "2020-01-01"
   113  	date2 := "2020-04-18 14:22:55"
   114  
   115  	layout1 := "2006-01-02"
   116  	layout2 := "2006-01-02 15:04:05"
   117  
   118  	tables := []struct {
   119  		date      string
   120  		layout    string
   121  		yesterday string
   122  	}{
   123  		{date1, layout1, "2019-12-31"},
   124  		{date2, layout2, "2020-04-17 14:22:55"},
   125  	}
   126  	for _, table := range tables {
   127  		value := GetYesterday(table.date, table.layout)
   128  		if value != table.yesterday {
   129  			t.Errorf("Value of %s was incorrect, got: %v, want: %v.", table.date, value, table.yesterday)
   130  		}
   131  	}
   132  }