...

Source file src/edge-infra.dev/pkg/edge/compatibility/compatibility_test.go

Documentation: edge-infra.dev/pkg/edge/compatibility

     1  package compatibility
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func TestCompare(t *testing.T) {
    10  	testcases := []struct {
    11  		title         string
    12  		operation     Operation
    13  		staticVersion string
    14  		actualVersion string
    15  		err           error
    16  		expected      bool
    17  	}{
    18  		{
    19  			title:         "Test Case 1 - Equal Op (Variant 1)",
    20  			operation:     Equal,
    21  			staticVersion: "0.21",
    22  			actualVersion: "0.21",
    23  			err:           nil,
    24  			expected:      true,
    25  		},
    26  		{
    27  			title:         "Test Case 1 - Equal Op (Variant 2)",
    28  			operation:     Equal,
    29  			staticVersion: "latest",
    30  			actualVersion: "latest",
    31  			err:           nil,
    32  			expected:      true,
    33  		},
    34  		{
    35  			title:         "Test Case 1 - Equal Op (Variant 3)",
    36  			operation:     Equal,
    37  			staticVersion: "0.21",
    38  			actualVersion: "0.19",
    39  			err:           nil,
    40  			expected:      false,
    41  		},
    42  		{
    43  			title:         "Test Case 1 - Equal Op (Variant 4)",
    44  			operation:     Equal,
    45  			staticVersion: "",
    46  			actualVersion: "0.19",
    47  			err:           ErrStaticVersionRequired,
    48  			expected:      false,
    49  		},
    50  		{
    51  			title:         "Test Case 1 - Equal Op (Variant 4)",
    52  			operation:     Equal,
    53  			staticVersion: "latest",
    54  			actualVersion: "",
    55  			err:           ErrActualVersionRequired,
    56  			expected:      false,
    57  		},
    58  		{
    59  			title:         "Test Case 2 - LessThan Op (Variant 1)",
    60  			operation:     LessThan,
    61  			staticVersion: "latest",
    62  			actualVersion: "0.20",
    63  			err:           nil,
    64  			expected:      false,
    65  		},
    66  		{
    67  			title:         "Test Case 2 - LessThan Op (Variant 2)",
    68  			operation:     LessThan,
    69  			staticVersion: "0.19",
    70  			actualVersion: "0.20",
    71  			err:           nil,
    72  			expected:      true,
    73  		},
    74  		{
    75  			title:         "Test Case 2 - LessThan Op (Variant 3)",
    76  			operation:     LessThan,
    77  			staticVersion: "0.21",
    78  			actualVersion: "0.20",
    79  			err:           nil,
    80  			expected:      false,
    81  		},
    82  		{
    83  			title:         "Test Case 2 - LessThan Op (Variant 4)",
    84  			operation:     LessThan,
    85  			staticVersion: "0.21",
    86  			actualVersion: "0.21",
    87  			err:           nil,
    88  			expected:      false,
    89  		},
    90  		{
    91  			title:         "Test Case 3 - GreaterThan Op (Variant 1)",
    92  			operation:     GreaterThan,
    93  			staticVersion: "0.21",
    94  			actualVersion: "0.20",
    95  			err:           nil,
    96  			expected:      true,
    97  		},
    98  		{
    99  			title:         "Test Case 3 - GreaterThan Op (Variant 2)",
   100  			operation:     GreaterThan,
   101  			staticVersion: "latest",
   102  			actualVersion: "0.20",
   103  			err:           nil,
   104  			expected:      true,
   105  		},
   106  		{
   107  			title:         "Test Case 3 - GreaterThan Op (Variant 3)",
   108  			operation:     GreaterThan,
   109  			staticVersion: "0.20",
   110  			actualVersion: "latest",
   111  			err:           nil,
   112  			expected:      false,
   113  		},
   114  		{
   115  			title:         "Test Case 3 - GreaterThan Op (Variant 4)",
   116  			operation:     GreaterThan,
   117  			staticVersion: "0.20",
   118  			actualVersion: "0.20",
   119  			err:           nil,
   120  			expected:      false,
   121  		},
   122  		{
   123  			title:         "Test Case 4 - LessThanOrEqual Op (Variant 1)",
   124  			operation:     LessThanOrEqual,
   125  			staticVersion: "latest",
   126  			actualVersion: "0.20",
   127  			err:           nil,
   128  			expected:      false,
   129  		},
   130  		{
   131  			title:         "Test Case 4 - LessThanOrEqual Op (Variant 2)",
   132  			operation:     LessThanOrEqual,
   133  			staticVersion: "0.19",
   134  			actualVersion: "0.20",
   135  			err:           nil,
   136  			expected:      true,
   137  		},
   138  		{
   139  			title:         "Test Case 4 - LessThanOrEqual Op (Variant 3)",
   140  			operation:     LessThanOrEqual,
   141  			staticVersion: "latest",
   142  			actualVersion: "latest",
   143  			err:           nil,
   144  			expected:      true,
   145  		},
   146  		{
   147  			title:         "Test Case 4 - LessThanOrEqual Op (Variant 4)",
   148  			operation:     LessThanOrEqual,
   149  			staticVersion: "0.20",
   150  			actualVersion: "0.20",
   151  			err:           nil,
   152  			expected:      true,
   153  		},
   154  		{
   155  			title:         "Test Case 4 - LessThanOrEqual Op (Variant 5)",
   156  			operation:     LessThanOrEqual,
   157  			staticVersion: "0.21",
   158  			actualVersion: "0.20",
   159  			err:           nil,
   160  			expected:      false,
   161  		},
   162  		{
   163  			title:         "Test Case 5 - GreaterThanOrEqual Op (Variant 1)",
   164  			operation:     GreaterThanOrEqual,
   165  			staticVersion: "latest",
   166  			actualVersion: "0.20",
   167  			err:           nil,
   168  			expected:      true,
   169  		},
   170  		{
   171  			title:         "Test Case 5 - GreaterThanOrEqual Op (Variant 1)",
   172  			operation:     GreaterThanOrEqual,
   173  			staticVersion: "0.19",
   174  			actualVersion: "0.20",
   175  			err:           nil,
   176  			expected:      false,
   177  		},
   178  		{
   179  			title:         "Test Case 5 - GreaterThanOrEqual Op (Variant 1)",
   180  			operation:     GreaterThanOrEqual,
   181  			staticVersion: "latest",
   182  			actualVersion: "latest",
   183  			err:           nil,
   184  			expected:      true,
   185  		},
   186  		{
   187  			title:         "Test Case 5 - GreaterThanOrEqual Op (Variant 1)",
   188  			operation:     GreaterThanOrEqual,
   189  			staticVersion: "0.20",
   190  			actualVersion: "0.20",
   191  			err:           nil,
   192  			expected:      true,
   193  		},
   194  		{
   195  			title:         "Test Case 5 - GreaterThanOrEqual Op (Variant 1)",
   196  			operation:     GreaterThanOrEqual,
   197  			staticVersion: "0.21",
   198  			actualVersion: "0.20",
   199  			err:           nil,
   200  			expected:      true,
   201  		},
   202  	}
   203  	for _, testcase := range testcases {
   204  		t.Run(testcase.title, func(t *testing.T) {
   205  			t.Parallel()
   206  			res, err := Compare(testcase.operation, testcase.staticVersion, testcase.actualVersion)
   207  			if err != nil {
   208  				assert.ErrorIs(t, err, testcase.err)
   209  			} else {
   210  				assert.Equal(t, testcase.expected, res)
   211  			}
   212  		})
   213  	}
   214  }
   215  

View as plain text