github.com/minio/minio@v0.0.0-20240328213742-3f72439b8a27/internal/event/targetidset_test.go (about)

     1  // Copyright (c) 2015-2021 MinIO, Inc.
     2  //
     3  // This file is part of MinIO Object Storage stack
     4  //
     5  // This program is free software: you can redistribute it and/or modify
     6  // it under the terms of the GNU Affero General Public License as published by
     7  // the Free Software Foundation, either version 3 of the License, or
     8  // (at your option) any later version.
     9  //
    10  // This program is distributed in the hope that it will be useful
    11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    13  // GNU Affero General Public License for more details.
    14  //
    15  // You should have received a copy of the GNU Affero General Public License
    16  // along with this program.  If not, see <http://www.gnu.org/licenses/>.
    17  
    18  package event
    19  
    20  import (
    21  	"reflect"
    22  	"testing"
    23  )
    24  
    25  func TestTargetIDSetClone(t *testing.T) {
    26  	testCases := []struct {
    27  		set           TargetIDSet
    28  		targetIDToAdd TargetID
    29  	}{
    30  		{NewTargetIDSet(), TargetID{"1", "webhook"}},
    31  		{NewTargetIDSet(TargetID{"1", "webhook"}), TargetID{"2", "webhook"}},
    32  		{NewTargetIDSet(TargetID{"1", "webhook"}, TargetID{"2", "amqp"}), TargetID{"2", "webhook"}},
    33  	}
    34  
    35  	for i, testCase := range testCases {
    36  		result := testCase.set.Clone()
    37  
    38  		if !reflect.DeepEqual(result, testCase.set) {
    39  			t.Fatalf("test %v: result: expected: %v, got: %v", i+1, testCase.set, result)
    40  		}
    41  
    42  		result.add(testCase.targetIDToAdd)
    43  		if reflect.DeepEqual(result, testCase.set) {
    44  			t.Fatalf("test %v: result: expected: not equal, got: equal", i+1)
    45  		}
    46  	}
    47  }
    48  
    49  func TestTargetIDSetUnion(t *testing.T) {
    50  	testCases := []struct {
    51  		set            TargetIDSet
    52  		setToAdd       TargetIDSet
    53  		expectedResult TargetIDSet
    54  	}{
    55  		{NewTargetIDSet(), NewTargetIDSet(), NewTargetIDSet()},
    56  		{NewTargetIDSet(), NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet(TargetID{"1", "webhook"})},
    57  		{NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet(), NewTargetIDSet(TargetID{"1", "webhook"})},
    58  		{NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet(TargetID{"2", "amqp"}), NewTargetIDSet(TargetID{"1", "webhook"}, TargetID{"2", "amqp"})},
    59  		{NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet(TargetID{"1", "webhook"})},
    60  	}
    61  
    62  	for i, testCase := range testCases {
    63  		result := testCase.set.Union(testCase.setToAdd)
    64  
    65  		if !reflect.DeepEqual(testCase.expectedResult, result) {
    66  			t.Fatalf("test %v: result: expected: %v, got: %v", i+1, testCase.expectedResult, result)
    67  		}
    68  	}
    69  }
    70  
    71  func TestTargetIDSetDifference(t *testing.T) {
    72  	testCases := []struct {
    73  		set            TargetIDSet
    74  		setToRemove    TargetIDSet
    75  		expectedResult TargetIDSet
    76  	}{
    77  		{NewTargetIDSet(), NewTargetIDSet(), NewTargetIDSet()},
    78  		{NewTargetIDSet(), NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet()},
    79  		{NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet(), NewTargetIDSet(TargetID{"1", "webhook"})},
    80  		{NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet(TargetID{"2", "amqp"}), NewTargetIDSet(TargetID{"1", "webhook"})},
    81  		{NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet(TargetID{"1", "webhook"}), NewTargetIDSet()},
    82  	}
    83  
    84  	for i, testCase := range testCases {
    85  		result := testCase.set.Difference(testCase.setToRemove)
    86  
    87  		if !reflect.DeepEqual(testCase.expectedResult, result) {
    88  			t.Fatalf("test %v: result: expected: %v, got: %v", i+1, testCase.expectedResult, result)
    89  		}
    90  	}
    91  }
    92  
    93  func TestNewTargetIDSet(t *testing.T) {
    94  	testCases := []struct {
    95  		targetIDs      []TargetID
    96  		expectedResult TargetIDSet
    97  	}{
    98  		{[]TargetID{}, NewTargetIDSet()},
    99  		{[]TargetID{{"1", "webhook"}}, NewTargetIDSet(TargetID{"1", "webhook"})},
   100  		{[]TargetID{{"1", "webhook"}, {"2", "amqp"}}, NewTargetIDSet(TargetID{"1", "webhook"}, TargetID{"2", "amqp"})},
   101  	}
   102  
   103  	for i, testCase := range testCases {
   104  		result := NewTargetIDSet(testCase.targetIDs...)
   105  
   106  		if !reflect.DeepEqual(testCase.expectedResult, result) {
   107  			t.Fatalf("test %v: result: expected: %v, got: %v", i+1, testCase.expectedResult, result)
   108  		}
   109  	}
   110  }