github.com/evanw/esbuild@v0.21.4/internal/compat/compat_test.go (about)

     1  package compat
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/evanw/esbuild/internal/test"
     8  )
     9  
    10  func TestCompareVersions(t *testing.T) {
    11  	t.Helper()
    12  
    13  	check := func(a v, b Semver, expected rune) {
    14  		t.Helper()
    15  
    16  		at := fmt.Sprintf("%d.%d.%d", a.major, a.minor, a.patch)
    17  		bt := b.String()
    18  
    19  		t.Run(fmt.Sprintf("%q ? %q", at, bt), func(t *testing.T) {
    20  			observed := '='
    21  			if result := compareVersions(a, b); result < 0 {
    22  				observed = '<'
    23  			} else if result > 0 {
    24  				observed = '>'
    25  			}
    26  			if observed != expected {
    27  				test.AssertEqual(t, fmt.Sprintf("%c", observed), fmt.Sprintf("%c", expected))
    28  			}
    29  		})
    30  	}
    31  
    32  	check(v{0, 0, 0}, Semver{}, '=')
    33  
    34  	check(v{1, 0, 0}, Semver{}, '>')
    35  	check(v{0, 1, 0}, Semver{}, '>')
    36  	check(v{0, 0, 1}, Semver{}, '>')
    37  
    38  	check(v{0, 0, 0}, Semver{Parts: []int{1}}, '<')
    39  	check(v{0, 0, 0}, Semver{Parts: []int{0, 1}}, '<')
    40  	check(v{0, 0, 0}, Semver{Parts: []int{0, 0, 1}}, '<')
    41  
    42  	check(v{0, 4, 0}, Semver{Parts: []int{0, 5, 0}}, '<')
    43  	check(v{0, 5, 0}, Semver{Parts: []int{0, 5, 0}}, '=')
    44  	check(v{0, 6, 0}, Semver{Parts: []int{0, 5, 0}}, '>')
    45  
    46  	check(v{0, 5, 0}, Semver{Parts: []int{0, 5, 1}}, '<')
    47  	check(v{0, 5, 0}, Semver{Parts: []int{0, 5, 0}}, '=')
    48  	check(v{0, 5, 1}, Semver{Parts: []int{0, 5, 0}}, '>')
    49  
    50  	check(v{0, 5, 0}, Semver{Parts: []int{0, 5}}, '=')
    51  	check(v{0, 5, 1}, Semver{Parts: []int{0, 5}}, '>')
    52  
    53  	check(v{1, 0, 0}, Semver{Parts: []int{1}}, '=')
    54  	check(v{1, 1, 0}, Semver{Parts: []int{1}}, '>')
    55  	check(v{1, 0, 1}, Semver{Parts: []int{1}}, '>')
    56  
    57  	check(v{1, 2, 0}, Semver{Parts: []int{1, 2}, PreRelease: "-pre"}, '>')
    58  	check(v{1, 2, 1}, Semver{Parts: []int{1, 2}, PreRelease: "-pre"}, '>')
    59  	check(v{1, 1, 0}, Semver{Parts: []int{1, 2}, PreRelease: "-pre"}, '<')
    60  
    61  	check(v{1, 2, 3}, Semver{Parts: []int{1, 2, 3}, PreRelease: "-pre"}, '>')
    62  	check(v{1, 2, 2}, Semver{Parts: []int{1, 2, 3}, PreRelease: "-pre"}, '<')
    63  }