github.com/TrueBlocks/trueblocks-core/src/apps/chifra@v0.0.0-20241022031540-b362680128f7/pkg/version/version_test.go (about)

     1  // Copyright 2021 The TrueBlocks Authors. All rights reserved.
     2  // Use of this source code is governed by a license that can
     3  // be found in the LICENSE file.
     4  
     5  package version
     6  
     7  import (
     8  	"reflect"
     9  	"testing"
    10  )
    11  
    12  func TestVersion(t *testing.T) {
    13  	early := Version{
    14  		Major:  0,
    15  		Minor:  10,
    16  		Build:  0,
    17  		Aspect: "",
    18  	}
    19  	late := Version{
    20  		Major:  0,
    21  		Minor:  20,
    22  		Build:  0,
    23  		Aspect: "",
    24  	}
    25  
    26  	if early.Uint64() >= late.Uint64() {
    27  		t.Error("early is not earlier than late")
    28  	}
    29  
    30  	if late.Uint64() < early.Uint64() {
    31  		t.Error("late is earlier than early")
    32  	}
    33  }
    34  
    35  func TestNewVersion(t *testing.T) {
    36  	type args struct {
    37  		str string
    38  	}
    39  	tests := []struct {
    40  		name     string
    41  		args     args
    42  		wantVers Version
    43  	}{
    44  		{
    45  			name: "library version string",
    46  			args: args{
    47  				str: "GHC-TrueBlocks//0.76.0-beta",
    48  			},
    49  			wantVers: Version{
    50  				Major:  0,
    51  				Minor:  76,
    52  				Build:  0,
    53  				Aspect: "beta",
    54  			},
    55  		},
    56  		{
    57  			name: "version 1.0.0",
    58  			args: args{
    59  				str: "v1.0.0-release",
    60  			},
    61  			wantVers: Version{
    62  				Major:  1,
    63  				Minor:  0,
    64  				Build:  0,
    65  				Aspect: "release",
    66  			},
    67  		},
    68  	}
    69  	for _, tt := range tests {
    70  		t.Run(tt.name, func(t *testing.T) {
    71  			gotVers := NewVersion(tt.args.str)
    72  			if !reflect.DeepEqual(gotVers, tt.wantVers) {
    73  				t.Errorf("NewVersion() = %v, want %v", gotVers, tt.wantVers)
    74  			}
    75  		})
    76  	}
    77  }
    78  
    79  func TestIsValidVersion(t *testing.T) {
    80  	tests := []struct {
    81  		test  string
    82  		valid bool
    83  	}{
    84  		{
    85  			test:  "1.0.0-release",
    86  			valid: false,
    87  		},
    88  		{
    89  			test:  "v1.0-release",
    90  			valid: false,
    91  		},
    92  		{
    93  			test:  "va.0.0-release",
    94  			valid: false,
    95  		},
    96  		{
    97  			test:  "v1.0.0-",
    98  			valid: false,
    99  		},
   100  		{
   101  			test:  "v1..0-beta",
   102  			valid: false},
   103  		{
   104  			test:  "v1.0.0-release",
   105  			valid: true,
   106  		},
   107  		{
   108  			test:  "trueblocks-core@v0.30.0", // special case
   109  			valid: true,
   110  		},
   111  	}
   112  
   113  	for _, tt := range tests {
   114  		res := IsValidVersion(tt.test)
   115  		if tt.valid != res {
   116  			t.Errorf("IsValidVersion(%s) = %v, want %v", tt.test, res, tt.valid)
   117  		}
   118  	}
   119  }