Skip to content

Commit e41a29a

Browse files
MuhammadAnnaqeebgparker42
authored andcommitted
Fix subset and superset for empty character set (#6000)
Fix isSubset() and isSuperset() involving the empty CharacterSet.
1 parent c09f092 commit e41a29a

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

stdlib/public/SDK/Foundation/CharacterSet.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,9 @@ public struct CharacterSet : ReferenceConvertible, Equatable, Hashable, SetAlgeb
436436

437437
/// Returns true if `self` is a superset of `other`.
438438
public func isSuperset(of other: CharacterSet) -> Bool {
439+
if other.isEmpty {
440+
return true
441+
}
439442
return _mapUnmanaged { $0.isSuperset(of: other) }
440443
}
441444

test/stdlib/TestCharacterSet.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,16 @@ class TestCharacterSet : TestCharacterSetSuper {
241241
expectEqual(0x6, bitmap[12])
242242
expectEqual(8192, bitmap.count)
243243
}
244+
func test_superSetOfEmptySet(){
245+
let emptySet = CharacterSet()
246+
let immutableSet = CharacterSet(charactersIn:"abc")
247+
expectTrue(emptySet.isSubset(of: immutableSet))
248+
expectTrue(immutableSet.isSuperset(of: emptySet))
249+
expectTrue(emptySet.isSubset(of: emptySet))
250+
expectTrue(emptySet.isSuperset(of: emptySet))
251+
expectFalse(emptySet.isSuperset(of: immutableSet))
252+
expectFalse(immutableSet.isSubset(of: emptySet))
253+
}
244254
}
245255

246256

@@ -264,6 +274,7 @@ CharacterSetTests.test("test_subtractNonEmptySet") { TestCharacterSet().test_sub
264274
CharacterSetTests.test("test_symmetricDifference") { TestCharacterSet().test_symmetricDifference() }
265275
CharacterSetTests.test("test_hasMember") { TestCharacterSet().test_hasMember() }
266276
CharacterSetTests.test("test_bitmap") { TestCharacterSet().test_bitmap() }
277+
CharacterSetTests.test("test_superSetOfEmptySet") { TestCharacterSet().test_superSetOfEmptySet() }
267278
runAllTests()
268279
#endif
269280

0 commit comments

Comments
 (0)