github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/core/facades/facade_test.go (about) 1 // Copyright 2023 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package facades 5 6 import ( 7 gc "gopkg.in/check.v1" 8 9 "github.com/juju/juju/testing" 10 ) 11 12 type FacadeSuite struct { 13 testing.BaseSuite 14 } 15 16 var _ = gc.Suite(&FacadeSuite{}) 17 18 func (s *FacadeSuite) TestBestVersion(c *gc.C) { 19 tests := []struct { 20 versions FacadeVersion 21 desired FacadeVersion 22 expected int 23 }{{ 24 versions: FacadeVersion{1, 2, 3}, 25 desired: FacadeVersion{1}, 26 expected: 1, 27 }, { 28 versions: FacadeVersion{1, 2, 3}, 29 desired: FacadeVersion{1, 2}, 30 expected: 2, 31 }, { 32 versions: FacadeVersion{1, 2, 3}, 33 desired: FacadeVersion{1, 2, 3}, 34 expected: 3, 35 }, { 36 versions: FacadeVersion{}, 37 desired: FacadeVersion{0, 1, 2}, 38 expected: 0, 39 }} 40 for i, test := range tests { 41 c.Logf("test %d", i) 42 c.Check(BestVersion(test.desired, test.versions), gc.Equals, test.expected) 43 } 44 } 45 46 func (s *FacadeSuite) TestCompleteIntersection(c *gc.C) { 47 tests := []struct { 48 src FacadeVersions 49 dst FacadeVersions 50 expected bool 51 }{{ 52 src: FacadeVersions{ 53 "foo": FacadeVersion{1, 2, 3}, 54 }, 55 dst: FacadeVersions{ 56 "foo": FacadeVersion{1, 2, 3}, 57 }, 58 expected: true, 59 }, { 60 src: FacadeVersions{ 61 "bar": FacadeVersion{1, 2, 3}, 62 }, 63 dst: FacadeVersions{ 64 "foo": FacadeVersion{1, 2, 3}, 65 }, 66 expected: false, 67 }, { 68 src: FacadeVersions{ 69 "foo": FacadeVersion{3, 4, 5}, 70 }, 71 dst: FacadeVersions{ 72 "foo": FacadeVersion{1, 2, 3}, 73 }, 74 expected: true, 75 }, { 76 src: FacadeVersions{ 77 "foo": FacadeVersion{4, 5}, 78 }, 79 dst: FacadeVersions{ 80 "foo": FacadeVersion{1, 2, 3}, 81 }, 82 expected: false, 83 }, { 84 src: FacadeVersions{ 85 "foo": FacadeVersion{2, 3, 4}, 86 }, 87 dst: FacadeVersions{ 88 "foo": FacadeVersion{1}, 89 }, 90 expected: false, 91 }, { 92 src: FacadeVersions{ 93 "foo": FacadeVersion{1, 2, 3}, 94 "bar": FacadeVersion{3}, 95 }, 96 dst: FacadeVersions{ 97 "foo": FacadeVersion{1, 2, 3}, 98 "bar": FacadeVersion{1, 3}, 99 }, 100 expected: true, 101 }} 102 for i, test := range tests { 103 c.Logf("test %d", i) 104 c.Check(CompleteIntersection(test.src, test.dst), gc.Equals, test.expected) 105 } 106 }