From c404cf21bfb6ba3aa8e790b4a36c0e40784cf7a1 Mon Sep 17 00:00:00 2001 From: Rene Treffer Date: Wed, 27 Jan 2016 21:28:22 +0100 Subject: [PATCH 1/2] Failing string ordering on linux test This testcase illustrates a problem on linux where - at the time of writing - the strings "a" and "a\0" satisfied "a" <= "a\0" "a" >= "a\0" "a" != "a\0" --- test/1_stdlib/StringOrderRelation.swift | 28 +++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 test/1_stdlib/StringOrderRelation.swift diff --git a/test/1_stdlib/StringOrderRelation.swift b/test/1_stdlib/StringOrderRelation.swift new file mode 100644 index 0000000000000..3f28b54a90102 --- /dev/null +++ b/test/1_stdlib/StringOrderRelation.swift @@ -0,0 +1,28 @@ +// RUN: %target-run-simple-swift +// REQUIRES: executable_test + +import StdlibUnittest + +// Also import modules which are used by StdlibUnittest internally. This +// workaround is needed to link all required libraries in case we compile +// StdlibUnittest with -sil-serialize-all. +import SwiftPrivate +#if _runtime(_ObjC) +import ObjectiveC +#endif + +var StringOrderRelationTestSuite = TestSuite("StringOrderRelation") + +StringOrderRelationTestSuite.test("StringOrderRelation/ASCII/NullByte") { + let baseString = "a" + let nullbyteString = "a\0" + expectTrue(baseString < nullbyteString) + expectTrue(baseString <= nullbyteString) + expectFalse(baseString > nullbyteString) + expectFalse(baseString >= nullbyteString) + expectFalse(baseString == nullbyteString) + expectTrue(baseString != nullbyteString) +} + +runAllTests() + From 82fa471368af2a83ffdda84547ea20442001d809 Mon Sep 17 00:00:00 2001 From: Rene Treffer Date: Wed, 27 Jan 2016 23:09:17 +0100 Subject: [PATCH 2/2] Add .xfail for platforms without Objc runtime (FreeBSD and Linux) --- test/1_stdlib/StringOrderRelation.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/1_stdlib/StringOrderRelation.swift b/test/1_stdlib/StringOrderRelation.swift index 3f28b54a90102..00c39168373ff 100644 --- a/test/1_stdlib/StringOrderRelation.swift +++ b/test/1_stdlib/StringOrderRelation.swift @@ -13,7 +13,10 @@ import ObjectiveC var StringOrderRelationTestSuite = TestSuite("StringOrderRelation") -StringOrderRelationTestSuite.test("StringOrderRelation/ASCII/NullByte") { +StringOrderRelationTestSuite.test("StringOrderRelation/ASCII/NullByte") + .xfail(.LinuxAny(reason: "String comparison: ICU vs. Foundation")) + .xfail(.FreeBSDAny(reason: "String comparison: ICU vs. Foundation")) + .code { let baseString = "a" let nullbyteString = "a\0" expectTrue(baseString < nullbyteString)