From 0fefdecac08e7b03cd80e27583eec97a15b597e9 Mon Sep 17 00:00:00 2001 From: Max Sokolov Date: Sat, 19 Mar 2016 15:17:43 +0300 Subject: [PATCH] setup project for tests --- Tablet.xcworkspace/contents.xcworkspacedata | 4 + .../UserInterfaceState.xcuserstate | Bin 0 -> 5070 bytes Tablet/Info.plist | 26 ++ Tablet/TableDirector.swift | 6 +- Tablet/TableRowBuilder.swift | 2 +- Tablet/Tablet.h | 12 + Tablet/Tablet.swift | 2 +- Tablet/Tablet.xcodeproj/project.pbxproj | 423 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 40699 bytes .../xcschemes/Tablet.xcscheme | 99 ++++ .../xcschemes/xcschememanagement.plist | 27 ++ .../Application}/AppDelegate.swift | 0 .../ViewControllers/MainViewController.swift | 28 ++ .../Storyboards}/LaunchScreen.storyboard | 0 .../Storyboards}/Main.storyboard | 61 ++- .../TabletDemo.xcodeproj/project.pbxproj | 223 +++++++-- .../UserInterfaceState.xcuserstate | Bin 29385 -> 89586 bytes .../xcschemes/TabletDemo.xcscheme | 10 + .../xcschemes/xcschememanagement.plist | 5 + .../ConfigurableTableViewCell.swift | 1 + TabletDemo/TabletDemo/ViewController.swift | 2 +- Tests/Info.plist | 24 + Tests/TabletTests.swift | 47 ++ 24 files changed, 960 insertions(+), 49 deletions(-) create mode 100644 Tablet.xcworkspace/contents.xcworkspacedata create mode 100644 Tablet.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Tablet/Info.plist create mode 100644 Tablet/Tablet.h create mode 100644 Tablet/Tablet.xcodeproj/project.pbxproj create mode 100644 Tablet/Tablet.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Tablet/Tablet.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Tablet/Tablet.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/Tablet.xcscheme create mode 100644 Tablet/Tablet.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/xcschememanagement.plist rename TabletDemo/{TabletDemo => Classes/Application}/AppDelegate.swift (100%) create mode 100644 TabletDemo/Classes/Presentation/Main/ViewControllers/MainViewController.swift rename TabletDemo/{TabletDemo/Base.lproj => Resources/Storyboards}/LaunchScreen.storyboard (100%) rename TabletDemo/{TabletDemo/Base.lproj => Resources/Storyboards}/Main.storyboard (75%) create mode 100644 Tests/Info.plist create mode 100644 Tests/TabletTests.swift diff --git a/Tablet.xcworkspace/contents.xcworkspacedata b/Tablet.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..94b2795 --- /dev/null +++ b/Tablet.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,4 @@ + + + diff --git a/Tablet.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate b/Tablet.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..145551c86c5bbea553b0d8bf8f1903b94b2bfc76 GIT binary patch literal 5070 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 + + + + 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 + + + diff --git a/Tablet/TableDirector.swift b/Tablet/TableDirector.swift index 74bd1f2..d681cda 100644 --- a/Tablet/TableDirector.swift +++ b/Tablet/TableDirector.swift @@ -27,8 +27,8 @@ import Foundation public class TableDirector: NSObject, UITableViewDataSource, UITableViewDelegate { public private(set) weak var tableView: UITableView! - private var sections = [TableSectionBuilder]() public weak var scrollDelegate: UIScrollViewDelegate? + private var sections = [TableSectionBuilder]() public init(tableView: UITableView) { super.init() @@ -166,10 +166,10 @@ public extension TableDirector { return invokeAction(.height, cell: nil, indexPath: indexPath) as? CGFloat ?? UITableViewAutomaticDimension } - func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? { + /*func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? { return invokeAction(.willSelect, cell: tableView.cellForRowAtIndexPath(indexPath), indexPath: indexPath) as? NSIndexPath - } + }*/ func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { diff --git a/Tablet/TableRowBuilder.swift b/Tablet/TableRowBuilder.swift index fcf8b8c..970989e 100644 --- a/Tablet/TableRowBuilder.swift +++ b/Tablet/TableRowBuilder.swift @@ -23,7 +23,7 @@ import Foundation public typealias ReturnValue = AnyObject? -internal enum ActionHandler { +enum ActionHandler { case actionBlock((data: ActionData) -> Void) case actionReturnBlock((data: ActionData) -> AnyObject?) diff --git a/Tablet/Tablet.h b/Tablet/Tablet.h new file mode 100644 index 0000000..a1d2602 --- /dev/null +++ b/Tablet/Tablet.h @@ -0,0 +1,12 @@ +// +// Tablet.h +// Tablet +// +// Created by Max Sokolov on 19/03/16. +// Copyright © 2016 Tablet. All rights reserved. +// + +@import Foundation; + +FOUNDATION_EXPORT double TabletVersionNumber; +FOUNDATION_EXPORT const unsigned char TabletVersionString[]; \ No newline at end of file diff --git a/Tablet/Tablet.swift b/Tablet/Tablet.swift index a4ceb60..0e71508 100644 --- a/Tablet/Tablet.swift +++ b/Tablet/Tablet.swift @@ -21,7 +21,7 @@ import UIKit import Foundation -internal struct TabletNotifications { +struct TabletNotifications { static let CellAction = "_cellaction" } diff --git a/Tablet/Tablet.xcodeproj/project.pbxproj b/Tablet/Tablet.xcodeproj/project.pbxproj new file mode 100644 index 0000000..f178aa9 --- /dev/null +++ b/Tablet/Tablet.xcodeproj/project.pbxproj @@ -0,0 +1,423 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + DAC2D6741C9D743D009E9C19 /* Tablet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC2D6691C9D743D009E9C19 /* Tablet.framework */; }; + DAC2D6871C9D7517009E9C19 /* Tablet.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC2D6851C9D7517009E9C19 /* Tablet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DAC2D6901C9D799E009E9C19 /* TableDirector.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC2D68C1C9D799E009E9C19 /* TableDirector.swift */; }; + DAC2D6911C9D799E009E9C19 /* TableRowBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC2D68D1C9D799E009E9C19 /* TableRowBuilder.swift */; }; + DAC2D6921C9D799E009E9C19 /* TableSectionBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC2D68E1C9D799E009E9C19 /* TableSectionBuilder.swift */; }; + DAC2D6931C9D799E009E9C19 /* Tablet.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC2D68F1C9D799E009E9C19 /* Tablet.swift */; }; + DAC2D6991C9D7A3F009E9C19 /* TabletTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC2D6961C9D7A3B009E9C19 /* TabletTests.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + DAC2D6751C9D743D009E9C19 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DAC2D6601C9D743D009E9C19 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DAC2D6681C9D743D009E9C19; + remoteInfo = Tablet; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + DAC2D6691C9D743D009E9C19 /* Tablet.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Tablet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DAC2D6731C9D743D009E9C19 /* TabletTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TabletTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DAC2D6841C9D7517009E9C19 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + DAC2D6851C9D7517009E9C19 /* Tablet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Tablet.h; sourceTree = ""; }; + DAC2D68C1C9D799E009E9C19 /* TableDirector.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableDirector.swift; sourceTree = ""; }; + DAC2D68D1C9D799E009E9C19 /* TableRowBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableRowBuilder.swift; sourceTree = ""; }; + DAC2D68E1C9D799E009E9C19 /* TableSectionBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableSectionBuilder.swift; sourceTree = ""; }; + DAC2D68F1C9D799E009E9C19 /* Tablet.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Tablet.swift; sourceTree = ""; }; + DAC2D6951C9D7A3B009E9C19 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + DAC2D6961C9D7A3B009E9C19 /* TabletTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TabletTests.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + DAC2D6651C9D743D009E9C19 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DAC2D6701C9D743D009E9C19 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DAC2D6741C9D743D009E9C19 /* Tablet.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + DAC2D65F1C9D743D009E9C19 = { + isa = PBXGroup; + children = ( + DAC2D68B1C9D7990009E9C19 /* Classes */, + DAC2D6941C9D7A03009E9C19 /* Tests */, + DAC2D6831C9D74EE009E9C19 /* Supporting Files */, + DAC2D66A1C9D743D009E9C19 /* Products */, + ); + sourceTree = ""; + }; + DAC2D66A1C9D743D009E9C19 /* Products */ = { + isa = PBXGroup; + children = ( + DAC2D6691C9D743D009E9C19 /* Tablet.framework */, + DAC2D6731C9D743D009E9C19 /* TabletTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + DAC2D6831C9D74EE009E9C19 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + DAC2D6841C9D7517009E9C19 /* Info.plist */, + DAC2D6851C9D7517009E9C19 /* Tablet.h */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + DAC2D68B1C9D7990009E9C19 /* Classes */ = { + isa = PBXGroup; + children = ( + DAC2D68F1C9D799E009E9C19 /* Tablet.swift */, + DAC2D68C1C9D799E009E9C19 /* TableDirector.swift */, + DAC2D68D1C9D799E009E9C19 /* TableRowBuilder.swift */, + DAC2D68E1C9D799E009E9C19 /* TableSectionBuilder.swift */, + ); + name = Classes; + sourceTree = ""; + }; + DAC2D6941C9D7A03009E9C19 /* Tests */ = { + isa = PBXGroup; + children = ( + DAC2D6951C9D7A3B009E9C19 /* Info.plist */, + DAC2D6961C9D7A3B009E9C19 /* TabletTests.swift */, + ); + name = Tests; + path = ../Tests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + DAC2D6661C9D743D009E9C19 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + DAC2D6871C9D7517009E9C19 /* Tablet.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + DAC2D6681C9D743D009E9C19 /* Tablet */ = { + isa = PBXNativeTarget; + buildConfigurationList = DAC2D67D1C9D743D009E9C19 /* Build configuration list for PBXNativeTarget "Tablet" */; + buildPhases = ( + DAC2D6641C9D743D009E9C19 /* Sources */, + DAC2D6651C9D743D009E9C19 /* Frameworks */, + DAC2D6661C9D743D009E9C19 /* Headers */, + DAC2D6671C9D743D009E9C19 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Tablet; + productName = Tablet; + productReference = DAC2D6691C9D743D009E9C19 /* Tablet.framework */; + productType = "com.apple.product-type.framework"; + }; + DAC2D6721C9D743D009E9C19 /* TabletTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = DAC2D6801C9D743D009E9C19 /* Build configuration list for PBXNativeTarget "TabletTests" */; + buildPhases = ( + DAC2D66F1C9D743D009E9C19 /* Sources */, + DAC2D6701C9D743D009E9C19 /* Frameworks */, + DAC2D6711C9D743D009E9C19 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + DAC2D6761C9D743D009E9C19 /* PBXTargetDependency */, + ); + name = TabletTests; + productName = TabletTests; + productReference = DAC2D6731C9D743D009E9C19 /* TabletTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DAC2D6601C9D743D009E9C19 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0720; + LastUpgradeCheck = 0720; + ORGANIZATIONNAME = Tablet; + TargetAttributes = { + DAC2D6681C9D743D009E9C19 = { + CreatedOnToolsVersion = 7.2; + }; + DAC2D6721C9D743D009E9C19 = { + CreatedOnToolsVersion = 7.2; + }; + }; + }; + buildConfigurationList = DAC2D6631C9D743D009E9C19 /* Build configuration list for PBXProject "Tablet" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = DAC2D65F1C9D743D009E9C19; + productRefGroup = DAC2D66A1C9D743D009E9C19 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DAC2D6681C9D743D009E9C19 /* Tablet */, + DAC2D6721C9D743D009E9C19 /* TabletTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DAC2D6671C9D743D009E9C19 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DAC2D6711C9D743D009E9C19 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DAC2D6641C9D743D009E9C19 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DAC2D6901C9D799E009E9C19 /* TableDirector.swift in Sources */, + DAC2D6921C9D799E009E9C19 /* TableSectionBuilder.swift in Sources */, + DAC2D6911C9D799E009E9C19 /* TableRowBuilder.swift in Sources */, + DAC2D6931C9D799E009E9C19 /* Tablet.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DAC2D66F1C9D743D009E9C19 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DAC2D6991C9D7A3F009E9C19 /* TabletTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + DAC2D6761C9D743D009E9C19 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DAC2D6681C9D743D009E9C19 /* Tablet */; + targetProxy = DAC2D6751C9D743D009E9C19 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + DAC2D67B1C9D743D009E9C19 /* 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; + 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 = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + DAC2D67C1C9D743D009E9C19 /* 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"; + 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 = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + DAC2D67E1C9D743D009E9C19 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.tablet.tablet.Tablet; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + DAC2D67F1C9D743D009E9C19 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.tablet.tablet.Tablet; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Release; + }; + DAC2D6811C9D743D009E9C19 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = ../Tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.tablet.tablet.TabletTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + DAC2D6821C9D743D009E9C19 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = ../Tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.tablet.tablet.TabletTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DAC2D6631C9D743D009E9C19 /* Build configuration list for PBXProject "Tablet" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DAC2D67B1C9D743D009E9C19 /* Debug */, + DAC2D67C1C9D743D009E9C19 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DAC2D67D1C9D743D009E9C19 /* Build configuration list for PBXNativeTarget "Tablet" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DAC2D67E1C9D743D009E9C19 /* Debug */, + DAC2D67F1C9D743D009E9C19 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DAC2D6801C9D743D009E9C19 /* Build configuration list for PBXNativeTarget "TabletTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DAC2D6811C9D743D009E9C19 /* Debug */, + DAC2D6821C9D743D009E9C19 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = DAC2D6601C9D743D009E9C19 /* Project object */; +} diff --git a/Tablet/Tablet.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Tablet/Tablet.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..78fd6b2 --- /dev/null +++ b/Tablet/Tablet.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Tablet/Tablet.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate b/Tablet/Tablet.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..a996426bada54996a79ea5667b18677a8ff9deab GIT binary patch literal 40699 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 W+D7}q4Gs?kZZzSYn>>Cqw)ubSY7l(@ literal 0 HcmV?d00001 diff --git a/Tablet/Tablet.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/Tablet.xcscheme b/Tablet/Tablet.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/Tablet.xcscheme new file mode 100644 index 0000000..b6e3630 --- /dev/null +++ b/Tablet/Tablet.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/Tablet.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tablet/Tablet.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/xcschememanagement.plist b/Tablet/Tablet.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..942caa5 --- /dev/null +++ b/Tablet/Tablet.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + Tablet.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + DAC2D6681C9D743D009E9C19 + + primary + + + DAC2D6721C9D743D009E9C19 + + primary + + + + + diff --git a/TabletDemo/TabletDemo/AppDelegate.swift b/TabletDemo/Classes/Application/AppDelegate.swift similarity index 100% rename from TabletDemo/TabletDemo/AppDelegate.swift rename to TabletDemo/Classes/Application/AppDelegate.swift diff --git a/TabletDemo/Classes/Presentation/Main/ViewControllers/MainViewController.swift b/TabletDemo/Classes/Presentation/Main/ViewControllers/MainViewController.swift new file mode 100644 index 0000000..6677dd7 --- /dev/null +++ b/TabletDemo/Classes/Presentation/Main/ViewControllers/MainViewController.swift @@ -0,0 +1,28 @@ +// +// MainViewController.swift +// TabletDemo +// +// Created by Max Sokolov on 19/03/16. +// Copyright © 2016 Tablet. All rights reserved. +// + +import Foundation +import UIKit + +class MainViewController : UITableViewController { + + var tableDirector: TableDirector! + + override func viewDidLoad() { + super.viewDidLoad() + + tableDirector = TableDirector(tableView: tableView) + + tableDirector += TableRowBuilder(items: [1, 2, 3, 4], id: "cell") + .action(.configure) { data -> Void in + + data.cell?.accessoryType = .DisclosureIndicator + data.cell?.textLabel?.text = "\(data.item)" + } + } +} \ No newline at end of file diff --git a/TabletDemo/TabletDemo/Base.lproj/LaunchScreen.storyboard b/TabletDemo/Resources/Storyboards/LaunchScreen.storyboard similarity index 100% rename from TabletDemo/TabletDemo/Base.lproj/LaunchScreen.storyboard rename to TabletDemo/Resources/Storyboards/LaunchScreen.storyboard diff --git a/TabletDemo/TabletDemo/Base.lproj/Main.storyboard b/TabletDemo/Resources/Storyboards/Main.storyboard similarity index 75% rename from TabletDemo/TabletDemo/Base.lproj/Main.storyboard rename to TabletDemo/Resources/Storyboards/Main.storyboard index 65ef436..d299801 100644 --- a/TabletDemo/TabletDemo/Base.lproj/Main.storyboard +++ b/TabletDemo/Resources/Storyboards/Main.storyboard @@ -1,8 +1,8 @@ - + - + @@ -19,7 +19,6 @@ - @@ -32,15 +31,12 @@ - - @@ -51,7 +47,6 @@ - @@ -80,7 +73,6 @@ - @@ -89,7 +81,6 @@ - @@ -107,6 +98,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -115,7 +135,6 @@ - @@ -126,5 +145,23 @@ + + + + + + + + + + + + + + + + + + diff --git a/TabletDemo/TabletDemo.xcodeproj/project.pbxproj b/TabletDemo/TabletDemo.xcodeproj/project.pbxproj index c043d8b..4d8e6af 100644 --- a/TabletDemo/TabletDemo.xcodeproj/project.pbxproj +++ b/TabletDemo/TabletDemo.xcodeproj/project.pbxproj @@ -11,32 +11,47 @@ 508B71861BF48E0D00272920 /* TableRowBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508B71851BF48E0D00272920 /* TableRowBuilder.swift */; }; DA1BCD0F1BF5472C00CC0479 /* TableDirector.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA1BCD0E1BF5472C00CC0479 /* TableDirector.swift */; }; DA1BCD111BF7388C00CC0479 /* CustomTableActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA1BCD101BF7388C00CC0479 /* CustomTableActions.swift */; }; - DAB7EB2B1BEF787300D2AD5E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAB7EB2A1BEF787300D2AD5E /* AppDelegate.swift */; }; DAB7EB2D1BEF787300D2AD5E /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAB7EB2C1BEF787300D2AD5E /* ViewController.swift */; }; - DAB7EB301BEF787300D2AD5E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DAB7EB2E1BEF787300D2AD5E /* Main.storyboard */; }; DAB7EB321BEF787300D2AD5E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DAB7EB311BEF787300D2AD5E /* Assets.xcassets */; }; - DAB7EB351BEF787300D2AD5E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DAB7EB331BEF787300D2AD5E /* LaunchScreen.storyboard */; }; DAB7EB3E1BEF78A400D2AD5E /* Tablet.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAB7EB3D1BEF78A400D2AD5E /* Tablet.swift */; }; DAB7EB401BEFD07E00D2AD5E /* ConfigurableTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAB7EB3F1BEFD07E00D2AD5E /* ConfigurableTableViewCell.swift */; }; + DAC2D5CA1C9D303E009E9C19 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC2D5C91C9D303E009E9C19 /* AppDelegate.swift */; }; + DAC2D5CF1C9D30A7009E9C19 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DAC2D5CD1C9D30A7009E9C19 /* Main.storyboard */; }; + DAC2D5D01C9D30A7009E9C19 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DAC2D5CE1C9D30A7009E9C19 /* LaunchScreen.storyboard */; }; + DAC2D5D41C9D3118009E9C19 /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC2D5D31C9D3118009E9C19 /* MainViewController.swift */; }; + DAC2D5E61C9D6493009E9C19 /* TabletTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC2D5D61C9D638F009E9C19 /* TabletTests.swift */; }; DAED08F11C14DE7E006C04D8 /* MyTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAED08F01C14DE7E006C04D8 /* MyTableViewCell.swift */; }; DAF003961C14DC0C0028C3D6 /* MyNibTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAF003951C14DC0C0028C3D6 /* MyNibTableViewCell.swift */; }; DAF003981C14DC250028C3D6 /* MyNibTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = DAF003971C14DC250028C3D6 /* MyNibTableViewCell.xib */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + DAC2D5E11C9D6433009E9C19 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DAB7EB1F1BEF787300D2AD5E /* Project object */; + proxyType = 1; + remoteGlobalIDString = DAB7EB261BEF787300D2AD5E; + remoteInfo = TabletDemo; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXFileReference section */ 508B71831BF48DD300272920 /* TableSectionBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableSectionBuilder.swift; sourceTree = ""; }; 508B71851BF48E0D00272920 /* TableRowBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableRowBuilder.swift; sourceTree = ""; }; DA1BCD0E1BF5472C00CC0479 /* TableDirector.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableDirector.swift; sourceTree = ""; }; DA1BCD101BF7388C00CC0479 /* CustomTableActions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CustomTableActions.swift; sourceTree = ""; }; DAB7EB271BEF787300D2AD5E /* TabletDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TabletDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; - DAB7EB2A1BEF787300D2AD5E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; DAB7EB2C1BEF787300D2AD5E /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - DAB7EB2F1BEF787300D2AD5E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; DAB7EB311BEF787300D2AD5E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - DAB7EB341BEF787300D2AD5E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; DAB7EB361BEF787300D2AD5E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; DAB7EB3D1BEF78A400D2AD5E /* Tablet.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Tablet.swift; sourceTree = ""; }; DAB7EB3F1BEFD07E00D2AD5E /* ConfigurableTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConfigurableTableViewCell.swift; sourceTree = ""; }; + DAC2D5C91C9D303E009E9C19 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + DAC2D5CD1C9D30A7009E9C19 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; + DAC2D5CE1C9D30A7009E9C19 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; + DAC2D5D31C9D3118009E9C19 /* MainViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = ""; }; + DAC2D5D61C9D638F009E9C19 /* TabletTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TabletTests.swift; sourceTree = ""; }; + DAC2D5DC1C9D6433009E9C19 /* TabletTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TabletTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; DAED08F01C14DE7E006C04D8 /* MyTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MyTableViewCell.swift; sourceTree = ""; }; DAF003951C14DC0C0028C3D6 /* MyNibTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MyNibTableViewCell.swift; sourceTree = ""; }; DAF003971C14DC250028C3D6 /* MyNibTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MyNibTableViewCell.xib; sourceTree = ""; }; @@ -50,6 +65,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + DAC2D5D91C9D6433009E9C19 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -57,6 +79,9 @@ isa = PBXGroup; children = ( DAB7EB3C1BEF789500D2AD5E /* Tablet */, + DAC2D5C61C9D2FE5009E9C19 /* Classes */, + DAC2D5CB1C9D3058009E9C19 /* Resources */, + DAC2D5D51C9D635F009E9C19 /* Tests */, DAB7EB291BEF787300D2AD5E /* TabletDemo */, DAB7EB281BEF787300D2AD5E /* Products */, ); @@ -66,6 +91,7 @@ isa = PBXGroup; children = ( DAB7EB271BEF787300D2AD5E /* TabletDemo.app */, + DAC2D5DC1C9D6433009E9C19 /* TabletTests.xctest */, ); name = Products; sourceTree = ""; @@ -73,16 +99,14 @@ DAB7EB291BEF787300D2AD5E /* TabletDemo */ = { isa = PBXGroup; children = ( - DAB7EB2A1BEF787300D2AD5E /* AppDelegate.swift */, + DAC2D5C41C9D2F5C009E9C19 /* Presentation */, DAB7EB2C1BEF787300D2AD5E /* ViewController.swift */, DAB7EB3F1BEFD07E00D2AD5E /* ConfigurableTableViewCell.swift */, DA1BCD101BF7388C00CC0479 /* CustomTableActions.swift */, DAF003951C14DC0C0028C3D6 /* MyNibTableViewCell.swift */, DAF003971C14DC250028C3D6 /* MyNibTableViewCell.xib */, DAED08F01C14DE7E006C04D8 /* MyTableViewCell.swift */, - DAB7EB2E1BEF787300D2AD5E /* Main.storyboard */, DAB7EB311BEF787300D2AD5E /* Assets.xcassets */, - DAB7EB331BEF787300D2AD5E /* LaunchScreen.storyboard */, DAB7EB361BEF787300D2AD5E /* Info.plist */, ); path = TabletDemo; @@ -100,6 +124,80 @@ path = ../Tablet; sourceTree = ""; }; + DAC2D5C41C9D2F5C009E9C19 /* Presentation */ = { + isa = PBXGroup; + children = ( + ); + name = Presentation; + sourceTree = ""; + }; + DAC2D5C61C9D2FE5009E9C19 /* Classes */ = { + isa = PBXGroup; + children = ( + DAC2D5C81C9D3014009E9C19 /* Application */, + DAC2D5C71C9D3005009E9C19 /* Presentation */, + ); + path = Classes; + sourceTree = ""; + }; + DAC2D5C71C9D3005009E9C19 /* Presentation */ = { + isa = PBXGroup; + children = ( + DAC2D5D11C9D30D8009E9C19 /* Main */, + ); + path = Presentation; + sourceTree = ""; + }; + DAC2D5C81C9D3014009E9C19 /* Application */ = { + isa = PBXGroup; + children = ( + DAC2D5C91C9D303E009E9C19 /* AppDelegate.swift */, + ); + path = Application; + sourceTree = ""; + }; + DAC2D5CB1C9D3058009E9C19 /* Resources */ = { + isa = PBXGroup; + children = ( + DAC2D5CC1C9D306C009E9C19 /* Storyboards */, + ); + path = Resources; + sourceTree = ""; + }; + DAC2D5CC1C9D306C009E9C19 /* Storyboards */ = { + isa = PBXGroup; + children = ( + DAC2D5CD1C9D30A7009E9C19 /* Main.storyboard */, + DAC2D5CE1C9D30A7009E9C19 /* LaunchScreen.storyboard */, + ); + path = Storyboards; + sourceTree = ""; + }; + DAC2D5D11C9D30D8009E9C19 /* Main */ = { + isa = PBXGroup; + children = ( + DAC2D5D21C9D30E4009E9C19 /* ViewControllers */, + ); + path = Main; + sourceTree = ""; + }; + DAC2D5D21C9D30E4009E9C19 /* ViewControllers */ = { + isa = PBXGroup; + children = ( + DAC2D5D31C9D3118009E9C19 /* MainViewController.swift */, + ); + path = ViewControllers; + sourceTree = ""; + }; + DAC2D5D51C9D635F009E9C19 /* Tests */ = { + isa = PBXGroup; + children = ( + DAC2D5D61C9D638F009E9C19 /* TabletTests.swift */, + ); + name = Tests; + path = ../Tests; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -120,12 +218,31 @@ productReference = DAB7EB271BEF787300D2AD5E /* TabletDemo.app */; productType = "com.apple.product-type.application"; }; + DAC2D5DB1C9D6433009E9C19 /* TabletTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = DAC2D5E31C9D6433009E9C19 /* Build configuration list for PBXNativeTarget "TabletTests" */; + buildPhases = ( + DAC2D5D81C9D6433009E9C19 /* Sources */, + DAC2D5D91C9D6433009E9C19 /* Frameworks */, + DAC2D5DA1C9D6433009E9C19 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + DAC2D5E21C9D6433009E9C19 /* PBXTargetDependency */, + ); + name = TabletTests; + productName = TabletTests; + productReference = DAC2D5DC1C9D6433009E9C19 /* TabletTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ DAB7EB1F1BEF787300D2AD5E /* Project object */ = { isa = PBXProject; attributes = { + LastSwiftUpdateCheck = 0720; LastUpgradeCheck = 0700; ORGANIZATIONNAME = Tablet; TargetAttributes = { @@ -133,6 +250,10 @@ CreatedOnToolsVersion = 7.0.1; DevelopmentTeam = Z48R734SJX; }; + DAC2D5DB1C9D6433009E9C19 = { + CreatedOnToolsVersion = 7.2; + TestTargetID = DAB7EB261BEF787300D2AD5E; + }; }; }; buildConfigurationList = DAB7EB221BEF787300D2AD5E /* Build configuration list for PBXProject "TabletDemo" */; @@ -149,6 +270,7 @@ projectRoot = ""; targets = ( DAB7EB261BEF787300D2AD5E /* TabletDemo */, + DAC2D5DB1C9D6433009E9C19 /* TabletTests */, ); }; /* End PBXProject section */ @@ -158,10 +280,17 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - DAB7EB351BEF787300D2AD5E /* LaunchScreen.storyboard in Resources */, + DAC2D5CF1C9D30A7009E9C19 /* Main.storyboard in Resources */, + DAC2D5D01C9D30A7009E9C19 /* LaunchScreen.storyboard in Resources */, DAF003981C14DC250028C3D6 /* MyNibTableViewCell.xib in Resources */, DAB7EB321BEF787300D2AD5E /* Assets.xcassets in Resources */, - DAB7EB301BEF787300D2AD5E /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DAC2D5DA1C9D6433009E9C19 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( ); runOnlyForDeploymentPostprocessing = 0; }; @@ -173,6 +302,7 @@ buildActionMask = 2147483647; files = ( 508B71841BF48DD300272920 /* TableSectionBuilder.swift in Sources */, + DAC2D5D41C9D3118009E9C19 /* MainViewController.swift in Sources */, DAB7EB2D1BEF787300D2AD5E /* ViewController.swift in Sources */, DAB7EB3E1BEF78A400D2AD5E /* Tablet.swift in Sources */, DAED08F11C14DE7E006C04D8 /* MyTableViewCell.swift in Sources */, @@ -180,31 +310,28 @@ 508B71861BF48E0D00272920 /* TableRowBuilder.swift in Sources */, DA1BCD0F1BF5472C00CC0479 /* TableDirector.swift in Sources */, DAB7EB401BEFD07E00D2AD5E /* ConfigurableTableViewCell.swift in Sources */, - DAB7EB2B1BEF787300D2AD5E /* AppDelegate.swift in Sources */, + DAC2D5CA1C9D303E009E9C19 /* AppDelegate.swift in Sources */, DA1BCD111BF7388C00CC0479 /* CustomTableActions.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; + DAC2D5D81C9D6433009E9C19 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DAC2D5E61C9D6493009E9C19 /* TabletTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXVariantGroup section */ - DAB7EB2E1BEF787300D2AD5E /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - DAB7EB2F1BEF787300D2AD5E /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; +/* Begin PBXTargetDependency section */ + DAC2D5E21C9D6433009E9C19 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DAB7EB261BEF787300D2AD5E /* TabletDemo */; + targetProxy = DAC2D5E11C9D6433009E9C19 /* PBXContainerItemProxy */; }; - DAB7EB331BEF787300D2AD5E /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - DAB7EB341BEF787300D2AD5E /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ +/* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ DAB7EB371BEF787300D2AD5E /* Debug */ = { @@ -297,7 +424,7 @@ INFOPLIST_FILE = TabletDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.tablet.TabletDemo; + PRODUCT_BUNDLE_IDENTIFIER = com.tablet.tablet; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; @@ -312,12 +439,38 @@ INFOPLIST_FILE = TabletDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.tablet.TabletDemo; + PRODUCT_BUNDLE_IDENTIFIER = com.tablet.tablet; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE = ""; }; name = Release; }; + DAC2D5E41C9D6433009E9C19 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + INFOPLIST_FILE = TabletTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.tablet.TabletTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TabletDemo.app/TabletDemo"; + }; + name = Debug; + }; + DAC2D5E51C9D6433009E9C19 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + INFOPLIST_FILE = TabletTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.tablet.TabletTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TabletDemo.app/TabletDemo"; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -339,6 +492,14 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + DAC2D5E31C9D6433009E9C19 /* Build configuration list for PBXNativeTarget "TabletTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DAC2D5E41C9D6433009E9C19 /* Debug */, + DAC2D5E51C9D6433009E9C19 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; /* End XCConfigurationList section */ }; rootObject = DAB7EB1F1BEF787300D2AD5E /* Project object */; diff --git a/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate b/TabletDemo/TabletDemo.xcodeproj/project.xcworkspace/xcuserdata/maxsokolov.xcuserdatad/UserInterfaceState.xcuserstate index 9bdfddebe6679c2a4fd4715cb930f586e2c35a35..c254aa2559d971f9777b313fbd4578375be47943 100644 GIT binary patch literal 89586 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 L%>TbK<&yscppm=@ delta 14781 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 B?fU=# diff --git a/TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/TabletDemo.xcscheme b/TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/TabletDemo.xcscheme index 6db4123..5b59ce8 100644 --- a/TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/TabletDemo.xcscheme +++ b/TabletDemo/TabletDemo.xcodeproj/xcuserdata/maxsokolov.xcuserdatad/xcschemes/TabletDemo.xcscheme @@ -28,6 +28,16 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES"> + + + + primary + DAC2D5DB1C9D6433009E9C19 + + primary + + diff --git a/TabletDemo/TabletDemo/ConfigurableTableViewCell.swift b/TabletDemo/TabletDemo/ConfigurableTableViewCell.swift index 3160b73..4887c0e 100644 --- a/TabletDemo/TabletDemo/ConfigurableTableViewCell.swift +++ b/TabletDemo/TabletDemo/ConfigurableTableViewCell.swift @@ -28,6 +28,7 @@ class ConfigurableTableViewCell: UITableViewCell, ConfigurableCell { func configureWithItem(item: Item) { + accessoryType = .DisclosureIndicator button.setTitle("Button \(item)", forState: .Normal) } diff --git a/TabletDemo/TabletDemo/ViewController.swift b/TabletDemo/TabletDemo/ViewController.swift index 805aad2..388260c 100644 --- a/TabletDemo/TabletDemo/ViewController.swift +++ b/TabletDemo/TabletDemo/ViewController.swift @@ -35,7 +35,7 @@ class ViewController: UIViewController, UIScrollViewDelegate { print("end display: \(data.indexPath)") } - + let configurableRowBuilder = TableConfigurableRowBuilder(items: ["5", "6", "7", "8"]) .action(.click) { data -> Void in diff --git a/Tests/Info.plist b/Tests/Info.plist new file mode 100644 index 0000000..ba72822 --- /dev/null +++ b/Tests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/Tests/TabletTests.swift b/Tests/TabletTests.swift new file mode 100644 index 0000000..30c6f5c --- /dev/null +++ b/Tests/TabletTests.swift @@ -0,0 +1,47 @@ +// +// TableDirectorTests.swift +// TabletDemo +// +// Created by Max Sokolov on 19/03/16. +// Copyright © 2016 Tablet. All rights reserved. +// + +import XCTest +import Tablet + +class TestController : UITableViewController { + + var tableDirector: TableDirector! + + override func viewDidLoad() { + super.viewDidLoad() + + tableDirector = TableDirector(tableView: tableView) + } +} + +class TabletTests: XCTestCase { + + var testController: TestController! + + override func setUp() { + super.setUp() + + testController = TestController() + } + + override func tearDown() { + + testController = nil + super.tearDown() + } + + func testTableDirectorHasTableView() { + + testController.view.hidden = false + + XCTAssertNotNil(testController.tableView) + XCTAssertNotNil(testController.tableDirector) + XCTAssertNotNil(testController.tableDirector.tableView) + } +} \ No newline at end of file