github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/roachpb/version_test.go (about) 1 // Copyright 2017 The Cockroach Authors. 2 // 3 // Use of this software is governed by the Business Source License 4 // included in the file licenses/BSL.txt. 5 // 6 // As of the Change Date specified in that file, in accordance with 7 // the Business Source License, use of this software will be governed 8 // by the Apache License, Version 2.0, included in the file 9 // licenses/APL.txt. 10 11 package roachpb 12 13 import ( 14 "testing" 15 16 "github.com/kr/pretty" 17 ) 18 19 func TestVersionLess(t *testing.T) { 20 v := func(major, minor, patch, unstable int32) Version { 21 return Version{ 22 Major: major, 23 Minor: minor, 24 Patch: patch, 25 Unstable: unstable, 26 } 27 } 28 testData := []struct { 29 v1, v2 Version 30 less bool 31 }{ 32 {v1: Version{}, v2: Version{}, less: false}, 33 {v1: v(0, 0, 0, 0), v2: v(0, 0, 0, 1), less: true}, 34 {v1: v(0, 0, 0, 2), v2: v(0, 0, 0, 1), less: false}, 35 {v1: v(0, 0, 1, 0), v2: v(0, 0, 0, 1), less: false}, 36 {v1: v(0, 0, 1, 0), v2: v(0, 0, 0, 2), less: false}, 37 {v1: v(0, 0, 1, 1), v2: v(0, 0, 1, 1), less: false}, 38 {v1: v(0, 0, 1, 0), v2: v(0, 0, 1, 1), less: true}, 39 {v1: v(0, 1, 1, 0), v2: v(0, 1, 0, 1), less: false}, 40 {v1: v(0, 1, 0, 1), v2: v(0, 1, 1, 0), less: true}, 41 {v1: v(1, 0, 0, 0), v2: v(1, 1, 0, 0), less: true}, 42 {v1: v(1, 1, 0, 1), v2: v(1, 1, 0, 0), less: false}, 43 {v1: v(1, 1, 0, 1), v2: v(1, 2, 0, 0), less: true}, 44 {v1: v(2, 1, 0, 0), v2: v(19, 1, 0, 0), less: true}, 45 {v1: v(19, 1, 0, 0), v2: v(19, 2, 0, 0), less: true}, 46 {v1: v(19, 2, 0, 0), v2: v(20, 1, 0, 0), less: true}, 47 } 48 49 for _, test := range testData { 50 t.Run("", func(t *testing.T) { 51 if a, e := test.v1.Less(test.v2), test.less; a != e { 52 t.Errorf("expected %s < %s? %t; got %t", pretty.Sprint(test.v1), pretty.Sprint(test.v2), e, a) 53 } 54 }) 55 } 56 }