From 0cdaa338c63b8d10a7d21038a38c4b6b081b6ee0 Mon Sep 17 00:00:00 2001 From: Mani Ramezan Date: Sat, 13 Jul 2019 00:32:49 -0400 Subject: [PATCH 1/3] Add swiftpm related files to gitignore list --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 5976b39a..5aca3e8d 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,7 @@ DerivedData #CocoaPods Pods + +#swiftpm +.swiftpm +*.xcodeproj \ No newline at end of file From 4e1504cf4cbf8d789699011b376ddee840bf7c2a Mon Sep 17 00:00:00 2001 From: Mani Ramezan Date: Sun, 21 Jul 2019 20:52:43 -0400 Subject: [PATCH 2/3] Fix test failures --- .../DateComparatorsExtensionTests.swift | 2 +- .../DateComponentsExtensionTests.swift | 2 +- .../DateFormatExtensionTests.swift | 2 +- .../DateInitsExtensionTests.swift | 2 +- .../DateManipulationsExtensionTests.swift | 2 +- .../DateTimeAgoExtensionTests.swift | 2 +- .../IntegerExtensionTests.swift | 2 +- .../DateToolsTestsTests/TimeAgoTests.swift | 156 +++++++++--------- .../DateToolsTestsTests/TimeChunkTests.swift | 2 +- .../TimePeriodChainTests.swift | 2 +- .../TimePeriodCollectionTests.swift | 2 +- .../TimePeriodGroupTests.swift | 2 +- .../DateToolsTestsTests/TimePeriodTests.swift | 2 +- 13 files changed, 94 insertions(+), 86 deletions(-) diff --git a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateComparatorsExtensionTests.swift b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateComparatorsExtensionTests.swift index 8ad4103f..67ed0d33 100644 --- a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateComparatorsExtensionTests.swift +++ b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateComparatorsExtensionTests.swift @@ -7,7 +7,7 @@ // import XCTest -@testable import DateToolsTests +@testable import DateToolsSwift class DateComparatorsTests: XCTestCase { diff --git a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateComponentsExtensionTests.swift b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateComponentsExtensionTests.swift index 5a7df836..df460b57 100644 --- a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateComponentsExtensionTests.swift +++ b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateComponentsExtensionTests.swift @@ -7,7 +7,7 @@ // import XCTest -@testable import DateToolsTests +@testable import DateToolsSwift class DateComponentsTests: XCTestCase { diff --git a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateFormatExtensionTests.swift b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateFormatExtensionTests.swift index ba37cb39..066b5929 100644 --- a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateFormatExtensionTests.swift +++ b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateFormatExtensionTests.swift @@ -7,7 +7,7 @@ // import XCTest -@testable import DateToolsTests +@testable import DateToolsSwift class DateFormatTests: XCTestCase { diff --git a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateInitsExtensionTests.swift b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateInitsExtensionTests.swift index 3809a53e..a6b7b17f 100644 --- a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateInitsExtensionTests.swift +++ b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateInitsExtensionTests.swift @@ -7,7 +7,7 @@ // import XCTest -@testable import DateToolsTests +@testable import DateToolsSwift class DateDateToolsTests: XCTestCase { diff --git a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateManipulationsExtensionTests.swift b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateManipulationsExtensionTests.swift index 103653a3..03c0efbe 100644 --- a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateManipulationsExtensionTests.swift +++ b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateManipulationsExtensionTests.swift @@ -7,7 +7,7 @@ // import XCTest -@testable import DateToolsTests +@testable import DateToolsSwift class DateManipulationsTests: XCTestCase { diff --git a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateTimeAgoExtensionTests.swift b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateTimeAgoExtensionTests.swift index 642c64b4..3553b2fe 100644 --- a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateTimeAgoExtensionTests.swift +++ b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/DateTimeAgoExtensionTests.swift @@ -7,7 +7,7 @@ // import XCTest -@testable import DateToolsTests +@testable import DateToolsSwift class DateTimeAgoTests: XCTestCase { diff --git a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/IntegerExtensionTests.swift b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/IntegerExtensionTests.swift index d312741d..cfb27c69 100644 --- a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/IntegerExtensionTests.swift +++ b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/IntegerExtensionTests.swift @@ -7,7 +7,7 @@ // import XCTest -@testable import DateToolsTests +@testable import DateToolsSwift class IntegerTests: XCTestCase { diff --git a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimeAgoTests.swift b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimeAgoTests.swift index 91cbbd10..ea0dd297 100644 --- a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimeAgoTests.swift +++ b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimeAgoTests.swift @@ -7,135 +7,143 @@ // import XCTest -@testable import DateToolsTests +@testable import DateToolsSwift class TimeAgoTests : XCTestCase { - var formatter: DateFormatter? - var date0: Date? - var date1: Date? + let formatter: DateFormatter = { + let formatter = DateFormatter() + formatter.dateFormat = "yyyy MM dd HH:mm:ss.SSS" + return formatter + }() + var date0: Date! + var date1: Date! override func setUp() { - super.up = nil - // Put setup code here. This method is called before the invocation of each test method in the class. - self.formatter = DateFormatter() - self.formatter?.dateFormat = "yyyy MM dd HH:mm:ss.SSS" - self.date0 = self.formatter?.date(from: "2014 11 05 18:15:12.000") - self.date1 = self.formatter?.date(from: "2014 11 07 18:15:12.000") + super.setUp() + + date0 = formatter.date(from: "2014 11 05 18:15:12.000") + date1 = formatter.date(from: "2014 11 07 18:15:12.000") } override func tearDown() { - // Put teardown code here. This method is called after the invocation of each test method in the class. super.tearDown() } func testBasicLongTimeAgo() { - var now: String = self.date0.timeAgoSinceDate(self.date0) - XCTAssert(now && now.length > 0, "'Now' is nil or empty.") - var ago: String = self.date1.timeAgoSinceDate(self.date0) - XCTAssert(ago && ago.length > 0, "Ago is nil or empty.") + let now: String = self.date0.timeAgo(since: self.date0) + XCTAssertFalse(now.isEmpty, "'Now' is nil or empty.") + let ago: String = self.date1.timeAgo(since: self.date0) + XCTAssertFalse(ago.isEmpty, "Ago is nil or empty.") } func testLongTimeAgo2Days() { - self.date0 = self.formatter?.date(from: "2014 11 05 18:15:12.000") - self.date1 = self.formatter?.date(from: "2014 11 07 18:15:12.000") - var ago: String = self.date0.timeAgoSinceDate(self.date1) - XCTAssertEqualObjects(ago, DateToolsLocalizedStrings("2 days ago")) + self.date0 = self.formatter.date(from: "2014 11 05 18:15:12.000") + self.date1 = self.formatter.date(from: "2014 11 07 18:15:12.000") + let ago: String = self.date0.timeAgo(since: self.date1) + XCTAssertEqual(ago, DateToolsLocalizedStrings("2 days ago")) } func testLongTimeAgo1DayAndHalf() { - self.date0 = self.formatter?.date(from: "2014 11 06 9:15:12.000") - self.date1 = self.formatter?.date(from: "2014 11 07 18:15:12.000") - var ago: String = self.date0.timeAgoSinceDate(self.date1) - XCTAssertEqualObjects(ago, DateToolsLocalizedStrings("Yesterday")) + self.date0 = self.formatter.date(from: "2014 11 06 9:15:12.000") + self.date1 = self.formatter.date(from: "2014 11 07 18:15:12.000") + let ago: String = self.date0.timeAgo(since: self.date1) + XCTAssertEqual(ago, DateToolsLocalizedStrings("Yesterday")) } func testLongTimeAgoExactlyYesterday() { - self.date0 = self.formatter?.date(from: "2014 11 06 18:15:12.000") - self.date1 = self.formatter?.date(from: "2014 11 07 18:15:12.000") - var ago: String = self.date0.timeAgoSinceDate(self.date1) - XCTAssertEqualObjects(ago, DateToolsLocalizedStrings("Yesterday")) + self.date0 = self.formatter.date(from: "2014 11 06 18:15:12.000") + self.date1 = self.formatter.date(from: "2014 11 07 18:15:12.000") + let ago: String = self.date0.timeAgo(since: self.date1) + XCTAssertEqual(ago, DateToolsLocalizedStrings("Yesterday")) } func testLongTimeAgoLessThan24hoursButYesterday() { - self.date0 = self.formatter?.date(from: "2014 11 06 20:15:12.000") - self.date1 = self.formatter?.date(from: "2014 11 07 18:15:12.000") - var ago: String = self.date0.timeAgoSinceDate(self.date1) - XCTAssertEqualObjects(ago, DateToolsLocalizedStrings("22 hours ago")) + self.date0 = self.formatter.date(from: "2014 11 06 20:15:12.000") + self.date1 = self.formatter.date(from: "2014 11 07 18:15:12.000") + let ago: String = self.date0.timeAgo(since: self.date1) + XCTAssertEqual(ago, DateToolsLocalizedStrings("22 hours ago")) } func testLongTimeAgoLessThan24hoursSameDay() { - self.date0 = self.formatter?.date(from: "2014 11 07 10:15:12.000") - self.date1 = self.formatter?.date(from: "2014 11 07 18:15:12.000") - var ago: String = self.date0.timeAgoSinceDate(self.date1) - XCTAssertEqualObjects(ago, DateToolsLocalizedStrings("8 hours ago")) + self.date0 = self.formatter.date(from: "2014 11 07 10:15:12.000") + self.date1 = self.formatter.date(from: "2014 11 07 18:15:12.000") + let ago: String = self.date0.timeAgo(since: self.date1) + XCTAssertEqual(ago, DateToolsLocalizedStrings("8 hours ago")) } func testLongTimeAgoBetween24And48Hours() { - self.date0 = self.formatter?.date(from: "2014 11 07 10:15:12.000") - self.date1 = self.formatter?.date(from: "2014 11 08 18:15:12.000") - var ago: String = self.date0.timeAgoSinceDate(self.date1) - XCTAssertEqualObjects(ago, DateToolsLocalizedStrings("Yesterday")) + self.date0 = self.formatter.date(from: "2014 11 07 10:15:12.000") + self.date1 = self.formatter.date(from: "2014 11 08 18:15:12.000") + let ago: String = self.date0.timeAgo(since: self.date1) + XCTAssertEqual(ago, DateToolsLocalizedStrings("Yesterday")) } func testBasicShortTimeAgo() { - var now: String = self.date0.shortTimeAgoSinceDate(self.date0) - XCTAssert(now && now.length > 0, "'Now' is nil or empty.") - var ago: String = self.date1.shortTimeAgoSinceDate(self.date0) - XCTAssert(ago && ago.length > 0, "Ago is nil or empty.") + let now: String = self.date0.shortTimeAgo(since: self.date0) + XCTAssertFalse(now.isEmpty, "'Now' is nil or empty.") + let ago: String = self.date1.shortTimeAgo(since: self.date0) + XCTAssertFalse(ago.isEmpty, "Ago is nil or empty.") } func testShortTimeAgo2Days() { - self.date0 = self.formatter?.date(from: "2014 11 05 18:15:12.000") - self.date1 = self.formatter?.date(from: "2014 11 07 18:15:12.000") - var ago: String = self.date0.shortTimeAgoSinceDate(self.date1) - XCTAssertEqualObjects(ago, DateToolsLocalizedStrings("2d")) + self.date0 = self.formatter.date(from: "2014 11 05 18:15:12.000") + self.date1 = self.formatter.date(from: "2014 11 07 18:15:12.000") + let ago: String = self.date0.shortTimeAgo(since: self.date1) + XCTAssertEqual(ago, DateToolsLocalizedStrings("2d")) } func testShortTimeAgo1DayAndHalf() { - self.date0 = self.formatter?.date(from: "2014 11 06 9:15:12.000") - self.date1 = self.formatter?.date(from: "2014 11 07 18:15:12.000") - var ago: String = self.date0.shortTimeAgoSinceDate(self.date1) - XCTAssertEqualObjects(ago, DateToolsLocalizedStrings("1d")) + self.date0 = self.formatter.date(from: "2014 11 06 9:15:12.000") + self.date1 = self.formatter.date(from: "2014 11 07 18:15:12.000") + let ago: String = self.date0.shortTimeAgo(since: self.date1) + XCTAssertEqual(ago, DateToolsLocalizedStrings("1d")) } func testShortTimeAgoExactlyYesterday() { - self.date0 = self.formatter?.date(from: "2014 11 06 18:15:12.000") - self.date1 = self.formatter?.date(from: "2014 11 07 18:15:12.000") - var ago: String = self.date0.shortTimeAgoSinceDate(self.date1) - XCTAssertEqualObjects(ago, DateToolsLocalizedStrings("1d")) + self.date0 = self.formatter.date(from: "2014 11 06 18:15:12.000") + self.date1 = self.formatter.date(from: "2014 11 07 18:15:12.000") + let ago: String = self.date0.shortTimeAgo(since: self.date1) + XCTAssertEqual(ago, DateToolsLocalizedStrings("1d")) } func testShortTimeAgoLessThan24hoursButYesterday() { - self.date0 = self.formatter?.date(from: "2014 11 06 20:15:12.000") - self.date1 = self.formatter?.date(from: "2014 11 07 18:15:12.000") - var ago: String = self.date0.shortTimeAgoSinceDate(self.date1) - XCTAssertEqualObjects(ago, DateToolsLocalizedStrings("22h")) + self.date0 = self.formatter.date(from: "2014 11 06 20:15:12.000") + self.date1 = self.formatter.date(from: "2014 11 07 18:15:12.000") + let ago: String = self.date0.shortTimeAgo(since: self.date1) + XCTAssertEqual(ago, DateToolsLocalizedStrings("22h")) } func testShortTimeAgoLessThan24hoursSameDay() { - self.date0 = self.formatter?.date(from: "2014 11 07 10:15:12.000") - self.date1 = self.formatter?.date(from: "2014 11 07 18:15:12.000") - var ago: String = self.date0.shortTimeAgoSinceDate(self.date1) - XCTAssertEqualObjects(ago, DateToolsLocalizedStrings("8h")) + self.date0 = self.formatter.date(from: "2014 11 07 10:15:12.000") + self.date1 = self.formatter.date(from: "2014 11 07 18:15:12.000") + let ago: String = self.date0.shortTimeAgo(since: self.date1) + XCTAssertEqual(ago, DateToolsLocalizedStrings("8h")) } func testShortTimeAgoBetween24And48Hours() { - self.date0 = self.formatter?.date(from: "2014 11 07 10:15:12.000") - self.date1 = self.formatter?.date(from: "2014 11 08 18:15:12.000") - var ago: String = self.date0.shortTimeAgoSinceDate(self.date1) - XCTAssertEqualObjects(ago, DateToolsLocalizedStrings("1d")) + self.date0 = self.formatter.date(from: "2014 11 07 10:15:12.000") + self.date1 = self.formatter.date(from: "2014 11 08 18:15:12.000") + let ago: String = self.date0.shortTimeAgo(since:self.date1) + XCTAssertEqual(ago, DateToolsLocalizedStrings("1d")) } func testLongTimeAgoLocalizationsAccessible() { - var en_local: String = "Yesterday" - var ja_local: String = "昨日" - var key: String = en_local - var path: String = NSBundlemainBundle.bundlePath.stringByAppendingPathComponent("DateTools.bundle/ja.lproj") - var bundle: Bundle = Bundle(path: path)! - var ja_result: String = NSLocalizedStringFromTableInBundle(key, "DateTools", bundle, nil) - XCTAssertEqualObjects(ja_local, ja_result, "Could not access localizations.") + let en_local: String = "Yesterday" + let ja_local: String = "昨日" + let key: String = en_local + let path: String = (Bundle.main.bundlePath as NSString).appendingPathComponent("DateTools.bundle/ja.lproj") + var _: Bundle = Bundle(path: path)! + let ja_result: String = NSLocalizedString(key, comment: "DateTools") + XCTAssertEqual(ja_local, ja_result, "Could not access localizations.") + } + + private func DateToolsLocalizedStrings(_ key: String) -> String { + return NSLocalizedString(key, + tableName: "DateTools", + bundle: Bundle.dateToolsBundle(), + value: "", comment: "") } } diff --git a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimeChunkTests.swift b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimeChunkTests.swift index 0646d87d..59c2bd0d 100644 --- a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimeChunkTests.swift +++ b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimeChunkTests.swift @@ -7,7 +7,7 @@ // import XCTest -@testable import DateToolsTests +@testable import DateToolsSwift class TimeChunkTests: XCTestCase { diff --git a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimePeriodChainTests.swift b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimePeriodChainTests.swift index 5c2782f6..0aceae5e 100644 --- a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimePeriodChainTests.swift +++ b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimePeriodChainTests.swift @@ -7,7 +7,7 @@ // import XCTest -@testable import DateToolsTests +@testable import DateToolsSwift class TimePeriodChainTests : XCTestCase { diff --git a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimePeriodCollectionTests.swift b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimePeriodCollectionTests.swift index 3c11ac79..61319b34 100644 --- a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimePeriodCollectionTests.swift +++ b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimePeriodCollectionTests.swift @@ -7,7 +7,7 @@ // import XCTest -@testable import DateToolsTests +@testable import DateToolsSwift class TimePeriodCollectionTests : XCTestCase { diff --git a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimePeriodGroupTests.swift b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimePeriodGroupTests.swift index 2f6bae7c..a61b3e8d 100644 --- a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimePeriodGroupTests.swift +++ b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimePeriodGroupTests.swift @@ -7,7 +7,7 @@ // import XCTest -@testable import DateToolsTests +@testable import DateToolsSwift class TimePeriodGroupTests : XCTestCase { diff --git a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimePeriodTests.swift b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimePeriodTests.swift index c8bfa69f..fc94aa22 100644 --- a/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimePeriodTests.swift +++ b/DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests/TimePeriodTests.swift @@ -7,7 +7,7 @@ // import XCTest -@testable import DateToolsTests +@testable import DateToolsSwift class TimePeriodTests : XCTestCase { From 24c7d3a8fd24cfaefa7dfc2b7264c0c80ff07583 Mon Sep 17 00:00:00 2001 From: Mani Ramezan Date: Sat, 13 Jul 2019 00:33:31 -0400 Subject: [PATCH 3/3] Update swiftpm package file --- Package.swift | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/Package.swift b/Package.swift index 32485a35..37af4498 100644 --- a/Package.swift +++ b/Package.swift @@ -1,9 +1,30 @@ +// swift-tools-version:5.1 + import PackageDescription let package = Package( name: "DateToolsSwift", + platforms: [ + .macOS(.v10_10), .iOS(.v8) + ], + products: [ + .library( + name: "DateToolsSwift", + targets: ["DateToolsSwift"]) + ], targets: [ - Target(name: "DateToolsSwift") + .target( + name: "DateToolsSwift", + path: "./DateToolsSwift/DateTools", + exclude: [ + "Examples", + "DateToolsSwift/Examples" + ] + ), + .testTarget( + name: "DateToolsSwiftTests", + dependencies: ["DateToolsSwift"], + path: "./DateToolsSwift/Tests/DateToolsTests/DateToolsTestsTests" + ) ] ) -package.exclude = ["DateTools", "Examples", "Tests", "DateToolsSwift/Examples"]