go-hep.org/x/hep@v0.38.1/groot/riofs/utils_test.go (about)

     1  // Copyright ©2018 The go-hep 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 riofs
     6  
     7  import (
     8  	"testing"
     9  	"time"
    10  )
    11  
    12  func TestDatime2time(t *testing.T) {
    13  	for _, tc := range []struct {
    14  		datime uint32
    15  		want   time.Time
    16  	}{
    17  		{
    18  			datime: 1576331001,
    19  			want:   time.Date(2018, time.July, 26, 14, 27, 57, 0, time.UTC),
    20  		},
    21  		{
    22  			datime: 1576331001,
    23  			want:   time.Date(2018, time.July, 26, 14, 27, 57, 0, time.UTC),
    24  		},
    25  		{
    26  			datime: 347738243,
    27  			want:   time.Date(2000, time.February, 29, 1, 2, 3, 0, time.UTC),
    28  		},
    29  		{
    30  			datime: 4325376,
    31  			want:   time.Date(1995, time.January, 1, 0, 0, 0, 0, time.UTC),
    32  		},
    33  	} {
    34  		t.Run(tc.want.String(), func(t *testing.T) {
    35  			got := datime2time(tc.datime)
    36  			if !got.Equal(tc.want) {
    37  				t.Fatalf("got=%v. want=%v", got, tc.want)
    38  			}
    39  
    40  			datime := time2datime(tc.want)
    41  			if datime != tc.datime {
    42  				t.Fatalf("got=%v. want=%v", datime, tc.datime)
    43  			}
    44  		})
    45  	}
    46  }
    47  
    48  func TestTime2Datime(t *testing.T) {
    49  	for _, tc := range []struct {
    50  		time    time.Time
    51  		want    uint32
    52  		panicks bool
    53  	}{
    54  		{
    55  			time: time.Date(2018, time.July, 26, 14, 27, 57, 0, time.UTC),
    56  			want: 1576331001,
    57  		},
    58  		{
    59  			time: time.Date(2000, time.February, 29, 1, 2, 3, 0, time.UTC),
    60  			want: 347738243,
    61  		},
    62  		{
    63  			time: time.Date(1995, time.January, 1, 0, 0, 0, 0, time.UTC),
    64  			want: 4325376,
    65  		},
    66  		{
    67  			time:    time.Date(1970, time.January, 1, 0, 0, 0, 0, time.UTC),
    68  			panicks: true,
    69  		},
    70  	} {
    71  		t.Run(tc.time.String(), func(t *testing.T) {
    72  			if tc.panicks {
    73  				defer func() {
    74  					if recover() == nil {
    75  						t.Fatalf("should have panicked.")
    76  					}
    77  				}()
    78  			}
    79  			{
    80  				got := time2datime(tc.time)
    81  				if got != tc.want {
    82  					t.Fatalf("got=%v. want=%v", got, tc.want)
    83  				}
    84  			}
    85  
    86  			{
    87  				got := datime2time(tc.want)
    88  				if !got.Equal(tc.time) {
    89  					t.Fatalf("got=%v. want=%v", got, tc.time)
    90  				}
    91  			}
    92  		})
    93  	}
    94  }
    95  
    96  func TestDecodeNameCycle(t *testing.T) {
    97  	for _, tc := range []struct {
    98  		nc     string
    99  		name   string
   100  		cycle  int16
   101  		panics bool
   102  	}{
   103  		{
   104  			nc:    "name",
   105  			name:  "name",
   106  			cycle: 9999,
   107  		},
   108  		{
   109  			nc:    "name;0",
   110  			name:  "name",
   111  			cycle: 0,
   112  		},
   113  		{
   114  			nc:    "name;1",
   115  			name:  "name",
   116  			cycle: 1,
   117  		},
   118  		{
   119  			nc:    "name;42",
   120  			name:  "name",
   121  			cycle: 42,
   122  		},
   123  		{
   124  			nc:    "name;42.0",
   125  			name:  "name",
   126  			cycle: 9999,
   127  		},
   128  		{
   129  			nc:    "name;e",
   130  			name:  "name",
   131  			cycle: 9999,
   132  		},
   133  		{
   134  			nc:     "nam;e;1",
   135  			name:   "name",
   136  			cycle:  0,
   137  			panics: true,
   138  		},
   139  	} {
   140  		t.Run(tc.nc, func(t *testing.T) {
   141  			if tc.panics {
   142  				defer func() {
   143  					e := recover()
   144  					if e == nil {
   145  						t.Fatalf("should have panicked.")
   146  					}
   147  				}()
   148  			}
   149  			n, c := decodeNameCycle(tc.nc)
   150  			if n != tc.name {
   151  				t.Fatalf("got=%q. want=%q", n, tc.name)
   152  			}
   153  			if c != tc.cycle {
   154  				t.Fatalf("got=%d. want=%d", c, tc.cycle)
   155  			}
   156  		})
   157  	}
   158  }