Skip to content

Commit

Permalink
Added alignment unit test.
Browse files Browse the repository at this point in the history
  • Loading branch information
bartoszj committed Jun 26, 2016
1 parent a0a50b2 commit 0a50a2b
Show file tree
Hide file tree
Showing 61 changed files with 149 additions and 90 deletions.
File renamed without changes.
41 changes: 41 additions & 0 deletions Images.xcassets/alignment/a_any.imageset/Contents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"images" : [
{
"alignment-insets" : {
"top" : 5,
"left" : 10,
"bottom" : 15,
"right" : 20
},
"idiom" : "universal",
"filename" : "image.png",
"scale" : "1x"
},
{
"alignment-insets" : {
"top" : 6,
"left" : 12,
"bottom" : 18,
"right" : 24
},
"idiom" : "universal",
"filename" : "image@2x.png",
"scale" : "2x"
},
{
"alignment-insets" : {
"top" : 12,
"left" : 24,
"bottom" : 36,
"right" : 48
},
"idiom" : "universal",
"filename" : "image@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
6 changes: 6 additions & 0 deletions Images.xcassets/size class/Contents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ ios:
--target-device iphone \
--compile $(PWD) \
Images.xcassets
cp $(ASSETS) $(DATA)/assets.car
mv $(ASSETS) $(DATA)/assets_ios.car

mac:
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ or
## Todo:
- [x] Size class
- [x] Rendering
- [ ] Alignment
- [x] Alignment
- [ ] Slicing
- [ ] Memory
- [ ] Graphics
Expand Down
29 changes: 0 additions & 29 deletions Templates.xcassets/old/i_template_def.imageset/Contents.json

This file was deleted.

26 changes: 0 additions & 26 deletions Templates.xcassets/old/i_template_original.imageset/Contents.json

This file was deleted.

Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
4 changes: 4 additions & 0 deletions acextract.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
966A50361A3DEBE0002C814F /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 966A50351A3DEBE0002C814F /* main.swift */; };
966A504F1A3DF14C002C814F /* AssetsCatalog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 966A504E1A3DF14C002C814F /* AssetsCatalog.swift */; };
966A50521A3E13B2002C814F /* CoreUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 966A50511A3E13B2002C814F /* CoreUI.framework */; };
9673B97A1D205CE900F3C684 /* AlignmentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9673B9791D205CE900F3C684 /* AlignmentTests.swift */; };
96856B8A1D0DE62F0053B1B8 /* data in Resources */ = {isa = PBXBuildFile; fileRef = 96856B891D0DE62F0053B1B8 /* data */; };
968FAAC41A48C1500083A943 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 968FAAC31A48C1500083A943 /* AppDelegate.swift */; };
968FAAC61A48C1500083A943 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 968FAAC51A48C1500083A943 /* ViewController.swift */; };
Expand Down Expand Up @@ -147,6 +148,7 @@
966A504E1A3DF14C002C814F /* AssetsCatalog.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AssetsCatalog.swift; sourceTree = "<group>"; };
966A50501A3E0E3F002C814F /* CoreUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoreUI.h; sourceTree = "<group>"; };
966A50511A3E13B2002C814F /* CoreUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreUI.framework; path = /System/Library/PrivateFrameworks/CoreUI.framework; sourceTree = "<absolute>"; };
9673B9791D205CE900F3C684 /* AlignmentTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AlignmentTests.swift; sourceTree = "<group>"; };
96856B891D0DE62F0053B1B8 /* data */ = {isa = PBXFileReference; lastKnownFileType = folder; path = data; sourceTree = "<group>"; };
968FAABF1A48C1500083A943 /* iOSTestApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iOSTestApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
968FAAC21A48C1500083A943 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
Expand Down Expand Up @@ -389,6 +391,7 @@
96A93BE71D1FFF45004280E2 /* Tests */ = {
isa = PBXGroup;
children = (
9673B9791D205CE900F3C684 /* AlignmentTests.swift */,
96E9F6A91D0DD320001588FF /* AssetsCatalogTests.swift */,
96D010821D173194000553B1 /* CorrectnessTests.swift */,
96F446651D15DB6F00F30964 /* DeviceTests.swift */,
Expand Down Expand Up @@ -766,6 +769,7 @@
96E9F6B41D0DD45C001588FF /* ImageSet.swift in Sources */,
96F446661D15DB7000F30964 /* DeviceTests.swift in Sources */,
960594241D19D96C00325995 /* PrintInformationOperation.swift in Sources */,
9673B97A1D205CE900F3C684 /* AlignmentTests.swift in Sources */,
96D010831D173194000553B1 /* CorrectnessTests.swift in Sources */,
961427121D1F1186005831AA /* Assets.swift in Sources */,
);
Expand Down
13 changes: 3 additions & 10 deletions acextract/CoreUI.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.

#import <Foundation/Foundation.h>

typedef struct CUIImageInsets {
CGFloat bottom;
CGFloat left;
CGFloat top;
CGFloat right;
} CUIImageInsets;
@import Foundation;

typedef NS_ENUM(NSInteger, CUIDeviceIdiom) {
CUIDeviceIdiomUniversal = 0,
Expand Down Expand Up @@ -84,8 +77,8 @@ typedef NS_ENUM(NSInteger, CUIImageType) {
@property(readonly, nonatomic) CUIResizingMode resizingMode;
@property(readonly, nonatomic) int blendMode;
@property(readonly, nonatomic) double opacity;
@property(readonly, nonatomic) CUIImageInsets alignmentEdgeInsets;
@property(readonly, nonatomic) CUIImageInsets edgeInsets;
@property(readonly, nonatomic) NSEdgeInsets alignmentEdgeInsets;
@property(readonly, nonatomic) NSEdgeInsets edgeInsets;
@property(readonly, nonatomic) CUIImageType imageType;
@property(readonly, nonatomic) double scale;
@property(readonly, nonatomic) struct CGSize size;
Expand Down
11 changes: 6 additions & 5 deletions acextract/CoreUI_Swift.swift
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,12 @@ extension ScaleFactor: NameStringConvertible {
}

// MARK: - CoreUI Extensions
// MARK: CUIImageInsets
extension CUIImageInsets: CustomStringConvertible {
public var description: String {
return "(\(top),\(left),\(bottom),\(right))"
}
extension NSEdgeInsets: Equatable { }
public func == (lhs: NSEdgeInsets, rhs: NSEdgeInsets) -> Bool {
return lhs.top == rhs.top
&& lhs.left == rhs.left
&& lhs.bottom == rhs.bottom
&& lhs.right == rhs.right
}

// MARK: CUIDeviceIdiom
Expand Down
64 changes: 64 additions & 0 deletions acextractTests/AlignmentTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
//
// AlignmentTests.swift
// acextract
//
// Created by Bartosz Janda on 26.06.2016.
// Copyright © 2016 Bartosz Janda. All rights reserved.
//

import XCTest

class AlignmentTests: XCTestCase {
// Image Alignment
func testNoAlignment() {
let imageSet = assetsContainer.iOS.imageSet(withName: "a_no")
let images = imageSet.namedImages
XCTAssertEqual(images.count, 3)
if let image = images.filter({ return $0.scale == 1.0 }).first {
XCTAssertEqual(image.alignmentEdgeInsets, NSEdgeInsets())
XCTAssertEqual(image.acImageName, "a_no.png")
} else {
XCTFail("Cannot find image")
}

if let image = images.filter({ return $0.scale == 2.0 }).first {
XCTAssertEqual(image.alignmentEdgeInsets, NSEdgeInsets())
XCTAssertEqual(image.acImageName, "a_no@2x.png")
} else {
XCTFail("Cannot find image")
}

if let image = images.filter({ return $0.scale == 3.0 }).first {
XCTAssertEqual(image.alignmentEdgeInsets, NSEdgeInsets())
XCTAssertEqual(image.acImageName, "a_no@3x.png")
} else {
XCTFail("Cannot find image")
}
}

func testAnyAlignment() {
let imageSet = assetsContainer.iOS.imageSet(withName: "a_any")
let images = imageSet.namedImages
XCTAssertEqual(images.count, 3)
if let image = images.filter({ return $0.scale == 1.0 }).first {
XCTAssertEqual(image.alignmentEdgeInsets, NSEdgeInsets(top: 5, left: 10, bottom: 15, right: 20))
XCTAssertEqual(image.acImageName, "a_any.png")
} else {
XCTFail("Cannot find image")
}

if let image = images.filter({ return $0.scale == 2.0 }).first {
XCTAssertEqual(image.alignmentEdgeInsets, NSEdgeInsets(top: 3, left: 6, bottom: 9, right: 12))
XCTAssertEqual(image.acImageName, "a_any@2x.png")
} else {
XCTFail("Cannot find image")
}

if let image = images.filter({ return $0.scale == 3.0 }).first {
XCTAssertEqual(image.alignmentEdgeInsets, NSEdgeInsets(top: 4, left: 8, bottom: 12, right: 16))
XCTAssertEqual(image.acImageName, "a_any@3x.png")
} else {
XCTFail("Cannot find image")
}
}
}
22 changes: 14 additions & 8 deletions acextractTests/Assets.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,34 @@

import Foundation

let testBundleIdentifer = "com.bjanda.acextractTests"
let testBundle = NSBundle(identifier: testBundleIdentifer)

enum Asset: String {
// MARK: Cases
case iOS = "data/assets_ios"
case iPhone = "data/assets_iphone"
case iPad = "data/assets_ipad"
case macOS = "data/assets_mac"
case tvOS = "data/assets_tv"
case watchOS = "data/assets_watch"
case assets = "data/assets"

// MARK: Properties
var path: String {
guard let bundle = testBundle else {
fatalError("Missing bundle")
}

guard let path = bundle.pathForResource(self.rawValue, ofType: "car") else {
guard let path = Asset.path(catalog: self) else {
fatalError("Missing car file")
}

return path
}

// MARK: Static
static let bundleIdentifer = "com.bjanda.acextractTests"
static let bundle = NSBundle(identifier: bundleIdentifer)!
static func path(name name: String) -> String? {
return bundle.pathForResource(name, ofType: "car")
}
static func path(catalog catalog: Asset) -> String? {
return path(name: catalog.rawValue)
}
}

struct AssetsContainer {
Expand Down
10 changes: 4 additions & 6 deletions acextractTests/AssetsCatalogTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class AssetsCatalogTests: XCTestCase {
*/
func testCreateAssetsCatalog01() {
do {
_ = try AssetsCatalog(path: Asset.iOS.path)
_ = try AssetsCatalog(path: Asset.assets.path)
} catch {
XCTFail("Cannot create AssetsCatalog object")
}
Expand All @@ -48,7 +48,7 @@ class AssetsCatalogTests: XCTestCase {
Incorrect file.
*/
func testCreateAssetsCatalog03() {
guard let path = testBundle?.pathForResource("data/fake_assets", ofType: nil) else {
guard let path = Asset.bundle.pathForResource("data/fake_assets", ofType: nil) else {
XCTFail("Cannot find fake asset")
return
}
Expand All @@ -69,8 +69,7 @@ class AssetsCatalogTests: XCTestCase {
func testOperation01() {
do {
let operation = FakeOperation()
let assetsCatalog = try AssetsCatalog(path: Asset.iOS.path)
try assetsCatalog.performOperation(operation)
try assetsContainer.iOS.performOperation(operation)
XCTAssertTrue(operation.executed)
} catch {
XCTFail("Unknown exception \(error)")
Expand All @@ -84,8 +83,7 @@ class AssetsCatalogTests: XCTestCase {
do {
let operation1 = FakeOperation()
let operation2 = FakeOperation()
let assetsCatalog = try AssetsCatalog(path: Asset.iOS.path)
try assetsCatalog.performOperations([operation1, operation2])
try assetsContainer.iOS.performOperations([operation1, operation2])
XCTAssertTrue(operation1.executed)
XCTAssertTrue(operation2.executed)
} catch {
Expand Down
10 changes: 5 additions & 5 deletions acextractTests/TemplateRenderingTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -46,22 +46,22 @@ class TemplateRenderingTests: XCTestCase {
} else {
XCTFail("Cannot find image")
}

if let image = images.filter({ return $0.scale == 2.0 }).first {
XCTAssertEqual(image.templateRenderingMode, CUIRenderMode.Original)
XCTAssertEqual(image.acImageName, "r_original@2x.png")
} else {
XCTFail("Cannot find image")
}

if let image = images.filter({ return $0.scale == 3.0 }).first {
XCTAssertEqual(image.templateRenderingMode, CUIRenderMode.Original)
XCTAssertEqual(image.acImageName, "r_original@3x.png")
} else {
XCTFail("Cannot find image")
}
}

func testTemplate() {
let imageSet = assetsContainer.iOS.imageSet(withName: "r_template")
let images = imageSet.namedImages
Expand All @@ -72,14 +72,14 @@ class TemplateRenderingTests: XCTestCase {
} else {
XCTFail("Cannot find image")
}

if let image = images.filter({ return $0.scale == 2.0 }).first {
XCTAssertEqual(image.templateRenderingMode, CUIRenderMode.Template)
XCTAssertEqual(image.acImageName, "r_template@2x.png")
} else {
XCTFail("Cannot find image")
}

if let image = images.filter({ return $0.scale == 3.0 }).first {
XCTAssertEqual(image.templateRenderingMode, CUIRenderMode.Template)
XCTAssertEqual(image.acImageName, "r_template@3x.png")
Expand Down
Binary file added acextractTests/data/assets.car
Binary file not shown.
Binary file modified acextractTests/data/assets_ios.car
Binary file not shown.
Binary file modified acextractTests/data/assets_ipad.car
Binary file not shown.
Binary file modified acextractTests/data/assets_iphone.car
Binary file not shown.
Binary file modified acextractTests/data/assets_mac.car
Binary file not shown.
Binary file modified acextractTests/data/assets_tv.car
Binary file not shown.
Binary file modified acextractTests/data/assets_watch.car
Binary file not shown.

0 comments on commit 0a50a2b

Please sign in to comment.