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 }