blob: 6b2a8ec03f8586291bc475881440f775dae93c19 [file]
package utils_test
import (
"github.com/apache/cloudberry-backup/utils"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
var _ = Describe("utils/set tests", func() {
Describe("NewSet", func() {
It("can create a set from an empty list", func() {
emptySet := utils.NewSet([]string{})
expectedMap := map[string]bool{}
Expect(emptySet.Set).To(Equal(expectedMap))
Expect(emptySet.IsExclude).To(BeFalse())
Expect(emptySet.AlwaysMatchesFilter).To(BeFalse())
})
It("can create a set from a list of strings", func() {
setWithEntries := utils.NewSet([]string{"foo", "bar"})
expectedMap := map[string]bool{"foo": true, "bar": true}
Expect(setWithEntries.Set).To(Equal(expectedMap))
Expect(setWithEntries.IsExclude).To(BeFalse())
Expect(setWithEntries.AlwaysMatchesFilter).To(BeFalse())
})
})
Describe("NewIncludeSet", func() {
It("can create a set from an empty list", func() {
emptyInclude := utils.NewIncludeSet([]string{})
expectedMap := map[string]bool{}
Expect(emptyInclude.Set).To(Equal(expectedMap))
Expect(emptyInclude.IsExclude).To(BeFalse())
Expect(emptyInclude.AlwaysMatchesFilter).To(BeTrue())
})
It("can create a set from a list of strings", func() {
includeWithEntries := utils.NewIncludeSet([]string{"foo", "bar"})
expectedMap := map[string]bool{"foo": true, "bar": true}
Expect(includeWithEntries.Set).To(Equal(expectedMap))
Expect(includeWithEntries.IsExclude).To(BeFalse())
Expect(includeWithEntries.AlwaysMatchesFilter).To(BeFalse())
})
})
Describe("NewExcludeSet", func() {
It("can create a set from an empty list", func() {
emptyExclude := utils.NewExcludeSet([]string{})
expectedMap := map[string]bool{}
Expect(emptyExclude.Set).To(Equal(expectedMap))
Expect(emptyExclude.IsExclude).To(BeTrue())
Expect(emptyExclude.AlwaysMatchesFilter).To(BeTrue())
})
It("can create a set from a list of strings", func() {
excludeWithEntries := utils.NewExcludeSet([]string{"foo", "bar"})
expectedMap := map[string]bool{"foo": true, "bar": true}
Expect(excludeWithEntries.Set).To(Equal(expectedMap))
Expect(excludeWithEntries.IsExclude).To(BeTrue())
Expect(excludeWithEntries.AlwaysMatchesFilter).To(BeFalse())
})
})
Describe("MatchesFilter", func() {
Context("Include Set", func() {
It("returns true if an item is in a non-empty include set", func() {
includeWithEntries := utils.NewIncludeSet([]string{"foo", "bar"})
Expect(includeWithEntries.MatchesFilter("foo")).To(BeTrue())
})
It("returns false if an item is not in a non-empty include set", func() {
includeWithEntries := utils.NewIncludeSet([]string{"foo", "bar"})
Expect(includeWithEntries.MatchesFilter("nonexistent")).To(BeFalse())
})
It("returns true if an include set is empty", func() {
emptyInclude := utils.NewIncludeSet([]string{})
Expect(emptyInclude.MatchesFilter("foo")).To(BeTrue())
})
})
Context("Exclude Set", func() {
It("returns true if an item is not in a non-empty exclude set", func() {
excludeWithEntries := utils.NewExcludeSet([]string{"foo", "bar"})
Expect(excludeWithEntries.MatchesFilter("nonexistent")).To(BeTrue())
})
It("returns false if an item is in a non-empty exclude set", func() {
excludeWithEntries := utils.NewExcludeSet([]string{"foo", "bar"})
Expect(excludeWithEntries.MatchesFilter("foo")).To(BeFalse())
})
It("returns true if an exclude set is empty", func() {
emptyExclude := utils.NewExcludeSet([]string{})
Expect(emptyExclude.MatchesFilter("foo")).To(BeTrue())
})
})
})
Describe("Length", func() {
It("returns the length of the underlying map", func() {
setWithEntries := utils.NewSet([]string{"foo", "bar"})
Expect(setWithEntries.Length()).To(Equal(2))
})
})
Describe("Equals", func() {
set1 := utils.NewIncludeSet([]string{"foo", "bar"})
set1Copy := utils.NewIncludeSet([]string{"foo", "bar"})
set2 := utils.NewIncludeSet([]string{"foo"})
set3 := utils.NewIncludeSet([]string{"foo", "baz"})
Context("sets have different elements", func() {
It("returns false if sets have different number of elements", func() {
Expect(set1.Equals(set2)).To(BeFalse())
})
It("returns false if sets have different elements", func() {
Expect(set1.Equals(set3)).To(BeFalse())
})
})
It("returns true if sets have the same elements", func() {
Expect(set1.Equals(set1Copy)).To(BeTrue())
})
It("returns true if both sets are empty", func() {
Expect(utils.NewIncludeSet([]string{}).Equals(utils.NewIncludeSet([]string{}))).To(BeTrue())
})
})
})