Repository: zenangst/Versions
Branch: master
Commit: 99e0b66e68f9
Files: 28
Total size: 76.7 KB
Directory structure:
gitextract_muopvkbp/
├── .gitignore
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── Versions/
│ ├── Info.plist
│ ├── StaticVersion.swift
│ ├── Versions.h
│ └── Versions.swift
├── Versions.podspec
├── Versions.xcodeproj/
│ ├── project.pbxproj
│ ├── project.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata/
│ └── xcschemes/
│ ├── Versions-OSX.xcscheme
│ ├── Versions-iOS.xcscheme
│ ├── VersionsDemo.xcscheme
│ └── VersionsDemoTests.xcscheme
├── VersionsDemo/
│ ├── AppDelegate.swift
│ ├── Base.lproj/
│ │ ├── LaunchScreen.xib
│ │ └── Main.storyboard
│ ├── Images.xcassets/
│ │ └── AppIcon.appiconset/
│ │ └── Contents.json
│ ├── Info.plist
│ ├── VersionsDemo.xcdatamodeld/
│ │ ├── .xccurrentversion
│ │ └── VersionsDemo.xcdatamodel/
│ │ └── contents
│ └── ViewController.swift
└── VersionsDemoTests/
├── Info.plist
├── StaticVersion_Test.swift
├── VersionsDemoTests.swift
└── Versions_Tests.swift
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# OS X
.DS_Store
### Objective-C ###
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
# 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
#
# Note: if you ignore the Pods directory, make sure to uncomment
# `pod install` in .travis.yml
#
Pods/
================================================
FILE: CHANGELOG.md
================================================
# Change Log
## [0.5.0](https://github.com/zenangst/Versions/tree/0.5.0) (2016-04-26)
[Full Changelog](https://github.com/zenangst/Versions/compare/0.4.0...0.5.0)
**Merged pull requests:**
- Updated to swift 2.2 [\#17](https://github.com/zenangst/Versions/pull/17) ([acecilia](https://github.com/acecilia))
## [0.4.0](https://github.com/zenangst/Versions/tree/0.4.0) (2015-12-21)
[Full Changelog](https://github.com/zenangst/Versions/compare/0.3.0...0.4.0)
**Merged pull requests:**
- Add CocoaPod section for README.md [\#15](https://github.com/zenangst/Versions/pull/15) ([joshjiav5](https://github.com/joshjiav5))
- Update podspec version [\#14](https://github.com/zenangst/Versions/pull/14) ([joshjiav5](https://github.com/joshjiav5))
- Dynamic Frameworks for iOS / OS X and Carthage Supports [\#13](https://github.com/zenangst/Versions/pull/13) ([remaerd](https://github.com/remaerd))
## [0.3.0](https://github.com/zenangst/Versions/tree/0.3.0) (2015-05-20)
[Full Changelog](https://github.com/zenangst/Versions/compare/0.2.1...0.3.0)
**Closed issues:**
- I want to be able to get App version [\#11](https://github.com/zenangst/Versions/issues/11)
- Swift space style [\#7](https://github.com/zenangst/Versions/issues/7)
**Merged pull requests:**
- Feature/App-Version [\#12](https://github.com/zenangst/Versions/pull/12) ([zenangst](https://github.com/zenangst))
- Change from 4 spaces to 2 spaces [\#9](https://github.com/zenangst/Versions/pull/9) ([zenangst](https://github.com/zenangst))
- Feature/super power [\#8](https://github.com/zenangst/Versions/pull/8) ([kostiakoval](https://github.com/kostiakoval))
## [0.2.1](https://github.com/zenangst/Versions/tree/0.2.1) (2015-03-06)
[Full Changelog](https://github.com/zenangst/Versions/compare/0.2...0.2.1)
**Merged pull requests:**
- Feature/change detection [\#4](https://github.com/zenangst/Versions/pull/4) ([kostiakoval](https://github.com/kostiakoval))
- Improve/semantic compare [\#3](https://github.com/zenangst/Versions/pull/3) ([zenangst](https://github.com/zenangst))
- Switch [\#2](https://github.com/zenangst/Versions/pull/2) ([kostiakoval](https://github.com/kostiakoval))
## [0.2](https://github.com/zenangst/Versions/tree/0.2) (2015-03-05)
[Full Changelog](https://github.com/zenangst/Versions/compare/0.1...0.2)
**Merged pull requests:**
- Feature/semantic compare [\#1](https://github.com/zenangst/Versions/pull/1) ([zenangst](https://github.com/zenangst))
## [0.1](https://github.com/zenangst/Versions/tree/0.1) (2015-03-02)
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
================================================
FILE: LICENSE.md
================================================
Licensed under the **MIT** license
> Copyright (c) 2015 Christoffer Winterkvist
>
> Permission is hereby granted, free of charge, to any person obtaining
> a copy of this software and associated documentation files (the
> "Software"), to deal in the Software without restriction, including
> without limitation the rights to use, copy, modify, merge, publish,
> distribute, sublicense, and/or sell copies of the Software, and to
> permit persons to whom the Software is furnished to do so, subject to
> the following conditions:
>
> The above copyright notice and this permission notice shall be
> included in all copies or substantial portions of the Software.
>
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
================================================
FILE: README.md
================================================

Helping you find inner peace when comparing version numbers in Swift.
Comparing with the current applications version couldn't be easier.
```swift
// App.version is 1.0.0
if App.version.olderThan("2.0.0") {
// Prompt user to update
}
```
But you can apply this to more things than just the `CFBundleShortVersionString`.
```swift
let currentVersion = "1.0.1a"
if currentVersion.olderThan("1.1.3") {
// update
}
```
Versions also support semantic versioning (`Major`, `Minor`, `Patch`)
```swift
if "1.0".semanticCompare("2.0") == Semantic.Major) {
// major update
}
```
## CocoaPod
[](http://cocoapods.org/pods/Versions)
[](http://cocoapods.org/pods/Versions)
[](http://cocoapods.org/pods/Versions)
Verisons is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:
```ruby
pod "Versions"
```
## Contribute
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create pull request
## Who made this?
- Christoffer Winterkvist ([@zenangst](https://twitter.com/zenangst))
- Kostiantyn Koval ([@KostiaKoval](https://twitter.com/KostiaKoval))
================================================
FILE: Versions/Info.plist
================================================
CFBundleDevelopmentRegion
en
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
$(PRODUCT_BUNDLE_IDENTIFIER)
CFBundleInfoDictionaryVersion
6.0
CFBundleName
$(PRODUCT_NAME)
CFBundlePackageType
FMWK
CFBundleShortVersionString
1.0
CFBundleSignature
????
CFBundleVersion
$(CURRENT_PROJECT_VERSION)
NSPrincipalClass
================================================
FILE: Versions/StaticVersion.swift
================================================
import Foundation
extension Array {
func at(index: Int) -> Element? {
if index >= 0 && index < self.count {
return self[index]
}
return nil
}
}
public struct Version : Equatable, Comparable{
public let major : Int
public let minor : Int
public let patch : Int
public let string : String?
public init?(_ version: String) {
let parts: Array = version.split { $0 == "." }.map { String($0) }
if let major = parts.at(index: 0), let minor = parts.at(index: 1), let patch = parts.at(index: 2), let majorInt = Int(major), let minorInt = Int(minor), let patchInt = Int(patch) {
self.major = majorInt
self.minor = minorInt
self.patch = patchInt
string = version
} else {
//Failed to Initialize Version
return nil
}
}
}
//MARK: - Equatable
public func == (lhs: Version, rhs: Version) -> Bool {
return lhs.string == rhs.string
}
public func == (lhs: Version, rhs: Version?) -> Bool {
switch (rhs) {
case let .some(r): return lhs.string == r.string
case .none: return false
}
}
//MARK: - Comparable
public func < (lhs: Version, rhs: Version) -> Bool {
return lhs.string!.compare(rhs.string!, options: .numeric) == .orderedAscending
}
================================================
FILE: Versions/Versions.h
================================================
//
// Versions.h
// Versions
//
// Created by 郑行之 on 6/7/15.
//
//
#import
//! Project version number for Versions.
FOUNDATION_EXPORT double VersionsVersionNumber;
//! Project version string for Versions.
FOUNDATION_EXPORT const unsigned char VersionsVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import
================================================
FILE: Versions/Versions.swift
================================================
import Foundation
//MARK: - Versions string functionality
public enum Semantic {
case major, minor, patch, same, unknown
}
public struct App {
public static var version: String = {
var version: String = ""
if let infoDictionary = Bundle.main.infoDictionary {
version = infoDictionary["CFBundleShortVersionString"] as! String
}
return version
}()
}
public extension String {
subscript (i: Int) -> Character {
return self[self.index(self.startIndex, offsetBy: i)]
}
subscript (i: Int) -> String {
return String(self[i] as Character)
}
subscript (r: Range) -> String {
return String(self[self.index(startIndex, offsetBy: r.startIndex).. Bool {
return self.compare(version, options: .numeric) == .orderedDescending
}
func olderThan(version: String) -> Bool {
let isEqual: Bool = self == version
return !isEqual ? !self.newerThan(version: version) : false
}
func majorChange(version: String) -> Bool {
return self.major != version.major
}
func minorChange(version: String) -> Bool {
return self.minor != version.minor && self.olderThan(version: version)
}
func patchChange(version: String) -> Bool {
return self.patch != version.patch && self.olderThan(version: version)
}
func semanticCompare(version: String) -> Semantic {
switch self {
case _ where self == version:
return .same
case _ where self.major != version.major && self.olderThan(version: version):
return .major
case _ where (self.minor != version.minor && self.olderThan(version: version)) || (self.major == version.major && self.newerThan(version: version)):
return .minor
case _ where self.patch != version.patch && self.olderThan(version: version):
return .patch
default:
return .unknown
}
}
}
================================================
FILE: Versions.podspec
================================================
Pod::Spec.new do |s|
s.name = "Versions"
s.version = "0.5.0"
s.summary = "Helping you find inner peace when comparing version numbers in Swift."
s.description = <<-DESC
* Helping you find inner peace when comparing version numbers in Swift.
DESC
s.homepage = "https://github.com/zenangst/Versions"
s.license = {
:type => 'MIT',
:file => 'LICENSE.md'
}
s.author = { "Christoffer Winterkvist" => "christoffer@winterkvist.com" }
s.social_media_url = "https://twitter.com/zenangst"
s.platform = :ios, '8.0'
s.source = {
:git => 'https://github.com/zenangst/Versions.git',
:tag => s.version.to_s
}
s.source_files = 'Versions/*.swift'
s.frameworks = 'Foundation'
s.requires_arc = true
end
================================================
FILE: Versions.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
03C709F61B24205A00609F81 /* Version.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03C709DF1B24205A00609F81 /* Version.framework */; };
03C709F71B24205A00609F81 /* Version.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 03C709DF1B24205A00609F81 /* Version.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
03C70A021B24209D00609F81 /* StaticVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03C709FF1B24209D00609F81 /* StaticVersion.swift */; };
03C70A031B24209D00609F81 /* Versions.h in Headers */ = {isa = PBXBuildFile; fileRef = 03C70A001B24209D00609F81 /* Versions.h */; };
03C70A041B24209D00609F81 /* Versions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03C70A011B24209D00609F81 /* Versions.swift */; };
03C70A531B24216B00609F81 /* StaticVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03C709FF1B24209D00609F81 /* StaticVersion.swift */; };
03C70A541B24216B00609F81 /* Versions.h in Headers */ = {isa = PBXBuildFile; fileRef = 03C70A001B24209D00609F81 /* Versions.h */; };
03C70A551B24216B00609F81 /* Versions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03C70A011B24209D00609F81 /* Versions.swift */; };
03C70A5A1B2421B000609F81 /* StaticVersion_Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03C70A561B2421B000609F81 /* StaticVersion_Test.swift */; };
03C70A5B1B2421B000609F81 /* Versions_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03C70A571B2421B000609F81 /* Versions_Tests.swift */; };
03C70A5C1B2421B000609F81 /* VersionsDemoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03C70A581B2421B000609F81 /* VersionsDemoTests.swift */; };
BD87D1A51B0CD38A00244049 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD87D1A41B0CD38A00244049 /* AppDelegate.swift */; };
BD87D1AA1B0CD38A00244049 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD87D1A91B0CD38A00244049 /* ViewController.swift */; };
BD87D1AD1B0CD38A00244049 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BD87D1AB1B0CD38A00244049 /* Main.storyboard */; };
BD87D1AF1B0CD38A00244049 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BD87D1AE1B0CD38A00244049 /* Images.xcassets */; };
BD87D1B21B0CD38A00244049 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = BD87D1B01B0CD38A00244049 /* LaunchScreen.xib */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
03C709F41B24205A00609F81 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BDD8224D1AA45FDD00E48CEF /* Project object */;
proxyType = 1;
remoteGlobalIDString = 03C709DE1B24205A00609F81;
remoteInfo = Versions;
};
BD87D1B81B0CD38B00244049 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = BDD8224D1AA45FDD00E48CEF /* Project object */;
proxyType = 1;
remoteGlobalIDString = BD87D19F1B0CD38A00244049;
remoteInfo = VersionsDemo;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
03C709FD1B24205A00609F81 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
03C709F71B24205A00609F81 /* Version.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
03C709DF1B24205A00609F81 /* Version.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Version.framework; sourceTree = BUILT_PRODUCTS_DIR; };
03C709E21B24205A00609F81 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
03C709FF1B24209D00609F81 /* StaticVersion.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StaticVersion.swift; sourceTree = ""; };
03C70A001B24209D00609F81 /* Versions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Versions.h; sourceTree = ""; };
03C70A011B24209D00609F81 /* Versions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Versions.swift; sourceTree = ""; };
03C70A341B24210C00609F81 /* Version.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Version.framework; sourceTree = BUILT_PRODUCTS_DIR; };
03C70A561B2421B000609F81 /* StaticVersion_Test.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StaticVersion_Test.swift; sourceTree = ""; };
03C70A571B2421B000609F81 /* Versions_Tests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Versions_Tests.swift; sourceTree = ""; };
03C70A581B2421B000609F81 /* VersionsDemoTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VersionsDemoTests.swift; sourceTree = ""; };
BD87D1A01B0CD38A00244049 /* VersionsDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = VersionsDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
BD87D1A31B0CD38A00244049 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
BD87D1A41B0CD38A00244049 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
BD87D1A91B0CD38A00244049 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
BD87D1AC1B0CD38A00244049 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
BD87D1AE1B0CD38A00244049 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
BD87D1B11B0CD38A00244049 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; };
BD87D1B71B0CD38B00244049 /* VersionsDemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = VersionsDemoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
BD87D1BC1B0CD38B00244049 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
BDD822611AA4608500E48CEF /* Versions.podspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Versions.podspec; sourceTree = ""; };
BDD822621AA4608500E48CEF /* LICENSE.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = ""; };
BDD822631AA4608500E48CEF /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
03C709DB1B24205A00609F81 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
03C70A301B24210C00609F81 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
BD87D19D1B0CD38A00244049 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
03C709F61B24205A00609F81 /* Version.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
BD87D1B41B0CD38B00244049 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
03C709E01B24205A00609F81 /* Versions */ = {
isa = PBXGroup;
children = (
03C70A001B24209D00609F81 /* Versions.h */,
03C709FF1B24209D00609F81 /* StaticVersion.swift */,
03C70A011B24209D00609F81 /* Versions.swift */,
03C709E11B24205A00609F81 /* Supporting Files */,
);
path = Versions;
sourceTree = "";
};
03C709E11B24205A00609F81 /* Supporting Files */ = {
isa = PBXGroup;
children = (
03C709E21B24205A00609F81 /* Info.plist */,
);
name = "Supporting Files";
sourceTree = "";
};
BD87D1A11B0CD38A00244049 /* VersionsDemo */ = {
isa = PBXGroup;
children = (
BD87D1A41B0CD38A00244049 /* AppDelegate.swift */,
BD87D1A91B0CD38A00244049 /* ViewController.swift */,
BD87D1AB1B0CD38A00244049 /* Main.storyboard */,
BD87D1AE1B0CD38A00244049 /* Images.xcassets */,
BD87D1B01B0CD38A00244049 /* LaunchScreen.xib */,
BD87D1A21B0CD38A00244049 /* Supporting Files */,
);
path = VersionsDemo;
sourceTree = "";
};
BD87D1A21B0CD38A00244049 /* Supporting Files */ = {
isa = PBXGroup;
children = (
BD87D1A31B0CD38A00244049 /* Info.plist */,
);
name = "Supporting Files";
sourceTree = "";
};
BD87D1BA1B0CD38B00244049 /* VersionsDemoTests */ = {
isa = PBXGroup;
children = (
03C70A561B2421B000609F81 /* StaticVersion_Test.swift */,
03C70A571B2421B000609F81 /* Versions_Tests.swift */,
03C70A581B2421B000609F81 /* VersionsDemoTests.swift */,
BD87D1BB1B0CD38B00244049 /* Supporting Files */,
);
path = VersionsDemoTests;
sourceTree = "";
};
BD87D1BB1B0CD38B00244049 /* Supporting Files */ = {
isa = PBXGroup;
children = (
BD87D1BC1B0CD38B00244049 /* Info.plist */,
);
name = "Supporting Files";
sourceTree = "";
};
BDD8224C1AA45FDD00E48CEF = {
isa = PBXGroup;
children = (
BD87D1A11B0CD38A00244049 /* VersionsDemo */,
BD87D1BA1B0CD38B00244049 /* VersionsDemoTests */,
03C709E01B24205A00609F81 /* Versions */,
BDD822581AA4608000E48CEF /* Products */,
BDD822611AA4608500E48CEF /* Versions.podspec */,
BDD822621AA4608500E48CEF /* LICENSE.md */,
BDD822631AA4608500E48CEF /* README.md */,
);
indentWidth = 2;
sourceTree = "";
tabWidth = 2;
};
BDD822581AA4608000E48CEF /* Products */ = {
isa = PBXGroup;
children = (
BD87D1A01B0CD38A00244049 /* VersionsDemo.app */,
BD87D1B71B0CD38B00244049 /* VersionsDemoTests.xctest */,
03C709DF1B24205A00609F81 /* Version.framework */,
03C70A341B24210C00609F81 /* Version.framework */,
);
name = Products;
sourceTree = "";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
03C709DC1B24205A00609F81 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
03C70A031B24209D00609F81 /* Versions.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
03C70A311B24210C00609F81 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
03C70A541B24216B00609F81 /* Versions.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
03C709DE1B24205A00609F81 /* Versions-iOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 03C709FC1B24205A00609F81 /* Build configuration list for PBXNativeTarget "Versions-iOS" */;
buildPhases = (
03C709DA1B24205A00609F81 /* Sources */,
03C709DB1B24205A00609F81 /* Frameworks */,
03C709DC1B24205A00609F81 /* Headers */,
03C709DD1B24205A00609F81 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = "Versions-iOS";
productName = Versions;
productReference = 03C709DF1B24205A00609F81 /* Version.framework */;
productType = "com.apple.product-type.framework";
};
03C70A331B24210C00609F81 /* Versions-OSX */ = {
isa = PBXNativeTarget;
buildConfigurationList = 03C70A4D1B24210C00609F81 /* Build configuration list for PBXNativeTarget "Versions-OSX" */;
buildPhases = (
03C70A2F1B24210C00609F81 /* Sources */,
03C70A301B24210C00609F81 /* Frameworks */,
03C70A311B24210C00609F81 /* Headers */,
03C70A321B24210C00609F81 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = "Versions-OSX";
productName = "Versions-OSX";
productReference = 03C70A341B24210C00609F81 /* Version.framework */;
productType = "com.apple.product-type.framework";
};
BD87D19F1B0CD38A00244049 /* VersionsDemo */ = {
isa = PBXNativeTarget;
buildConfigurationList = BD87D1C31B0CD38B00244049 /* Build configuration list for PBXNativeTarget "VersionsDemo" */;
buildPhases = (
BD87D19C1B0CD38A00244049 /* Sources */,
BD87D19D1B0CD38A00244049 /* Frameworks */,
BD87D19E1B0CD38A00244049 /* Resources */,
03C709FD1B24205A00609F81 /* Embed Frameworks */,
);
buildRules = (
);
dependencies = (
03C709F51B24205A00609F81 /* PBXTargetDependency */,
);
name = VersionsDemo;
productName = VersionsDemo;
productReference = BD87D1A01B0CD38A00244049 /* VersionsDemo.app */;
productType = "com.apple.product-type.application";
};
BD87D1B61B0CD38B00244049 /* VersionsDemoTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = BD87D1C41B0CD38B00244049 /* Build configuration list for PBXNativeTarget "VersionsDemoTests" */;
buildPhases = (
BD87D1B31B0CD38B00244049 /* Sources */,
BD87D1B41B0CD38B00244049 /* Frameworks */,
BD87D1B51B0CD38B00244049 /* Resources */,
);
buildRules = (
);
dependencies = (
BD87D1B91B0CD38B00244049 /* PBXTargetDependency */,
);
name = VersionsDemoTests;
productName = VersionsDemoTests;
productReference = BD87D1B71B0CD38B00244049 /* VersionsDemoTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
BDD8224D1AA45FDD00E48CEF /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0700;
LastUpgradeCheck = 1100;
TargetAttributes = {
03C709DE1B24205A00609F81 = {
CreatedOnToolsVersion = 6.3.2;
LastSwiftMigration = 0800;
};
03C70A331B24210C00609F81 = {
CreatedOnToolsVersion = 6.3.2;
};
BD87D19F1B0CD38A00244049 = {
CreatedOnToolsVersion = 6.3.2;
LastSwiftMigration = 0800;
};
BD87D1B61B0CD38B00244049 = {
CreatedOnToolsVersion = 6.3.2;
LastSwiftMigration = 0800;
TestTargetID = BD87D19F1B0CD38A00244049;
};
};
};
buildConfigurationList = BDD822501AA45FDD00E48CEF /* Build configuration list for PBXProject "Versions" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = BDD8224C1AA45FDD00E48CEF;
productRefGroup = BDD822581AA4608000E48CEF /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
03C709DE1B24205A00609F81 /* Versions-iOS */,
03C70A331B24210C00609F81 /* Versions-OSX */,
BD87D19F1B0CD38A00244049 /* VersionsDemo */,
BD87D1B61B0CD38B00244049 /* VersionsDemoTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
03C709DD1B24205A00609F81 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
03C70A321B24210C00609F81 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
BD87D19E1B0CD38A00244049 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
BD87D1AD1B0CD38A00244049 /* Main.storyboard in Resources */,
BD87D1B21B0CD38A00244049 /* LaunchScreen.xib in Resources */,
BD87D1AF1B0CD38A00244049 /* Images.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
BD87D1B51B0CD38B00244049 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
03C709DA1B24205A00609F81 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
03C70A041B24209D00609F81 /* Versions.swift in Sources */,
03C70A021B24209D00609F81 /* StaticVersion.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
03C70A2F1B24210C00609F81 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
03C70A551B24216B00609F81 /* Versions.swift in Sources */,
03C70A531B24216B00609F81 /* StaticVersion.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
BD87D19C1B0CD38A00244049 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
BD87D1AA1B0CD38A00244049 /* ViewController.swift in Sources */,
BD87D1A51B0CD38A00244049 /* AppDelegate.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
BD87D1B31B0CD38B00244049 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
03C70A5B1B2421B000609F81 /* Versions_Tests.swift in Sources */,
03C70A5A1B2421B000609F81 /* StaticVersion_Test.swift in Sources */,
03C70A5C1B2421B000609F81 /* VersionsDemoTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
03C709F51B24205A00609F81 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 03C709DE1B24205A00609F81 /* Versions-iOS */;
targetProxy = 03C709F41B24205A00609F81 /* PBXContainerItemProxy */;
};
BD87D1B91B0CD38B00244049 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = BD87D19F1B0CD38A00244049 /* VersionsDemo */;
targetProxy = BD87D1B81B0CD38B00244049 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
BD87D1AB1B0CD38A00244049 /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
BD87D1AC1B0CD38A00244049 /* Base */,
);
name = Main.storyboard;
sourceTree = "";
};
BD87D1B01B0CD38A00244049 /* LaunchScreen.xib */ = {
isa = PBXVariantGroup;
children = (
BD87D1B11B0CD38A00244049 /* Base */,
);
name = LaunchScreen.xib;
sourceTree = "";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
03C709F81B24205A00609F81 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
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";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_STRICT_OBJC_MSGSEND = 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_SYMBOLS_PRIVATE_EXTERN = NO;
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;
INFOPLIST_FILE = Versions/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "no.hyper.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = Version;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
03C709F91B24205A00609F81 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
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";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
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;
INFOPLIST_FILE = Versions/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_BUNDLE_IDENTIFIER = "no.hyper.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = Version;
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
03C70A4E1B24210C00609F81 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = dwarf;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_VERSION = A;
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_SYMBOLS_PRIVATE_EXTERN = NO;
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;
INFOPLIST_FILE = Versions/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.9;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "no.hyper.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = Version;
SDKROOT = macosx;
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
03C70A4F1B24210C00609F81 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_VERSION = A;
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;
INFOPLIST_FILE = Versions/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.9;
MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_BUNDLE_IDENTIFIER = "no.hyper.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = Version;
SDKROOT = macosx;
SKIP_INSTALL = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
BD87D1BF1B0CD38B00244049 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = 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_SYMBOLS_PRIVATE_EXTERN = NO;
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;
INFOPLIST_FILE = VersionsDemo/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.3;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "no.hyper.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
};
name = Debug;
};
BD87D1C01B0CD38B00244049 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
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;
INFOPLIST_FILE = VersionsDemo/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.3;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_BUNDLE_IDENTIFIER = "no.hyper.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SWIFT_VERSION = 5.0;
VALIDATE_PRODUCT = YES;
};
name = Release;
};
BD87D1C11B0CD38B00244049 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
);
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_SYMBOLS_PRIVATE_EXTERN = NO;
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;
INFOPLIST_FILE = VersionsDemoTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.3;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "no.hyper.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/VersionsDemo.app/VersionsDemo";
};
name = Debug;
};
BD87D1C21B0CD38B00244049 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
);
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;
INFOPLIST_FILE = VersionsDemoTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.3;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_BUNDLE_IDENTIFIER = "no.hyper.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/VersionsDemo.app/VersionsDemo";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
BDD822511AA45FDD00E48CEF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = 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_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_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;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
SWIFT_VERSION = 5.0;
};
name = Debug;
};
BDD822521AA45FDD00E48CEF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = 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_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_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;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 5.0;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
03C709FC1B24205A00609F81 /* Build configuration list for PBXNativeTarget "Versions-iOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
03C709F81B24205A00609F81 /* Debug */,
03C709F91B24205A00609F81 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
03C70A4D1B24210C00609F81 /* Build configuration list for PBXNativeTarget "Versions-OSX" */ = {
isa = XCConfigurationList;
buildConfigurations = (
03C70A4E1B24210C00609F81 /* Debug */,
03C70A4F1B24210C00609F81 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
BD87D1C31B0CD38B00244049 /* Build configuration list for PBXNativeTarget "VersionsDemo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
BD87D1BF1B0CD38B00244049 /* Debug */,
BD87D1C01B0CD38B00244049 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
BD87D1C41B0CD38B00244049 /* Build configuration list for PBXNativeTarget "VersionsDemoTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
BD87D1C11B0CD38B00244049 /* Debug */,
BD87D1C21B0CD38B00244049 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
BDD822501AA45FDD00E48CEF /* Build configuration list for PBXProject "Versions" */ = {
isa = XCConfigurationList;
buildConfigurations = (
BDD822511AA45FDD00E48CEF /* Debug */,
BDD822521AA45FDD00E48CEF /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = BDD8224D1AA45FDD00E48CEF /* Project object */;
}
================================================
FILE: Versions.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
================================================
FILE: Versions.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
IDEDidComputeMac32BitWarning
================================================
FILE: Versions.xcodeproj/xcshareddata/xcschemes/Versions-OSX.xcscheme
================================================
================================================
FILE: Versions.xcodeproj/xcshareddata/xcschemes/Versions-iOS.xcscheme
================================================
================================================
FILE: Versions.xcodeproj/xcshareddata/xcschemes/VersionsDemo.xcscheme
================================================
================================================
FILE: Versions.xcodeproj/xcshareddata/xcschemes/VersionsDemoTests.xcscheme
================================================
================================================
FILE: VersionsDemo/AppDelegate.swift
================================================
//
// AppDelegate.swift
// VersionsDemo
//
// Created by Christoffer Winterkvist on 20/05/15.
//
//
import UIKit
import CoreData
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
return true
}
}
================================================
FILE: VersionsDemo/Base.lproj/LaunchScreen.xib
================================================
================================================
FILE: VersionsDemo/Base.lproj/Main.storyboard
================================================
================================================
FILE: VersionsDemo/Images.xcassets/AppIcon.appiconset/Contents.json
================================================
{
"images" : [
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: VersionsDemo/Info.plist
================================================
CFBundleDevelopmentRegion
en
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
$(PRODUCT_BUNDLE_IDENTIFIER)
CFBundleInfoDictionaryVersion
6.0
CFBundleName
$(PRODUCT_NAME)
CFBundlePackageType
APPL
CFBundleShortVersionString
1.1
CFBundleSignature
????
CFBundleVersion
1
LSRequiresIPhoneOS
UILaunchStoryboardName
LaunchScreen
UIMainStoryboardFile
Main
UIRequiredDeviceCapabilities
armv7
UISupportedInterfaceOrientations
UIInterfaceOrientationPortrait
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
================================================
FILE: VersionsDemo/VersionsDemo.xcdatamodeld/.xccurrentversion
================================================
================================================
FILE: VersionsDemo/VersionsDemo.xcdatamodeld/VersionsDemo.xcdatamodel/contents
================================================
================================================
FILE: VersionsDemo/ViewController.swift
================================================
//
// ViewController.swift
// VersionsDemo
//
// Created by Christoffer Winterkvist on 20/05/15.
//
//
import UIKit
import Version
class ViewController: UIViewController {
@IBOutlet weak var version: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
version.text = App.version
}
}
================================================
FILE: VersionsDemoTests/Info.plist
================================================
CFBundleDevelopmentRegion
en
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
$(PRODUCT_BUNDLE_IDENTIFIER)
CFBundleInfoDictionaryVersion
6.0
CFBundleName
$(PRODUCT_NAME)
CFBundlePackageType
BNDL
CFBundleShortVersionString
1.0
CFBundleSignature
????
CFBundleVersion
1
================================================
FILE: VersionsDemoTests/StaticVersion_Test.swift
================================================
//
// StaticVersion_Test.swift
// Versions
//
// Created by Konstantin Koval on 11/03/15.
//
//
import UIKit
import XCTest
import Version
class StaticVersion_Test: XCTestCase {
func testVersionStructInit() {
let v = Version("1.2.3")
let wrongV = Version("1.A.3")
XCTAssertTrue(v != nil)
XCTAssertTrue(wrongV == nil)
}
func testVersionStruct() {
if let v = Version("1.2.3") {
XCTAssertEqual(v.major, 1)
XCTAssertEqual(v.minor, 2)
XCTAssertEqual(v.patch, 3)
}
}
func testCompare() {
if let v = Version("1.2.3"), let v2 = Version("1.2.4"), let vSame = Version("1.2.3"){
XCTAssertFalse(v == v2)
XCTAssertFalse(v > vSame)
XCTAssertFalse(v < vSame)
XCTAssertTrue(v == vSame)
XCTAssertTrue(v < v2)
XCTAssertTrue(v2 > v)
}else{
assertionFailure("Versions nil")
}
}
}
================================================
FILE: VersionsDemoTests/VersionsDemoTests.swift
================================================
//
// VersionsDemoTests.swift
// VersionsDemoTests
//
// Created by Christoffer Winterkvist on 20/05/15.
//
//
import UIKit
import XCTest
import Version
class VersionsDemoTests: XCTestCase {
func testAppVersion() {
let expectedVersion = "1.1"
let version = App.version
XCTAssertEqual(version, expectedVersion)
}
func testAppVersionCompare() {
XCTAssertTrue(App.version.newerThan(version: "1.0.0"))
}
}
================================================
FILE: VersionsDemoTests/Versions_Tests.swift
================================================
//
// Versions_Tests.swift
// Versions Tests
//
// Created by Christoffer Winterkvist on 3/2/15.
//
//
import UIKit
import XCTest
import Version
class Versions_Tests: XCTestCase {
func testNumericNewerThan() {
XCTAssertTrue("1.0".newerThan(version: "0.9"))
}
func testAlphabeticVersion() {
XCTAssertTrue("B".newerThan(version: "A"))
}
func testVerboseVersion() {
XCTAssertTrue("1.1.3b".newerThan(version: "1.0.1a"))
}
func testMajorVerboseVersion() {
XCTAssertTrue("2.1".newerThan(version: "1.0.0"))
}
func testFaultyVersion()
{
XCTAssertFalse("0.9".newerThan(version: "1.0.0"))
}
func testSameVersion()
{
XCTAssertFalse("1.0".newerThan(version: "1.0"))
}
func testMultiDigitMinorVersion() {
XCTAssertTrue("1.9.3".olderThan(version: "1.9.10"))
XCTAssertTrue("1.9.10".newerThan(version: "1.9.3"))
}
func testEmptyVersionString()
{
XCTAssertTrue("1.0".newerThan(version: ""))
XCTAssertFalse("".newerThan(version: "1.0"))
}
func testSymanticVersioning() {
XCTAssertEqual(.same, "1.0".semanticCompare(version: "1.0"))
XCTAssertEqual(.major, "1.0".semanticCompare(version: "2.0"))
XCTAssertEqual(.minor, "1.2".semanticCompare(version: "1.3"))
XCTAssertEqual(.minor, "1.3".semanticCompare(version: "1.2"))
XCTAssertEqual(.patch, "1.2.1".semanticCompare(version: "1.2.2"))
XCTAssertEqual(.same, "1.0.0".semanticCompare(version: "1.0.0"))
XCTAssertEqual(.major, "1.0.0".semanticCompare(version: "2.0.0"))
XCTAssertEqual(.minor, "1.2.0".semanticCompare(version: "1.3.0"))
XCTAssertEqual(.minor, "1.3.0".semanticCompare(version: "1.2.0"))
XCTAssertEqual(.patch, "1.3.0".semanticCompare(version: "1.3.1"))
XCTAssertEqual(.minor, "1.2.1".semanticCompare(version: "1.3.1"))
}
func testMajorChange() {
XCTAssertTrue("1.0".majorChange(version: "2.0"))
XCTAssertFalse("1.0".majorChange(version: "1.1"))
}
func testMinorChange() {
XCTAssertTrue("1.0".minorChange(version: "1.1"))
XCTAssertFalse("1.1".minorChange(version: "1.0.1"))
}
func testPatchChange() {
XCTAssertTrue("1.1.0".patchChange(version: "1.1.1"))
XCTAssertFalse("1.1.1".patchChange(version: "1.1.1"))
}
}