From 147087ca43f3a0c4713b85d3a6d175632474d370 Mon Sep 17 00:00:00 2001 From: Karoy Lorentey Date: Fri, 24 Jan 2020 16:40:44 -0800 Subject: [PATCH 1/2] [test] Adjust new Substring test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We don’t have an easy way to check for the runtime version of the stdlib, so a two-way check for behavioral changes isn’t feasible. (Checking for the OS version isn’t good enough.) Only check for the new behavior, and only when we know for sure that it’s available. --- test/stdlib/subString.swift | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/test/stdlib/subString.swift b/test/stdlib/subString.swift index c1dd2291c2f07..9abdb7044066e 100644 --- a/test/stdlib/subString.swift +++ b/test/stdlib/subString.swift @@ -252,23 +252,21 @@ SubstringTests.test("UTF8View") { expectEqual("", String(u.dropFirst(100))!) expectEqual("", String(u.dropLast(100))!) - let expectSubstringWCSIA: Bool - // This availability guard should refer to a concrete OS version in - // future. - if #available(macOS 9999, iOS 9999, watchOS 9999, tvOS 9999, *) { - expectSubstringWCSIA = true - } else { - expectSubstringWCSIA = false - } - checkHasContiguousStorage(s.utf8, expected: true) // Strings always do - checkHasContiguousStorage(t, expected: expectSubstringWCSIA) - checkHasContiguousStorage(u, expected: expectSubstringWCSIA) checkHasContiguousStorageSubstring(t) checkHasContiguousStorageSubstring(u) checkMatchContiguousStorage(Array(s.utf8), s.utf8, expected: true) - checkMatchContiguousStorage(Array(t), t, expected: expectSubstringWCSIA) - checkMatchContiguousStorage(Array(u), u, expected: expectSubstringWCSIA) + + // The specialization for Substring.withContiguousStorageIfAvailable was + // added in https://github.com/apple/swift/pull/29146. + guard #available(macOS 9999, iOS 9999, watchOS 9999, tvOS 9999, *) else { + return + } + + checkHasContiguousStorage(t, expected: true) + checkHasContiguousStorage(u, expected: true) + checkMatchContiguousStorage(Array(t), t, expected: true) + checkMatchContiguousStorage(Array(u), u, expected: true) } } From b7eb2fced0d498d3be3fd1ba8aeda8cb65d736af Mon Sep 17 00:00:00 2001 From: Karoy Lorentey Date: Fri, 24 Jan 2020 16:41:47 -0800 Subject: [PATCH 2/2] [test] Substring: remove unnecessary `expected` arguments The previous commit made these redundant. --- test/stdlib/subString.swift | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/test/stdlib/subString.swift b/test/stdlib/subString.swift index 9abdb7044066e..e670910bb55b9 100644 --- a/test/stdlib/subString.swift +++ b/test/stdlib/subString.swift @@ -12,22 +12,17 @@ func checkMatch(_ x: S, _ y: T, _ i: S.Index) expectEqual(x[i], y[i]) } -func checkMatchContiguousStorage(_ x: S, _ y: T, expected: Bool) +func checkMatchContiguousStorage(_ x: S, _ y: T) where S.Element == T.Element, S.Element: Equatable { let xElement = x.withContiguousStorageIfAvailable { $0.first } let yElement = y.withContiguousStorageIfAvailable { $0.first } - if expected { - expectEqual(xElement, yElement) - } else { - expectNotEqual(xElement, yElement) - } + expectEqual(xElement, yElement) } -func checkHasContiguousStorage(_ x: S, expected: Bool) { - let hasStorage = x.withContiguousStorageIfAvailable { _ in true } ?? false - expectEqual(hasStorage, expected) +func checkHasContiguousStorage(_ x: S) { + expectTrue(x.withContiguousStorageIfAvailable { _ in true } ?? false) } func checkHasContiguousStorageSubstring(_ x: Substring.UTF8View) { @@ -252,21 +247,21 @@ SubstringTests.test("UTF8View") { expectEqual("", String(u.dropFirst(100))!) expectEqual("", String(u.dropLast(100))!) - checkHasContiguousStorage(s.utf8, expected: true) // Strings always do + + checkHasContiguousStorage(s.utf8) // Strings always do checkHasContiguousStorageSubstring(t) checkHasContiguousStorageSubstring(u) - checkMatchContiguousStorage(Array(s.utf8), s.utf8, expected: true) + checkMatchContiguousStorage(Array(s.utf8), s.utf8) // The specialization for Substring.withContiguousStorageIfAvailable was // added in https://github.com/apple/swift/pull/29146. guard #available(macOS 9999, iOS 9999, watchOS 9999, tvOS 9999, *) else { return } - - checkHasContiguousStorage(t, expected: true) - checkHasContiguousStorage(u, expected: true) - checkMatchContiguousStorage(Array(t), t, expected: true) - checkMatchContiguousStorage(Array(u), u, expected: true) + checkHasContiguousStorage(t) + checkHasContiguousStorage(u) + checkMatchContiguousStorage(Array(t), t) + checkMatchContiguousStorage(Array(u), u) } }