Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add sum convenience methods #34

Merged
merged 3 commits into from
Jan 6, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ codecov:
jobs:
build-and-test:
macos:
xcode: 11.6.0
xcode: 12.1.0
shell: /bin/bash --login -o pipefail
steps:
- checkout
Expand All @@ -25,7 +25,7 @@ jobs:
destination: scan-logs
danger:
macos:
xcode: 11.6.0
xcode: 12.1.0
working_directory: /Users/distiller/project
environment:
DANGER_GITHUB_API_TOKEN: 2b388130450c1a4247582e419e761bfd301f984d
Expand Down
10 changes: 5 additions & 5 deletions Example/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
PODS:
- SwiftLint (0.34.0)
- TiltUp (2.2.1)
- TiltUpTest (2.2.1):
- TiltUp
- TiltUp (2.3.0)
- TiltUpTest (2.3.0):
- TiltUp (= 2.3.0)

DEPENDENCIES:
- SwiftLint
Expand All @@ -21,8 +21,8 @@ EXTERNAL SOURCES:

SPEC CHECKSUMS:
SwiftLint: 79d48a17c6565dc286c37efb8322c7b450f95c67
TiltUp: 90d18b6807251d4899fed49d0f7b35c8261c9c8c
TiltUpTest: dde6107f0ca56be4f882fff79f73c8db3047b603
TiltUp: 06097dcaa1a2618724debe245b947138b8e2e71c
TiltUpTest: 0298b8f38ba6bc88948a3e7d54a22dc1d53a5556

PODFILE CHECKSUM: 59178fc1d37e1d262a19f2432a54024fd9ed50de

Expand Down
28 changes: 28 additions & 0 deletions Example/Tests/Extensions/Sequence+sumTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
//
// Sequence+sumTests.swift
// TiltUp_Tests
//
// Created by Erik Strottmann on 12/15/20.
// Copyright © 2020 Clutter. All rights reserved.
//

import XCTest

import TiltUp

final class SequenceSumTests: XCTestCase {
func testSum() {
let numbers = [1, -2, 3, -4]
XCTAssertEqual(numbers.sum(), -2)
}

func testSumWithTransformClosure() {
let numbers = [1.1, 3.3, 5.5, 7.7, 9.9]
XCTAssertEqual(numbers.sum { $0.rounded() }, 28.0, accuracy: 0.001)
}

func testSumWithTransformKeyPath() {
let strings = ["aleph", "omega", "double-yoo"]
XCTAssertEqual(strings.sum(\.count.description.count), 4)
}
}
14 changes: 13 additions & 1 deletion Example/TiltUp.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; };
780DE4A324205FCB00AD18DD /* PhotoCaptureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 780DE4A224205FCB00AD18DD /* PhotoCaptureTests.swift */; };
781B6E9E23B143CD000EA68B /* CameraCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 781B6E9D23B143CD000EA68B /* CameraCoordinator.swift */; };
BB1598792589677100DE7F2C /* Sequence+sumTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1598782589677100DE7F2C /* Sequence+sumTests.swift */; };
BBD511DD2320206D00EB8673 /* UnexpectedNilErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD511DC2320206D00EB8673 /* UnexpectedNilErrorTests.swift */; };
BBD58F3723593DF500FDD6FE /* SingleSelectionViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD58F3623593DF500FDD6FE /* SingleSelectionViewModelTests.swift */; };
BBD58F392359487700FDD6FE /* SingleSelectionViewModelInternalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD58F382359487700FDD6FE /* SingleSelectionViewModelInternalTests.swift */; };
Expand Down Expand Up @@ -62,6 +63,7 @@
780DE4A224205FCB00AD18DD /* PhotoCaptureTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoCaptureTests.swift; sourceTree = "<group>"; };
781B6E9D23B143CD000EA68B /* CameraCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraCoordinator.swift; sourceTree = "<group>"; };
8DF9D5246472A46303CD5C66 /* Pods-TiltUp_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TiltUp_Example.release.xcconfig"; path = "Target Support Files/Pods-TiltUp_Example/Pods-TiltUp_Example.release.xcconfig"; sourceTree = "<group>"; };
BB1598782589677100DE7F2C /* Sequence+sumTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Sequence+sumTests.swift"; sourceTree = "<group>"; };
BBD511DC2320206D00EB8673 /* UnexpectedNilErrorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnexpectedNilErrorTests.swift; sourceTree = "<group>"; };
BBD58F3623593DF500FDD6FE /* SingleSelectionViewModelTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SingleSelectionViewModelTests.swift; sourceTree = "<group>"; };
BBD58F382359487700FDD6FE /* SingleSelectionViewModelInternalTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SingleSelectionViewModelInternalTests.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -191,9 +193,10 @@
607FACE81AFB9204008FA782 /* Tests */ = {
isa = PBXGroup;
children = (
BBD58F3A23594A5300FDD6FE /* Screens */,
0B25C66F2304C2B200F88096 /* Architecture */,
BBD511DB2320205900EB8673 /* Errors */,
BB1598772589674A00DE7F2C /* Extensions */,
BBD58F3A23594A5300FDD6FE /* Screens */,
607FACE91AFB9204008FA782 /* Supporting Files */,
);
path = Tests;
Expand Down Expand Up @@ -241,6 +244,14 @@
name = Frameworks;
sourceTree = "<group>";
};
BB1598772589674A00DE7F2C /* Extensions */ = {
isa = PBXGroup;
children = (
BB1598782589677100DE7F2C /* Sequence+sumTests.swift */,
);
path = Extensions;
sourceTree = "<group>";
};
BBD511DB2320205900EB8673 /* Errors */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -498,6 +509,7 @@
BBD511DD2320206D00EB8673 /* UnexpectedNilErrorTests.swift in Sources */,
780DE4A324205FCB00AD18DD /* PhotoCaptureTests.swift in Sources */,
0B25C6792304C2B300F88096 /* TestAppCoordinator.swift in Sources */,
BB1598792589677100DE7F2C /* Sequence+sumTests.swift in Sources */,
BBD58F392359487700FDD6FE /* SingleSelectionViewModelInternalTests.swift in Sources */,
0B25C6782304C2B300F88096 /* TestNavigationController.swift in Sources */,
);
Expand Down
2 changes: 1 addition & 1 deletion TiltUp.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

Pod::Spec.new do |s|
s.name = 'TiltUp'
s.version = '2.2.1'
s.version = '2.3.0'
s.summary = 'Official Clutter SDK in Swift to access core iOS features.'

# This description is used to generate tags and improve search results.
Expand Down
32 changes: 32 additions & 0 deletions TiltUp/Classes/Extensions/Sequence+sum.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
//
// Sequence+sum.swift
// TiltUp
//
// Created by Erik Strottmann on 12/15/20.
//

extension Sequence {
/// Applies the given closure to each element of the sequence, adds the
/// transformed elements together, and returns the result.
///
/// - Parameter transform: A closure that accepts an element of this
/// sequence and returns a value of an `AdditiveArithmetic` type, to be
/// added together with the other transformed elements.
/// - Returns: The final summed value. If the sequence is empty, the result
/// is `.zero`.
public func sum<Result>(
_ transform: (Element) throws -> Result
) rethrows -> Result where Result: AdditiveArithmetic {
return try map(transform).reduce(.zero, +)
}
}

extension Sequence where Element: AdditiveArithmetic {
/// Adds the sequence’s elements together and returns the result.
///
/// - Returns: The final summed value. If the sequence is empty, the result
/// is `.zero`.
public func sum() -> Element {
return sum { $0 }
}
}
4 changes: 2 additions & 2 deletions TiltUpTest.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

Pod::Spec.new do |s|
s.name = 'TiltUpTest'
s.version = '2.2.1'
s.version = '2.3.0'
s.summary = 'Official Clutter SDK in Swift to access core iOS test helpers.'

# This description is used to generate tags and improve search results.
Expand All @@ -31,7 +31,7 @@ TODO: Add long description of the pod here.
s.pod_target_xcconfig = { 'ENABLE_BITCODE' => 'NO' }

s.frameworks = 'XCTest'
s.dependency 'TiltUp'
s.dependency 'TiltUp', "= #{s.version}"

s.source = { :git => "git@github.com:clutter/TiltUp.git", :tag => "#{s.version}" }

Expand Down