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 }