diff --git a/.gitignore b/.gitignore index 3b37e11..e135731 100644 --- a/.gitignore +++ b/.gitignore @@ -1,47 +1,6 @@ -# Xcode -# -# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore - -## Build generated -build/ -DerivedData - -## Various settings -*.pbxuser -!default.pbxuser -*.mode1v3 -!default.mode1v3 -*.mode2v3 -!default.mode2v3 -*.perspectivev3 -!default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint - -## Obj-C/Swift specific -*.hmap -*.ipa - -# CocoaPods -# -# We recommend against adding the Pods directory to your .gitignore. However -# you should judge for yourself, the pros and cons are mentioned at: -# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control -# -# Pods/ - -# Carthage -# -# Add this line if you want to avoid checking in source code from Carthage dependencies. -# Carthage/Checkouts - -Carthage/Build - -# Swift Package Manager -Packages/ -.build/ +.DS_Store +/.build +/Packages +/*.xcodeproj +xcuserdata/ +.swiftpm/xcode/package.xcworkspace diff --git a/.travis.yml b/.travis.yml index 4ab84b8..0671dc4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,12 +2,7 @@ matrix: include: - os: osx language: objective-c - osx_image: xcode10.2 - env: - - DESTINATION="platform=iOS Simulator,name=iPhone X,OS=12.2" + osx_image: xcode11.1 script: - # Alternatively: set -o pipefail && xcodebuild ... | xcpretty - # The pipefail option sets the exit status to the last command with a non-zero status code, which would usually be xcodebuild. - # But xcpretty may also hide some logs we'd like to see. - - xcodebuild test -scheme Ampere -sdk iphonesimulator -destination "$DESTINATION" + - swift test diff --git a/Ampere.xcodeproj/project.pbxproj b/Ampere.xcodeproj/project.pbxproj deleted file mode 100644 index cdb7cb3..0000000 --- a/Ampere.xcodeproj/project.pbxproj +++ /dev/null @@ -1,581 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 5D02080E1D47E45200DD4C97 /* Ampere.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D0208041D47E45200DD4C97 /* Ampere.framework */; }; - 5D0208151D47E45200DD4C97 /* Ampere.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D0208071D47E45200DD4C97 /* Ampere.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5D9822A51D84760E00FB75FE /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822A31D84760E00FB75FE /* Helpers.swift */; }; - 5D9822A61D84760E00FB75FE /* XCTestExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822A41D84760E00FB75FE /* XCTestExtensions.swift */; }; - 5D9822AD1D84761400FB75FE /* UnitAreaTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822A81D84761400FB75FE /* UnitAreaTests.swift */; }; - 5D9822AE1D84761400FB75FE /* DivisionByItselfTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822A91D84761400FB75FE /* DivisionByItselfTests.swift */; }; - 5D9822AF1D84761400FB75FE /* UnitLengthTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822AA1D84761400FB75FE /* UnitLengthTests.swift */; }; - 5D9822B01D84761400FB75FE /* Globals.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822AB1D84761400FB75FE /* Globals.swift */; }; - 5D9822B11D84761400FB75FE /* UnitProductTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822AC1D84761400FB75FE /* UnitProductTests.swift */; }; - 5D9822C61D84771800FB75FE /* UnitSquareConformances.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822C01D84771800FB75FE /* UnitSquareConformances.swift */; }; - 5D9822C71D84771800FB75FE /* UnitProductConformances.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822C11D84771800FB75FE /* UnitProductConformances.swift */; }; - 5D9822C81D84771800FB75FE /* DivisionByItself.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822C31D84771800FB75FE /* DivisionByItself.swift */; }; - 5D9822C91D84771800FB75FE /* UnitProduct.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822C41D84771800FB75FE /* UnitProduct.swift */; }; - 5D9822CA1D84771800FB75FE /* UnitSquare.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822C51D84771800FB75FE /* UnitSquare.swift */; }; - 5D9822D01D847B4900FB75FE /* UnitVolumeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822CF1D847B4900FB75FE /* UnitVolumeTests.swift */; }; - 5D9822D21D847F3D00FB75FE /* UnitSpeedTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822D11D847F3D00FB75FE /* UnitSpeedTests.swift */; }; - 5D9822D41D8481EA00FB75FE /* UnitMassTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822D31D8481EA00FB75FE /* UnitMassTests.swift */; }; - 5D9822D61D84862C00FB75FE /* UnitElectricPotentialDifferenceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822D51D84862C00FB75FE /* UnitElectricPotentialDifferenceTests.swift */; }; - 5D9822DA1D84879C00FB75FE /* UnitEnergyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822D91D84879C00FB75FE /* UnitEnergyTests.swift */; }; - 5D9822DC1D8488D400FB75FE /* UnitElectricChargeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822DB1D8488D400FB75FE /* UnitElectricChargeTests.swift */; }; - 5D9822E11D848A5A00FB75FE /* UnitForce.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822E01D848A5A00FB75FE /* UnitForce.swift */; }; - 5D9822E31D848D8900FB75FE /* UnitForceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D9822E21D848D8900FB75FE /* UnitForceTests.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 5D02080F1D47E45200DD4C97 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 5D0207FB1D47E45200DD4C97 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5D0208031D47E45200DD4C97; - remoteInfo = Ampere; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 5D0208041D47E45200DD4C97 /* Ampere.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Ampere.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5D0208071D47E45200DD4C97 /* Ampere.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Ampere.h; sourceTree = ""; }; - 5D0208081D47E45200DD4C97 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 5D02080D1D47E45200DD4C97 /* AmpereTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AmpereTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 5D0208141D47E45200DD4C97 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 5D9822A31D84760E00FB75FE /* Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Helpers.swift; sourceTree = ""; }; - 5D9822A41D84760E00FB75FE /* XCTestExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XCTestExtensions.swift; sourceTree = ""; }; - 5D9822A81D84761400FB75FE /* UnitAreaTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnitAreaTests.swift; sourceTree = ""; }; - 5D9822A91D84761400FB75FE /* DivisionByItselfTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DivisionByItselfTests.swift; sourceTree = ""; }; - 5D9822AA1D84761400FB75FE /* UnitLengthTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnitLengthTests.swift; sourceTree = ""; }; - 5D9822AB1D84761400FB75FE /* Globals.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Globals.swift; sourceTree = ""; }; - 5D9822AC1D84761400FB75FE /* UnitProductTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnitProductTests.swift; sourceTree = ""; }; - 5D9822C01D84771800FB75FE /* UnitSquareConformances.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnitSquareConformances.swift; sourceTree = ""; }; - 5D9822C11D84771800FB75FE /* UnitProductConformances.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnitProductConformances.swift; sourceTree = ""; }; - 5D9822C31D84771800FB75FE /* DivisionByItself.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DivisionByItself.swift; sourceTree = ""; }; - 5D9822C41D84771800FB75FE /* UnitProduct.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnitProduct.swift; sourceTree = ""; }; - 5D9822C51D84771800FB75FE /* UnitSquare.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnitSquare.swift; sourceTree = ""; }; - 5D9822CB1D84773A00FB75FE /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; - 5D9822CC1D84773A00FB75FE /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 5D9822CD1D84775D00FB75FE /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 5D9822CE1D84787000FB75FE /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 5D9822CF1D847B4900FB75FE /* UnitVolumeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnitVolumeTests.swift; sourceTree = ""; }; - 5D9822D11D847F3D00FB75FE /* UnitSpeedTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnitSpeedTests.swift; sourceTree = ""; }; - 5D9822D31D8481EA00FB75FE /* UnitMassTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnitMassTests.swift; sourceTree = ""; }; - 5D9822D51D84862C00FB75FE /* UnitElectricPotentialDifferenceTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnitElectricPotentialDifferenceTests.swift; sourceTree = ""; }; - 5D9822D91D84879C00FB75FE /* UnitEnergyTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnitEnergyTests.swift; sourceTree = ""; }; - 5D9822DB1D8488D400FB75FE /* UnitElectricChargeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnitElectricChargeTests.swift; sourceTree = ""; }; - 5D9822DE1D848A2B00FB75FE /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 5D9822E01D848A5A00FB75FE /* UnitForce.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnitForce.swift; sourceTree = ""; }; - 5D9822E21D848D8900FB75FE /* UnitForceTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnitForceTests.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 5D0208001D47E45200DD4C97 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5D02080A1D47E45200DD4C97 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 5D02080E1D47E45200DD4C97 /* Ampere.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 5D0207FA1D47E45200DD4C97 = { - isa = PBXGroup; - children = ( - 5D9822CC1D84773A00FB75FE /* README.md */, - 5D9822CB1D84773A00FB75FE /* LICENSE.txt */, - 5D0208061D47E45200DD4C97 /* Ampere */, - 5D0208111D47E45200DD4C97 /* AmpereTests */, - 5D0208051D47E45200DD4C97 /* Products */, - ); - sourceTree = ""; - }; - 5D0208051D47E45200DD4C97 /* Products */ = { - isa = PBXGroup; - children = ( - 5D0208041D47E45200DD4C97 /* Ampere.framework */, - 5D02080D1D47E45200DD4C97 /* AmpereTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 5D0208061D47E45200DD4C97 /* Ampere */ = { - isa = PBXGroup; - children = ( - 5D9822C21D84771800FB75FE /* Protocols */, - 5D9822BF1D84771800FB75FE /* Adopters */, - 5D9822DD1D848A1E00FB75FE /* Units */, - 5D9822B31D84767000FB75FE /* Supporting Files */, - ); - path = Ampere; - sourceTree = ""; - }; - 5D0208111D47E45200DD4C97 /* AmpereTests */ = { - isa = PBXGroup; - children = ( - 5D9822A71D84761400FB75FE /* Tests */, - 5D9822A21D84760E00FB75FE /* Helpers */, - 5D9822B21D84765900FB75FE /* Supporting Files */, - ); - path = AmpereTests; - sourceTree = ""; - }; - 5D9822A21D84760E00FB75FE /* Helpers */ = { - isa = PBXGroup; - children = ( - 5D9822A31D84760E00FB75FE /* Helpers.swift */, - 5D9822A41D84760E00FB75FE /* XCTestExtensions.swift */, - ); - path = Helpers; - sourceTree = ""; - }; - 5D9822A71D84761400FB75FE /* Tests */ = { - isa = PBXGroup; - children = ( - 5D9822AB1D84761400FB75FE /* Globals.swift */, - 5D9822A91D84761400FB75FE /* DivisionByItselfTests.swift */, - 5D9822AC1D84761400FB75FE /* UnitProductTests.swift */, - 5D9822E21D848D8900FB75FE /* UnitForceTests.swift */, - 5D9822A81D84761400FB75FE /* UnitAreaTests.swift */, - 5D9822DB1D8488D400FB75FE /* UnitElectricChargeTests.swift */, - 5D9822D51D84862C00FB75FE /* UnitElectricPotentialDifferenceTests.swift */, - 5D9822D91D84879C00FB75FE /* UnitEnergyTests.swift */, - 5D9822D31D8481EA00FB75FE /* UnitMassTests.swift */, - 5D9822AA1D84761400FB75FE /* UnitLengthTests.swift */, - 5D9822D11D847F3D00FB75FE /* UnitSpeedTests.swift */, - 5D9822CF1D847B4900FB75FE /* UnitVolumeTests.swift */, - ); - path = Tests; - sourceTree = ""; - }; - 5D9822B21D84765900FB75FE /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 5D0208141D47E45200DD4C97 /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 5D9822B31D84767000FB75FE /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 5D0208071D47E45200DD4C97 /* Ampere.h */, - 5D0208081D47E45200DD4C97 /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 5D9822BF1D84771800FB75FE /* Adopters */ = { - isa = PBXGroup; - children = ( - 5D9822CE1D84787000FB75FE /* README.md */, - 5D9822C11D84771800FB75FE /* UnitProductConformances.swift */, - 5D9822C01D84771800FB75FE /* UnitSquareConformances.swift */, - ); - path = Adopters; - sourceTree = ""; - }; - 5D9822C21D84771800FB75FE /* Protocols */ = { - isa = PBXGroup; - children = ( - 5D9822CD1D84775D00FB75FE /* README.md */, - 5D9822C41D84771800FB75FE /* UnitProduct.swift */, - 5D9822C51D84771800FB75FE /* UnitSquare.swift */, - 5D9822C31D84771800FB75FE /* DivisionByItself.swift */, - ); - path = Protocols; - sourceTree = ""; - }; - 5D9822DD1D848A1E00FB75FE /* Units */ = { - isa = PBXGroup; - children = ( - 5D9822DE1D848A2B00FB75FE /* README.md */, - 5D9822E01D848A5A00FB75FE /* UnitForce.swift */, - ); - path = Units; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 5D0208011D47E45200DD4C97 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 5D0208151D47E45200DD4C97 /* Ampere.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 5D0208031D47E45200DD4C97 /* Ampere */ = { - isa = PBXNativeTarget; - buildConfigurationList = 5D0208181D47E45200DD4C97 /* Build configuration list for PBXNativeTarget "Ampere" */; - buildPhases = ( - 5D0207FF1D47E45200DD4C97 /* Sources */, - 5D0208001D47E45200DD4C97 /* Frameworks */, - 5D0208011D47E45200DD4C97 /* Headers */, - 5D0208021D47E45200DD4C97 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Ampere; - productName = Ampere; - productReference = 5D0208041D47E45200DD4C97 /* Ampere.framework */; - productType = "com.apple.product-type.framework"; - }; - 5D02080C1D47E45200DD4C97 /* AmpereTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 5D02081B1D47E45200DD4C97 /* Build configuration list for PBXNativeTarget "AmpereTests" */; - buildPhases = ( - 5D0208091D47E45200DD4C97 /* Sources */, - 5D02080A1D47E45200DD4C97 /* Frameworks */, - 5D02080B1D47E45200DD4C97 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 5D0208101D47E45200DD4C97 /* PBXTargetDependency */, - ); - name = AmpereTests; - productName = AmpereTests; - productReference = 5D02080D1D47E45200DD4C97 /* AmpereTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 5D0207FB1D47E45200DD4C97 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0800; - LastUpgradeCheck = 1020; - ORGANIZATIONNAME = "Ole Begemann"; - TargetAttributes = { - 5D0208031D47E45200DD4C97 = { - CreatedOnToolsVersion = 8.0; - DevelopmentTeam = UQBP8YQ495; - DevelopmentTeamName = "Ole Begemann"; - LastSwiftMigration = 1020; - ProvisioningStyle = Automatic; - }; - 5D02080C1D47E45200DD4C97 = { - CreatedOnToolsVersion = 8.0; - DevelopmentTeam = UQBP8YQ495; - DevelopmentTeamName = "Ole Begemann"; - LastSwiftMigration = 1020; - ProvisioningStyle = Automatic; - }; - }; - }; - buildConfigurationList = 5D0207FE1D47E45200DD4C97 /* Build configuration list for PBXProject "Ampere" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 5D0207FA1D47E45200DD4C97; - productRefGroup = 5D0208051D47E45200DD4C97 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 5D0208031D47E45200DD4C97 /* Ampere */, - 5D02080C1D47E45200DD4C97 /* AmpereTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 5D0208021D47E45200DD4C97 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5D02080B1D47E45200DD4C97 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 5D0207FF1D47E45200DD4C97 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 5D9822C81D84771800FB75FE /* DivisionByItself.swift in Sources */, - 5D9822E11D848A5A00FB75FE /* UnitForce.swift in Sources */, - 5D9822C71D84771800FB75FE /* UnitProductConformances.swift in Sources */, - 5D9822C91D84771800FB75FE /* UnitProduct.swift in Sources */, - 5D9822C61D84771800FB75FE /* UnitSquareConformances.swift in Sources */, - 5D9822CA1D84771800FB75FE /* UnitSquare.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5D0208091D47E45200DD4C97 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 5D9822AD1D84761400FB75FE /* UnitAreaTests.swift in Sources */, - 5D9822B01D84761400FB75FE /* Globals.swift in Sources */, - 5D9822A51D84760E00FB75FE /* Helpers.swift in Sources */, - 5D9822E31D848D8900FB75FE /* UnitForceTests.swift in Sources */, - 5D9822D41D8481EA00FB75FE /* UnitMassTests.swift in Sources */, - 5D9822D21D847F3D00FB75FE /* UnitSpeedTests.swift in Sources */, - 5D9822DC1D8488D400FB75FE /* UnitElectricChargeTests.swift in Sources */, - 5D9822DA1D84879C00FB75FE /* UnitEnergyTests.swift in Sources */, - 5D9822D01D847B4900FB75FE /* UnitVolumeTests.swift in Sources */, - 5D9822A61D84760E00FB75FE /* XCTestExtensions.swift in Sources */, - 5D9822B11D84761400FB75FE /* UnitProductTests.swift in Sources */, - 5D9822D61D84862C00FB75FE /* UnitElectricPotentialDifferenceTests.swift in Sources */, - 5D9822AF1D84761400FB75FE /* UnitLengthTests.swift in Sources */, - 5D9822AE1D84761400FB75FE /* DivisionByItselfTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 5D0208101D47E45200DD4C97 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 5D0208031D47E45200DD4C97 /* Ampere */; - targetProxy = 5D02080F1D47E45200DD4C97 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 5D0208161D47E45200DD4C97 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 5D0208171D47E45200DD4C97 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 5D0208191D47E45200DD4C97 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Ampere/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.olebegemann.Ampere; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 5D02081A1D47E45200DD4C97 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Ampere/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.olebegemann.Ampere; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - 5D02081C1D47E45200DD4C97 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = AmpereTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.olebegemann.AmpereTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 5D02081D1D47E45200DD4C97 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = AmpereTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.olebegemann.AmpereTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 5D0207FE1D47E45200DD4C97 /* Build configuration list for PBXProject "Ampere" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5D0208161D47E45200DD4C97 /* Debug */, - 5D0208171D47E45200DD4C97 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 5D0208181D47E45200DD4C97 /* Build configuration list for PBXNativeTarget "Ampere" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5D0208191D47E45200DD4C97 /* Debug */, - 5D02081A1D47E45200DD4C97 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 5D02081B1D47E45200DD4C97 /* Build configuration list for PBXNativeTarget "AmpereTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5D02081C1D47E45200DD4C97 /* Debug */, - 5D02081D1D47E45200DD4C97 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 5D0207FB1D47E45200DD4C97 /* Project object */; -} diff --git a/Ampere.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Ampere.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 387e3b5..0000000 --- a/Ampere.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Ampere.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Ampere.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/Ampere.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/Ampere.xcodeproj/xcshareddata/xcschemes/Ampere.xcscheme b/Ampere.xcodeproj/xcshareddata/xcschemes/Ampere.xcscheme deleted file mode 100644 index b69259d..0000000 --- a/Ampere.xcodeproj/xcshareddata/xcschemes/Ampere.xcscheme +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Ampere/Ampere.h b/Ampere/Ampere.h deleted file mode 100644 index 9a1a39f..0000000 --- a/Ampere/Ampere.h +++ /dev/null @@ -1,9 +0,0 @@ -#import - -//! Project version number for Ampere. -FOUNDATION_EXPORT double AmpereVersionNumber; - -//! Project version string for Ampere. -FOUNDATION_EXPORT const unsigned char AmpereVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import diff --git a/Ampere/Info.plist b/Ampere/Info.plist deleted file mode 100644 index fbe1e6b..0000000 --- a/Ampere/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - NSPrincipalClass - - - diff --git a/AmpereTests/Info.plist b/AmpereTests/Info.plist deleted file mode 100644 index 6c6c23c..0000000 --- a/AmpereTests/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..75fd0d3 --- /dev/null +++ b/Package.swift @@ -0,0 +1,23 @@ +// swift-tools-version:5.0 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "Ampere", + platforms: [.macOS(.v10_12), .iOS(.v10), .tvOS(.v10), .watchOS(.v3)], + products: [ + .library( + name: "Ampere", + targets: ["Ampere"]), + ], + dependencies: [], + targets: [ + .target( + name: "Ampere", + dependencies: []), + .testTarget( + name: "AmpereTests", + dependencies: ["Ampere"]), + ] +) diff --git a/README.md b/README.md index 3069efb..32f037b 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,8 @@ # Ampere -By [Ole Begemann][Ole Begemann], July 2016 +By [Ole Begemann](https://oleb.net/), July 2016 -An iOS library that extends Foundation’s units and measurements APIs with type-safe multiplication and division. - -[![Build Status](https://travis-ci.org/ole/Ampere.svg?branch=master)](https://travis-ci.org/ole/Ampere) +A Swift library that extends Foundation’s units and measurements APIs with type-safe multiplication and division. ## Requirements @@ -14,7 +12,37 @@ Swift 5.0 or higher. ## Dependencies -Foundation +* Foundation +* On Apple platforms, the minimum deployment targets are (I believe): + - iOS 10 + - macOS 10.12 + - tvOS 10 + - watchOS 3 + + +## Usage + +The library is a [Swift Package Manager](https://swift.org/package-manager/) package. Add this line to your `Package.swift` file to add Ampere as a dependency: + +~~~swift +let package = Package( + ... + dependencies: [ + .package(url: "https://github.com/ole/Ampere.git", from: "0.4.0"), + ], + ... +~~~ + + +In your code, import Ampere like so: + +~~~swift +import Ampere +~~~ + +as an Xcode project that builds an iOS Framework target. I have not (yet) set it up for CocoaPods, Carthage, or the Swift Package Manager. (Although I assume Carthage should build it out of the box.) + +Clone the repository, open the project in Xcode, and check out the tests. If you want to use this in your own project in the current form, drag and drop the project file into your Xcode project and add the framework to your linked libraries, or copy the files directly into your project. ## Examples @@ -46,13 +74,6 @@ energy.converted(to: .kilowattHours) Notice that in this case we had to explicitly specify the type of the `energy` variable in `let energy: Measurement`. Sometimes the compiler cannot infer the correct type automatically and we have to help it. -## Usage - -The library is packaged as an Xcode project that builds an iOS Framework target. I have not (yet) set it up for CocoaPods, Carthage, or the Swift Package Manager. (Although I assume Carthage should build it out of the box.) - -Clone the repository, open the project in Xcode, and check out the tests. If you want to use this in your own project in the current form, drag and drop the project file into your Xcode project and add the framework to your linked libraries, or copy the files directly into your project. - - ## Additional Units This library defines the following custom units because they are not included in Foundation: @@ -118,9 +139,8 @@ I wrote a series of blog posts about this: [Part 1], [Part 2], [Part 3]. Part 2 ## License -MIT License. See LICENSE file for details. +MIT License. See LICENSE.txt file for details. -[Ole Begemann]: http://oleb.net/ -[Part 1]: http://oleb.net/blog/2016/07/measurements-and-units/ -[Part 2]: http://oleb.net/blog/2016/07/unitproduct/ -[Part 3]: http://oleb.net/blog/2016/07/unitsquare/ +[Part 1]: https://oleb.net/blog/2016/07/measurements-and-units/ +[Part 2]: https://oleb.net/blog/2016/07/unitproduct/ +[Part 3]: https://oleb.net/blog/2016/07/unitsquare/ diff --git a/Ampere/Adopters/README.md b/Sources/Ampere/Adopters/README.md similarity index 100% rename from Ampere/Adopters/README.md rename to Sources/Ampere/Adopters/README.md diff --git a/Ampere/Adopters/UnitProductConformances.swift b/Sources/Ampere/Adopters/UnitProductConformances.swift similarity index 100% rename from Ampere/Adopters/UnitProductConformances.swift rename to Sources/Ampere/Adopters/UnitProductConformances.swift diff --git a/Ampere/Adopters/UnitSquareConformances.swift b/Sources/Ampere/Adopters/UnitSquareConformances.swift similarity index 100% rename from Ampere/Adopters/UnitSquareConformances.swift rename to Sources/Ampere/Adopters/UnitSquareConformances.swift diff --git a/Ampere/Protocols/DivisionByItself.swift b/Sources/Ampere/Protocols/DivisionByItself.swift similarity index 100% rename from Ampere/Protocols/DivisionByItself.swift rename to Sources/Ampere/Protocols/DivisionByItself.swift diff --git a/Ampere/Protocols/README.md b/Sources/Ampere/Protocols/README.md similarity index 100% rename from Ampere/Protocols/README.md rename to Sources/Ampere/Protocols/README.md diff --git a/Ampere/Protocols/UnitProduct.swift b/Sources/Ampere/Protocols/UnitProduct.swift similarity index 100% rename from Ampere/Protocols/UnitProduct.swift rename to Sources/Ampere/Protocols/UnitProduct.swift diff --git a/Ampere/Protocols/UnitSquare.swift b/Sources/Ampere/Protocols/UnitSquare.swift similarity index 100% rename from Ampere/Protocols/UnitSquare.swift rename to Sources/Ampere/Protocols/UnitSquare.swift diff --git a/Ampere/Units/README.md b/Sources/Ampere/Units/README.md similarity index 100% rename from Ampere/Units/README.md rename to Sources/Ampere/Units/README.md diff --git a/Ampere/Units/UnitForce.swift b/Sources/Ampere/Units/UnitForce.swift similarity index 100% rename from Ampere/Units/UnitForce.swift rename to Sources/Ampere/Units/UnitForce.swift diff --git a/AmpereTests/Tests/DivisionByItselfTests.swift b/Tests/AmpereTests/DivisionByItselfTests.swift similarity index 100% rename from AmpereTests/Tests/DivisionByItselfTests.swift rename to Tests/AmpereTests/DivisionByItselfTests.swift diff --git a/AmpereTests/Tests/Globals.swift b/Tests/AmpereTests/Globals.swift similarity index 100% rename from AmpereTests/Tests/Globals.swift rename to Tests/AmpereTests/Globals.swift diff --git a/AmpereTests/Helpers/Helpers.swift b/Tests/AmpereTests/Helpers/Helpers.swift similarity index 100% rename from AmpereTests/Helpers/Helpers.swift rename to Tests/AmpereTests/Helpers/Helpers.swift diff --git a/AmpereTests/Helpers/XCTestExtensions.swift b/Tests/AmpereTests/Helpers/XCTestExtensions.swift similarity index 100% rename from AmpereTests/Helpers/XCTestExtensions.swift rename to Tests/AmpereTests/Helpers/XCTestExtensions.swift diff --git a/AmpereTests/Tests/UnitAreaTests.swift b/Tests/AmpereTests/UnitAreaTests.swift similarity index 100% rename from AmpereTests/Tests/UnitAreaTests.swift rename to Tests/AmpereTests/UnitAreaTests.swift diff --git a/AmpereTests/Tests/UnitElectricChargeTests.swift b/Tests/AmpereTests/UnitElectricChargeTests.swift similarity index 100% rename from AmpereTests/Tests/UnitElectricChargeTests.swift rename to Tests/AmpereTests/UnitElectricChargeTests.swift diff --git a/AmpereTests/Tests/UnitElectricPotentialDifferenceTests.swift b/Tests/AmpereTests/UnitElectricPotentialDifferenceTests.swift similarity index 100% rename from AmpereTests/Tests/UnitElectricPotentialDifferenceTests.swift rename to Tests/AmpereTests/UnitElectricPotentialDifferenceTests.swift diff --git a/AmpereTests/Tests/UnitEnergyTests.swift b/Tests/AmpereTests/UnitEnergyTests.swift similarity index 100% rename from AmpereTests/Tests/UnitEnergyTests.swift rename to Tests/AmpereTests/UnitEnergyTests.swift diff --git a/AmpereTests/Tests/UnitForceTests.swift b/Tests/AmpereTests/UnitForceTests.swift similarity index 100% rename from AmpereTests/Tests/UnitForceTests.swift rename to Tests/AmpereTests/UnitForceTests.swift diff --git a/AmpereTests/Tests/UnitLengthTests.swift b/Tests/AmpereTests/UnitLengthTests.swift similarity index 100% rename from AmpereTests/Tests/UnitLengthTests.swift rename to Tests/AmpereTests/UnitLengthTests.swift diff --git a/AmpereTests/Tests/UnitMassTests.swift b/Tests/AmpereTests/UnitMassTests.swift similarity index 100% rename from AmpereTests/Tests/UnitMassTests.swift rename to Tests/AmpereTests/UnitMassTests.swift diff --git a/AmpereTests/Tests/UnitProductTests.swift b/Tests/AmpereTests/UnitProductTests.swift similarity index 100% rename from AmpereTests/Tests/UnitProductTests.swift rename to Tests/AmpereTests/UnitProductTests.swift diff --git a/AmpereTests/Tests/UnitSpeedTests.swift b/Tests/AmpereTests/UnitSpeedTests.swift similarity index 100% rename from AmpereTests/Tests/UnitSpeedTests.swift rename to Tests/AmpereTests/UnitSpeedTests.swift diff --git a/AmpereTests/Tests/UnitVolumeTests.swift b/Tests/AmpereTests/UnitVolumeTests.swift similarity index 100% rename from AmpereTests/Tests/UnitVolumeTests.swift rename to Tests/AmpereTests/UnitVolumeTests.swift