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  }