storj.io/minio@v0.0.0-20230509071714-0cbc90f649b1/pkg/event/targetidset_test.go (about)

     1  /*
     2   * MinIO Cloud Storage, (C) 2018 MinIO, Inc.
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16  
    17  package event
    18  
    19  import (
    20  	"reflect"
    21  	"testing"
    22  )
    23  
    24  func TestTargetIDSetClone(t *testing.T) {
    25  	testCases := []struct {
    26  		set           TargetIDSet
    27  		targetIDToAdd TargetID
    28  	}{
    29  		{NewTargetIDSet(), TargetID{"1", "webhook"}},
    30  		{NewTargetIDSet(TargetID{"1", "webhook"}), TargetID{"2", "webhook"}},
    31  		{NewTargetIDSet(TargetID{"1", "webhook"}, TargetID{"2", "amqp"}), TargetID{"2", "webhook"}},
    32  	}
    33  
    34  	for i, testCase := range testCases {
    35  		result := testCase.set.Clone()
    36  
    37  		if !reflect.DeepEqual(result, testCase.set) {
    38  			t.Fatalf("test %v: result: expected: %v, got: %v", i+1, testCase.set, result)
    39  		}
    40  
    41  		result.add(testCase.targetIDToAdd)
    42  		if reflect.DeepEqual(result, testCase.set) {
    43  			t.Fatalf("test %v: result: expected: not equal, got: equal", i+1)
    44  		}
    45  	}
    46  }
    47  
    48  func TestTargetIDSetUnion(t *testing.T) {
    49  	testCases := []struct {
    50  		set            TargetIDSet
    51  		setToAdd       TargetIDSet
    52  		expectedResult TargetIDSet
    53  	}{
    54  		{NewTargetIDSet(), NewTargetIDSet(), NewTargetIDSet()},
    55  		{NewTargetIDSet(), NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet(TargetID{"1", "webhook"})},
    56  		{NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet(), NewTargetIDSet(TargetID{"1", "webhook"})},
    57  		{NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet(TargetID{"2", "amqp"}), NewTargetIDSet(TargetID{"1", "webhook"}, TargetID{"2", "amqp"})},
    58  		{NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet(TargetID{"1", "webhook"})},
    59  	}
    60  
    61  	for i, testCase := range testCases {
    62  		result := testCase.set.Union(testCase.setToAdd)
    63  
    64  		if !reflect.DeepEqual(testCase.expectedResult, result) {
    65  			t.Fatalf("test %v: result: expected: %v, got: %v", i+1, testCase.expectedResult, result)
    66  		}
    67  	}
    68  }
    69  
    70  func TestTargetIDSetDifference(t *testing.T) {
    71  	testCases := []struct {
    72  		set            TargetIDSet
    73  		setToRemove    TargetIDSet
    74  		expectedResult TargetIDSet
    75  	}{
    76  		{NewTargetIDSet(), NewTargetIDSet(), NewTargetIDSet()},
    77  		{NewTargetIDSet(), NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet()},
    78  		{NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet(), NewTargetIDSet(TargetID{"1", "webhook"})},
    79  		{NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet(TargetID{"2", "amqp"}), NewTargetIDSet(TargetID{"1", "webhook"})},
    80  		{NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet()},
    81  	}
    82  
    83  	for i, testCase := range testCases {
    84  		result := testCase.set.Difference(testCase.setToRemove)
    85  
    86  		if !reflect.DeepEqual(testCase.expectedResult, result) {
    87  			t.Fatalf("test %v: result: expected: %v, got: %v", i+1, testCase.expectedResult, result)
    88  		}
    89  	}
    90  }
    91  
    92  func TestNewTargetIDSet(t *testing.T) {
    93  	testCases := []struct {
    94  		targetIDs      []TargetID
    95  		expectedResult TargetIDSet
    96  	}{
    97  		{[]TargetID{}, NewTargetIDSet()},
    98  		{[]TargetID{{"1", "webhook"}}, NewTargetIDSet(TargetID{"1", "webhook"})},
    99  		{[]TargetID{{"1", "webhook"}, {"2", "amqp"}}, NewTargetIDSet(TargetID{"1", "webhook"}, TargetID{"2", "amqp"})},
   100  	}
   101  
   102  	for i, testCase := range testCases {
   103  		result := NewTargetIDSet(testCase.targetIDs...)
   104  
   105  		if !reflect.DeepEqual(testCase.expectedResult, result) {
   106  			t.Fatalf("test %v: result: expected: %v, got: %v", i+1, testCase.expectedResult, result)
   107  		}
   108  	}
   109  }