github.com/kisexp/xdchain@v0.0.0-20211206025815-490d6b732aa7/private/engine/tessera/tessera_version_checker_test.go (about)

     1  package tessera
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/kisexp/xdchain/private/engine"
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func checkParseSucceeds(t *testing.T, version []byte, expectedVersion Version) {
    11  	parsedVersion, err := parseVersion(version)
    12  	if err != nil {
    13  		t.Errorf("unexpected error")
    14  	}
    15  	if compareVersions(parsedVersion, expectedVersion) != 0 {
    16  		t.Errorf("unexpected major or middle version missmatch")
    17  	}
    18  }
    19  
    20  func TestParseVersion(t *testing.T) {
    21  	checkParseSucceeds(t, []byte("0.10.6"), Version{0, 10, 6})
    22  	checkParseSucceeds(t, []byte("0.10-SNAPSHOT"), Version{0, 10, 0})
    23  	checkParseSucceeds(t, []byte("0.10.1-SNAPSHOT"), Version{0, 10, 1})
    24  	checkParseSucceeds(t, []byte("0.10.0-SNAPSHOT"), Version{0, 10, 0})
    25  	checkParseSucceeds(t, []byte("0.11.12+12234"), Version{0, 11, 12})
    26  	checkParseSucceeds(t, []byte("0.11-SNAPSHOT"), Version{0, 11, 0})
    27  	// leading zeros in version components
    28  	checkParseSucceeds(t, []byte("000.0011-SNAPSHOT"), Version{0, 11, 0})
    29  
    30  	checkParseSucceeds(t, []byte("01.012 SNAPSHOT"), Version{1, 12, 0})
    31  
    32  	_, err := parseVersion([]byte("garbage"))
    33  	if err == nil {
    34  		t.Errorf("expecting error to be returned when garbage version is supplied")
    35  	}
    36  
    37  	_, err = parseVersion([]byte("1.garbage"))
    38  	if err == nil {
    39  		t.Errorf("expecting error to be returned when garbage version is supplied")
    40  	}
    41  }
    42  
    43  func TestVersionsComparison(t *testing.T) {
    44  	v1 := Version{1, 1, 1}
    45  	v2 := Version{1, 1, 1}
    46  	v3 := Version{2, 1, 1}
    47  	v4 := Version{1, 2, 1}
    48  	v5 := Version{1, 1, 2}
    49  	assert.Equal(t, 0, compareVersions(v1, v2), "versions should be equal")
    50  	assert.Equal(t, -1, compareVersions(v1, v3), "v1 shold be smaller than v3")
    51  	assert.Equal(t, 1, compareVersions(v3, v1), "v3 should be bigger than v1")
    52  	assert.Equal(t, -1, compareVersions(v1, v4), "v1 shold be smaller than v4")
    53  	assert.Equal(t, 1, compareVersions(v4, v1), "v4 should be bigger than v1")
    54  	assert.Equal(t, -1, compareVersions(v1, v5), "v1 shold be smaller than v5")
    55  	assert.Equal(t, 1, compareVersions(v5, v1), "v5 should be bigger than v1")
    56  }
    57  
    58  func TestTesseraVersionFeatures(t *testing.T) {
    59  	res := tesseraVersionFeatures(Version{2, 11, 12})
    60  	assert.Contains(t, res, engine.PrivacyEnhancements)
    61  	assert.Contains(t, res, engine.MultiTenancy)
    62  	res = tesseraVersionFeatures(Version{0, 12, 0})
    63  	assert.NotContains(t, res, engine.PrivacyEnhancements)
    64  	assert.NotContains(t, res, engine.MultiTenancy)
    65  	res = tesseraVersionFeatures(Version{0, 11, 15})
    66  	assert.NotContains(t, res, engine.PrivacyEnhancements)
    67  	assert.NotContains(t, res, engine.MultiTenancy)
    68  	res = tesseraVersionFeatures(Version{2, 0, 0})
    69  	assert.Contains(t, res, engine.PrivacyEnhancements)
    70  	assert.NotContains(t, res, engine.MultiTenancy)
    71  	res = tesseraVersionFeatures(Version{2, 1, 1})
    72  	assert.Contains(t, res, engine.PrivacyEnhancements)
    73  	assert.Contains(t, res, engine.MultiTenancy)
    74  	res = tesseraVersionFeatures(Version{3, 0, 0})
    75  	assert.Contains(t, res, engine.PrivacyEnhancements)
    76  	assert.Contains(t, res, engine.MultiTenancy)
    77  	assert.Contains(t, res, engine.MultiplePrivateStates)
    78  	assert.NotContains(t, res, engine.MandatoryRecipients)
    79  	res = tesseraVersionFeatures(Version{4, 0, 0})
    80  	assert.Contains(t, res, engine.PrivacyEnhancements)
    81  	assert.Contains(t, res, engine.MultiTenancy)
    82  	assert.Contains(t, res, engine.MultiplePrivateStates)
    83  	assert.Contains(t, res, engine.MandatoryRecipients)
    84  	res = tesseraVersionFeatures(zero)
    85  	assert.NotContains(t, res, engine.PrivacyEnhancements)
    86  	assert.NotContains(t, res, engine.MultiTenancy)
    87  	assert.Empty(t, res)
    88  }