├── .gitignore ├── CHANGELOG.md ├── Readme.md ├── _config.yml ├── app ├── HelloOptimus.app │ ├── Base.lproj │ │ ├── LaunchScreen.storyboardc │ │ │ ├── 01J-lp-oVM-view-Ze5-6b-2t3.nib │ │ │ ├── Info.plist │ │ │ └── UIViewController-01J-lp-oVM.nib │ │ └── Main.storyboardc │ │ │ ├── BYZ-38-t0r-view-8bC-Xf-vdC.nib │ │ │ ├── Info.plist │ │ │ └── UIViewController-BYZ-38-t0r.nib │ ├── Frameworks │ │ ├── IDEBundleInjection.framework │ │ │ ├── IDEBundleInjection │ │ │ ├── Info.plist │ │ │ ├── _CodeSignature │ │ │ │ └── CodeResources │ │ │ └── version.plist │ │ ├── XCTest.framework │ │ │ ├── Headers │ │ │ │ ├── XCAbstractTest.h │ │ │ │ ├── XCTest.h │ │ │ │ ├── XCTestAssertions.h │ │ │ │ ├── XCTestAssertionsImpl.h │ │ │ │ ├── XCTestCase+AsynchronousTesting.h │ │ │ │ ├── XCTestCase.h │ │ │ │ ├── XCTestCaseRun.h │ │ │ │ ├── XCTestDefines.h │ │ │ │ ├── XCTestErrors.h │ │ │ │ ├── XCTestExpectation.h │ │ │ │ ├── XCTestLog.h │ │ │ │ ├── XCTestObservation.h │ │ │ │ ├── XCTestObservationCenter.h │ │ │ │ ├── XCTestObserver.h │ │ │ │ ├── XCTestProbe.h │ │ │ │ ├── XCTestRun.h │ │ │ │ ├── XCTestSuite.h │ │ │ │ ├── XCTestSuiteRun.h │ │ │ │ ├── XCUIApplication.h │ │ │ │ ├── XCUICoordinate.h │ │ │ │ ├── XCUIDevice.h │ │ │ │ ├── XCUIElement.h │ │ │ │ ├── XCUIElementAttributes.h │ │ │ │ ├── XCUIElementQuery.h │ │ │ │ ├── XCUIElementTypeQueryProvider.h │ │ │ │ ├── XCUIElementTypes.h │ │ │ │ ├── XCUIKeyboardKeys.h │ │ │ │ └── XCUIRemote.h │ │ │ ├── Info.plist │ │ │ ├── Modules │ │ │ │ └── module.modulemap │ │ │ ├── TextBasedStubs │ │ │ │ └── XCTest.tbd │ │ │ ├── XCTest │ │ │ ├── XCTest.tbd │ │ │ ├── XPCServices │ │ │ │ ├── XCUIRecorderService.xpc │ │ │ │ │ ├── Info.plist │ │ │ │ │ ├── XCUIRecorderService │ │ │ │ │ ├── _CodeSignature │ │ │ │ │ │ └── CodeResources │ │ │ │ │ └── version.plist │ │ │ │ └── xctestSymbolicator.xpc │ │ │ │ │ ├── Info.plist │ │ │ │ │ ├── _CodeSignature │ │ │ │ │ └── CodeResources │ │ │ │ │ ├── version.plist │ │ │ │ │ └── xctestSymbolicator │ │ │ ├── _CodeSignature │ │ │ │ └── CodeResources │ │ │ ├── en.lproj │ │ │ │ └── InfoPlist.strings │ │ │ └── version.plist │ │ ├── libswiftCore.dylib │ │ ├── libswiftCoreAudio.dylib │ │ ├── libswiftCoreGraphics.dylib │ │ ├── libswiftCoreImage.dylib │ │ ├── libswiftCoreMedia.dylib │ │ ├── libswiftDarwin.dylib │ │ ├── libswiftDispatch.dylib │ │ ├── libswiftFoundation.dylib │ │ ├── libswiftObjectiveC.dylib │ │ ├── libswiftUIKit.dylib │ │ └── libswiftos.dylib │ ├── HelloOptimus │ ├── Info.plist │ ├── PkgInfo │ ├── PlugIns │ │ └── HelloOptimusTests.xctest │ │ │ ├── Frameworks │ │ │ ├── libswiftCore.dylib │ │ │ ├── libswiftCoreAudio.dylib │ │ │ ├── libswiftCoreGraphics.dylib │ │ │ ├── libswiftCoreImage.dylib │ │ │ ├── libswiftCoreMedia.dylib │ │ │ ├── libswiftDarwin.dylib │ │ │ ├── libswiftDispatch.dylib │ │ │ ├── libswiftFoundation.dylib │ │ │ ├── libswiftObjectiveC.dylib │ │ │ ├── libswiftUIKit.dylib │ │ │ ├── libswiftXCTest.dylib │ │ │ └── libswiftos.dylib │ │ │ ├── HelloOptimusTests │ │ │ ├── Info.plist │ │ │ ├── _CodeSignature │ │ │ └── CodeResources │ │ │ └── libswiftRemoteMirror.dylib │ ├── _CodeSignature │ │ └── CodeResources │ └── libswiftRemoteMirror.dylib └── hellooptimus.apk ├── build.gradle ├── docs ├── AppiumServerCapabilities.png ├── CommonAttributes.png ├── CreateOptProject.png ├── HelloOptimus.png ├── HelloOptimus1.png ├── HelloOptimusIos.png ├── Optimus.png ├── eclipse │ ├── Step2.png │ ├── Step3.png │ ├── Step4.png │ ├── Step5.png │ ├── Step6.png │ ├── Step7.png │ ├── Step8.png │ └── step1.png └── intellij │ ├── Step1.png │ ├── Step10.png │ ├── Step2.png │ ├── Step3.png │ ├── Step4.png │ ├── Step5.png │ ├── Step6.png │ ├── Step7.png │ ├── Step8.png │ └── Step9.png ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── libs └── optimus-services-2.0.jar ├── optimusTemplate.iml └── src └── test ├── java ├── pages │ ├── BasePage.java │ └── HelloOptimusPage.java ├── steps │ ├── BaseSteps.java │ ├── GenericSteps.java │ ├── HelloOptimusSteps.java │ └── StartingSteps.java └── utils │ └── OptimusImpl.java └── resources ├── HelloOptimusAndroid.json ├── HelloOptimusIOS.json ├── META-INF └── Optimus.yaml ├── elements ├── HelloOptimus.xlsx └── HelloOptimus │ ├── CommonElements.elements │ ├── Home.elements │ └── Home.json └── features ├── HelloOptimusCustom.feature └── HelloOptimusGeneric.feature /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .gradle 3 | build 4 | out 5 | optimus.log 6 | dump.rdb 7 | .DS_Store 8 | 9 | 10 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | Optimus 3.0 (from 2.3.7-beta) 2 | =================================== 3 | 4 | Optimus 3.0 has one big feature release 5 | 6 | 7 | #### New features 8 | * Supports iOS parallelisation 9 | 10 | 11 | #### Fixes 12 | * Resolved appium log path issue on windows 13 | * Resolved issue when capabilities are passed as an array. 14 | 15 | CHANGES IN VERSION 2.3.3-Beta (from 2.2.1) 16 | =================================== 17 | 18 | Optimus 2.3.3-beta upgrades to latest version of underlying new features 19 | 20 | 21 | #### New features 22 | * Optimus-Services will handle all CRUD operations. This will help in writing to cloud 23 | * User can define their own db name or start services on multiple ports for handle multi app products. 24 | 25 | 26 | #### Fixes 27 | * Intents will cascade exception to steps revealing cause of failure in reports. 28 | * Fixed swipe and scroll to latest changes from cucumber. 29 | 30 | CHANGES IN VERSION 2.2.1 (from 2.2.0) 31 | =================================== 32 | 33 | Optimus 2.2.1 upgrades to latest version of underlying softwared plus a few bug fixes 34 | 35 | #### Appium JAVA client 36 | * udpated to version 5.0.4 37 | * implentation of swipe updated based on the latest java client 38 | 39 | #### Cucumber-jvm 40 | * updated to version 2.1.0 41 | * reporting updated wrt new cucumber implementation 42 | 43 | #### cucmber report plugin 44 | * update net.masterthought plugin version 3.11.0 45 | 46 | #### New features 47 | * No More mdb logs filling up your console 48 | * Introducing DevMode that would allow users to not reset the app everytime while developing test script 49 | * Can run any OS version, there is no constraint over it as long as it is supported by Appium 50 | * Intents - Can pass specific params to DataIntent 51 | * Stepdefs - Can override default explicit wait time 52 | 53 | 54 | #### Fixes 55 | * 17 - Cucumber reporter failed to embed screen capture to the final report 56 | * 14 - Android 8.0 SDK API 26 Failed to Execute 57 | -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | # Optimus Template [![npm version](https://badge.fury.io/js/optimus-cli.svg)](https://badge.fury.io/js/optimus-cli) [![Gitter chat](https://badges.gitter.im/optimus_support/optimus.png)](https://gitter.im/optimus_support/optimus) 2 | 3 | Optimus Template is the native framework for Optimus, designed to help you 4 | to get started with your tests in the swiftest time possible. Read more about Optimus on our [wiki](https://github.com/testvagrant/optimusTemplate/wiki), for videos watch [here](https://www.youtube.com/channel/UCy1OVZVChPLmnPySRhuaSrw) 5 | 6 | ### Pre-requisites 7 | * [HomeBrew](https://brew.sh/), [XCode 8.2 or above](https://developer.apple.com/xcode/) - Mac 8 | * [LinuxBrew](http://linuxbrew.sh/) - Linux 9 | * [Chocolatey](https://chocolatey.org/) - Windows 10 | 11 | 12 | 13 | ### Getting started with Optimus 14 | 15 | * **Step 1**: Install the optimus-cli utilty 16 | 17 | ``` 18 | npm install -g optimus-cli 19 | ``` 20 | 21 | * **Step 2**: Verify if your system is ready for using Optimus 22 | 23 | ``` 24 | $ optimus doctor 25 | ``` 26 | 27 | * **Step 3**: Install if `optimus doctor` reported any missing dependencies. 28 | 29 | ``` 30 | $ optimus setup 31 | ``` 32 | * **Step 4a**: (Only for macOS) Install Xcode manually from App store or via [Downloads page](https://developer.apple.com/download/) and move it to Applications. 33 | 34 | * **Step 4b**: (Only for macOS) If you have multiple versions of Xcode installed on your machine then use this command in your in terminal: 35 | `sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer` where `xcode` is the name of Xcode installed on your machine or the Xcode which you want to use with optimus. 36 | 37 | * **Step 5**: Configure Mongodb 38 | If you have installed mongodb using optimus doctor command. You will have to manually create /Data/db folder. 39 | 40 | Here is how you do it in terminal 41 | ``` 42 | sudo mkdir -p /data/db 43 | sudo chmod 777 /data/db 44 | ``` 45 | try running mongod command in your terminal now, mongo instance should be up and running on port 27017 46 | * **Step 6**: To create a new Optimus project. 47 | 48 | ``` 49 | $ optimus new 50 | ``` 51 | * **Step 7**: Once the project is created you can import the project into your favourite IDE. However we love [IntelliJ](https://github.com/testvagrant/optimusTemplate/wiki/Import-Optimus-Project---Intellij) though. 52 | 53 | ### Import Project 54 | * [IntelliJ](https://github.com/testvagrant/optimusTemplate/wiki/Import-Optimus-project-using-Intellij) 55 | * [Eclipse](https://github.com/testvagrant/optimusTemplate/wiki/Import-Optimus-project-using-Eclipse) 56 | 57 | 58 | ### Run 59 | 60 | Optimus runs your tests in parallel by default. Just connect the devices you need coverage on and choose between one of the following modes to trigger your test run 61 | 1. `Fragmentation` 62 | 2. `Distribution` 63 | 64 | Suppose you have 5 feature files in your project and 5 devices connected, now in 65 | `Fragmentation`: All 5 features will run on all 5 devices. 66 | ![](http://i.imgur.com/dGtTjEY.jpg)   67 | `Distributuion`: one feature will run on one device. 68 | ![](http://i.imgur.com/7AhgPzi.jpg) 69 | 70 | 71 | Your new OptimusTemplate project gets created with a sample test for an example app `HelloOptimus` you can run your project as shown below. 72 | 73 | #### Step 1: Connect devices(Android or IOs) or create an Android Emulator. 74 | #### Step 2: Open your favourite terminal and navigate to the project folder. 75 | #### Step 3: Check for Android Devices or Emulators by running 76 | gradle runFragmentation -DtestFeed=HelloOptimusAndroid -Dtags=@helloOptimus 77 | Note: You will see that HelloOptimus app is launched on all the connected Android Devices and emulators. 78 | #### Step 4: Check for IOS by running 79 | gradle runFragmentation -DtestFeed=HelloOptimusIOS -Dtags=@helloOptimus 80 | Note: You will see that HelloOptimus app is launched on a IPhone6 Simulator. 81 | 82 | ### First test 83 | With optimus you can create tests either by creating custom steps or by using [Generic Steps](https://github.com/testvagrant/optimusTemplate/wiki/Generic-Steps) or a mix of both. 84 | You can learn more about the test which ran on your devices by following our [Android Tutorial](https://github.com/testvagrant/optimusTemplate/wiki/My-First-Android-Test) or [IOS Tutorial](https://github.com/testvagrant/optimusTemplate/wiki/My-First-IOS-Test) 85 | 86 | ### Below are a few sample projects leveraging the power of Optimus framework 87 | * [Swiggy](https://github.com/testvagrant/optimus_SwiggyTests) 88 | * [Kik](https://github.com/testvagrant/optimus_KikTests) 89 | * [Paytm](https://github.com/testvagrant/optimus_PaytmTests) 90 | * [Scripbox](https://github.com/testvagrant/optimus_ScripboxTests) 91 | 92 | ### Contact 93 | Our [FAQ](https://github.com/testvagrant/optimusTemplate/wiki/FAQ) covers most of the common issues. In case the issue you are facing is not available, you can reach out to us at optimus@testvagrant.com 94 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /app/HelloOptimus.app/Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib -------------------------------------------------------------------------------- /app/HelloOptimus.app/Base.lproj/LaunchScreen.storyboardc/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Base.lproj/LaunchScreen.storyboardc/Info.plist -------------------------------------------------------------------------------- /app/HelloOptimus.app/Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib -------------------------------------------------------------------------------- /app/HelloOptimus.app/Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib -------------------------------------------------------------------------------- /app/HelloOptimus.app/Base.lproj/Main.storyboardc/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Base.lproj/Main.storyboardc/Info.plist -------------------------------------------------------------------------------- /app/HelloOptimus.app/Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/IDEBundleInjection.framework/IDEBundleInjection: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/IDEBundleInjection.framework/IDEBundleInjection -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/IDEBundleInjection.framework/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/IDEBundleInjection.framework/Info.plist -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/IDEBundleInjection.framework/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Info.plist 8 | 9 | /Y0bIJ33xXJIw7w6ZvW1julgwac= 10 | 11 | version.plist 12 | 13 | ANv/khqWESPV0lU5ItOnXBRevbM= 14 | 15 | 16 | files2 17 | 18 | version.plist 19 | 20 | ANv/khqWESPV0lU5ItOnXBRevbM= 21 | 22 | 23 | rules 24 | 25 | ^ 26 | 27 | ^.*\.lproj/ 28 | 29 | optional 30 | 31 | weight 32 | 1000 33 | 34 | ^.*\.lproj/locversion.plist$ 35 | 36 | omit 37 | 38 | weight 39 | 1100 40 | 41 | ^version.plist$ 42 | 43 | 44 | rules2 45 | 46 | .*\.dSYM($|/) 47 | 48 | weight 49 | 11 50 | 51 | ^ 52 | 53 | weight 54 | 20 55 | 56 | ^(.*/)?\.DS_Store$ 57 | 58 | omit 59 | 60 | weight 61 | 2000 62 | 63 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 64 | 65 | nested 66 | 67 | weight 68 | 10 69 | 70 | ^.* 71 | 72 | ^.*\.lproj/ 73 | 74 | optional 75 | 76 | weight 77 | 1000 78 | 79 | ^.*\.lproj/locversion.plist$ 80 | 81 | omit 82 | 83 | weight 84 | 1100 85 | 86 | ^Info\.plist$ 87 | 88 | omit 89 | 90 | weight 91 | 20 92 | 93 | ^PkgInfo$ 94 | 95 | omit 96 | 97 | weight 98 | 20 99 | 100 | ^[^/]+$ 101 | 102 | nested 103 | 104 | weight 105 | 10 106 | 107 | ^embedded\.provisionprofile$ 108 | 109 | weight 110 | 20 111 | 112 | ^version\.plist$ 113 | 114 | weight 115 | 20 116 | 117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/IDEBundleInjection.framework/version.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildAliasOf 6 | IDEBundleInjection 7 | BuildVersion 8 | 84 9 | CFBundleShortVersionString 10 | 5.0 11 | CFBundleVersion 12 | 11004 13 | ProjectName 14 | IDEBundleInjection_Sim 15 | SourceVersion 16 | 11004000000000000 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCAbstractTest.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | NS_ASSUME_NONNULL_BEGIN 35 | 36 | @class XCTestRun; 37 | 38 | /*! 39 | * @class XCTest 40 | * 41 | * An abstract base class for testing. XCTestCase and XCTestSuite extend XCTest to provide 42 | * for creating, managing, and executing tests. Most developers will not need to subclass 43 | * XCTest directly. 44 | */ 45 | @interface XCTest : NSObject { 46 | #ifndef __OBJC2__ 47 | @private 48 | id _internal; 49 | #endif 50 | } 51 | 52 | /*! 53 | * @property testCaseCount 54 | * Number of test cases. Must be overridden by subclasses. 55 | */ 56 | @property (readonly) NSUInteger testCaseCount; 57 | 58 | /*! 59 | * @property name 60 | * Test's name. Must be overridden by subclasses. 61 | */ 62 | @property (readonly, copy, nullable) NSString *name; 63 | 64 | /*! 65 | * @property testRunClass 66 | * The XCTestRun subclass that will be instantiated when the test is run to hold 67 | * the test's results. Must be overridden by subclasses. 68 | */ 69 | @property (readonly, nullable) Class testRunClass; 70 | 71 | /*! 72 | * @property testRun 73 | * The test run object that executed the test, an instance of testRunClass. If the test has not yet been run, this will be nil. 74 | */ 75 | @property (readonly, nullable) XCTestRun *testRun; 76 | 77 | /*! 78 | * @method -performTest: 79 | * The method through which tests are executed. Must be overridden by subclasses. 80 | */ 81 | - (void)performTest:(XCTestRun *)run; 82 | 83 | /*! 84 | * @method -runTest 85 | * Creates an instance of the testRunClass and passes it as a parameter to -performTest:. 86 | */ 87 | - (void)runTest; 88 | 89 | /*! 90 | * @method -setUp 91 | * Setup method called before the invocation of each test method in the class. 92 | */ 93 | - (void)setUp; 94 | 95 | /*! 96 | * @method -tearDown 97 | * Teardown method called after the invocation of each test method in the class. 98 | */ 99 | - (void)tearDown; 100 | 101 | @end 102 | 103 | NS_ASSUME_NONNULL_END 104 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCTest.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2016 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | #import 34 | 35 | #import 36 | #import 37 | #import 38 | #import 39 | #import 40 | #import 41 | #import 42 | #import 43 | #import 44 | #import 45 | #import 46 | #import 47 | #import 48 | #import 49 | #import 50 | 51 | #import 52 | #import 53 | #import 54 | #import 55 | #import 56 | #import 57 | #import 58 | #import 59 | #import 60 | #import 61 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCTestAssertions.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | /*! 35 | * @function XCTFail(...) 36 | * Generates a failure unconditionally. 37 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 38 | */ 39 | #define XCTFail(...) \ 40 | _XCTPrimitiveFail(self, __VA_ARGS__) 41 | 42 | /*! 43 | * @define XCTAssertNil(expression, ...) 44 | * Generates a failure when ((\a expression) != nil). 45 | * @param expression An expression of id type. 46 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 47 | */ 48 | #define XCTAssertNil(expression, ...) \ 49 | _XCTPrimitiveAssertNil(self, expression, @#expression, __VA_ARGS__) 50 | 51 | /*! 52 | * @define XCTAssertNotNil(expression, ...) 53 | * Generates a failure when ((\a expression) == nil). 54 | * @param expression An expression of id type. 55 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 56 | */ 57 | #define XCTAssertNotNil(expression, ...) \ 58 | _XCTPrimitiveAssertNotNil(self, expression, @#expression, __VA_ARGS__) 59 | 60 | /*! 61 | * @define XCTAssert(expression, ...) 62 | * Generates a failure when ((\a expression) == false). 63 | * @param expression An expression of boolean type. 64 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 65 | */ 66 | #define XCTAssert(expression, ...) \ 67 | _XCTPrimitiveAssertTrue(self, expression, @#expression, __VA_ARGS__) 68 | 69 | /*! 70 | * @define XCTAssertTrue(expression, ...) 71 | * Generates a failure when ((\a expression) == false). 72 | * @param expression An expression of boolean type. 73 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 74 | */ 75 | #define XCTAssertTrue(expression, ...) \ 76 | _XCTPrimitiveAssertTrue(self, expression, @#expression, __VA_ARGS__) 77 | 78 | /*! 79 | * @define XCTAssertFalse(expression, ...) 80 | * Generates a failure when ((\a expression) != false). 81 | * @param expression An expression of boolean type. 82 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 83 | */ 84 | #define XCTAssertFalse(expression, ...) \ 85 | _XCTPrimitiveAssertFalse(self, expression, @#expression, __VA_ARGS__) 86 | 87 | /*! 88 | * @define XCTAssertEqualObjects(expression1, expression2, ...) 89 | * Generates a failure when ((\a expression1) not equal to (\a expression2)). 90 | * @param expression1 An expression of id type. 91 | * @param expression2 An expression of id type. 92 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 93 | */ 94 | #define XCTAssertEqualObjects(expression1, expression2, ...) \ 95 | _XCTPrimitiveAssertEqualObjects(self, expression1, @#expression1, expression2, @#expression2, __VA_ARGS__) 96 | 97 | /*! 98 | * @define XCTAssertNotEqualObjects(expression1, expression2, ...) 99 | * Generates a failure when ((\a expression1) equal to (\a expression2)). 100 | * @param expression1 An expression of id type. 101 | * @param expression2 An expression of id type. 102 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 103 | */ 104 | #define XCTAssertNotEqualObjects(expression1, expression2, ...) \ 105 | _XCTPrimitiveAssertNotEqualObjects(self, expression1, @#expression1, expression2, @#expression2, __VA_ARGS__) 106 | 107 | /*! 108 | * @define XCTAssertEqual(expression1, expression2, ...) 109 | * Generates a failure when ((\a expression1) != (\a expression2)). 110 | * @param expression1 An expression of C scalar type. 111 | * @param expression2 An expression of C scalar type. 112 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 113 | */ 114 | #define XCTAssertEqual(expression1, expression2, ...) \ 115 | _XCTPrimitiveAssertEqual(self, expression1, @#expression1, expression2, @#expression2, __VA_ARGS__) 116 | 117 | /*! 118 | * @define XCTAssertNotEqual(expression1, expression2, ...) 119 | * Generates a failure when ((\a expression1) == (\a expression2)). 120 | * @param expression1 An expression of C scalar type. 121 | * @param expression2 An expression of C scalar type. 122 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 123 | */ 124 | #define XCTAssertNotEqual(expression1, expression2, ...) \ 125 | _XCTPrimitiveAssertNotEqual(self, expression1, @#expression1, expression2, @#expression2, __VA_ARGS__) 126 | 127 | /*! 128 | * @define XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, ...) 129 | * Generates a failure when (difference between (\a expression1) and (\a expression2) is > (\a accuracy))). 130 | * @param expression1 An expression of C scalar type. 131 | * @param expression2 An expression of C scalar type. 132 | * @param accuracy An expression of C scalar type describing the maximum difference between \a expression1 and \a expression2 for these values to be considered equal. 133 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 134 | */ 135 | #define XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, ...) \ 136 | _XCTPrimitiveAssertEqualWithAccuracy(self, expression1, @#expression1, expression2, @#expression2, accuracy, @#accuracy, __VA_ARGS__) 137 | 138 | /*! 139 | * @define XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, ...) 140 | * Generates a failure when (difference between (\a expression1) and (\a expression2) is <= (\a accuracy)). 141 | * @param expression1 An expression of C scalar type. 142 | * @param expression2 An expression of C scalar type. 143 | * @param accuracy An expression of C scalar type describing the maximum difference between \a expression1 and \a expression2 for these values to be considered equal. 144 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 145 | */ 146 | #define XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, ...) \ 147 | _XCTPrimitiveAssertNotEqualWithAccuracy(self, expression1, @#expression1, expression2, @#expression2, accuracy, @#accuracy, __VA_ARGS__) 148 | 149 | /*! 150 | * @define XCTAssertGreaterThan(expression1, expression2, ...) 151 | * Generates a failure when ((\a expression1) <= (\a expression2)). 152 | * @param expression1 An expression of C scalar type. 153 | * @param expression2 An expression of C scalar type. 154 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 155 | */ 156 | #define XCTAssertGreaterThan(expression1, expression2, ...) \ 157 | _XCTPrimitiveAssertGreaterThan(self, expression1, @#expression1, expression2, @#expression2, __VA_ARGS__) 158 | 159 | /*! 160 | * @define XCTAssertGreaterThanOrEqual(expression1, expression2, ...) 161 | * Generates a failure when ((\a expression1) < (\a expression2)). 162 | * @param expression1 An expression of C scalar type. 163 | * @param expression2 An expression of C scalar type. 164 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 165 | */ 166 | #define XCTAssertGreaterThanOrEqual(expression1, expression2, ...) \ 167 | _XCTPrimitiveAssertGreaterThanOrEqual(self, expression1, @#expression1, expression2, @#expression2, __VA_ARGS__) 168 | 169 | /*! 170 | * @define XCTAssertLessThan(expression1, expression2, ...) 171 | * Generates a failure when ((\a expression1) >= (\a expression2)). 172 | * @param expression1 An expression of C scalar type. 173 | * @param expression2 An expression of C scalar type. 174 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 175 | */ 176 | #define XCTAssertLessThan(expression1, expression2, ...) \ 177 | _XCTPrimitiveAssertLessThan(self, expression1, @#expression1, expression2, @#expression2, __VA_ARGS__) 178 | 179 | /*! 180 | * @define XCTAssertLessThanOrEqual(expression1, expression2, ...) 181 | * Generates a failure when ((\a expression1) > (\a expression2)). 182 | * @param expression1 An expression of C scalar type. 183 | * @param expression2 An expression of C scalar type. 184 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 185 | */ 186 | #define XCTAssertLessThanOrEqual(expression1, expression2, ...) \ 187 | _XCTPrimitiveAssertLessThanOrEqual(self, expression1, @#expression1, expression2, @#expression2, __VA_ARGS__) 188 | 189 | /*! 190 | * @define XCTAssertThrows(expression, ...) 191 | * Generates a failure when ((\a expression) does not throw). 192 | * @param expression An expression. 193 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 194 | */ 195 | #define XCTAssertThrows(expression, ...) \ 196 | _XCTPrimitiveAssertThrows(self, expression, @#expression, __VA_ARGS__) 197 | 198 | /*! 199 | * @define XCTAssertThrowsSpecific(expression, exception_class, ...) 200 | * Generates a failure when ((\a expression) does not throw \a exception_class). 201 | * @param expression An expression. 202 | * @param exception_class The class of the exception. Must be NSException, or a subclass of NSException. 203 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 204 | */ 205 | #define XCTAssertThrowsSpecific(expression, exception_class, ...) \ 206 | _XCTPrimitiveAssertThrowsSpecific(self, expression, @#expression, exception_class, __VA_ARGS__) 207 | 208 | /*! 209 | * @define XCTAssertThrowsSpecificNamed(expression, exception_class, exception_name, ...) 210 | * Generates a failure when ((\a expression) does not throw \a exception_class with \a exception_name). 211 | * @param expression An expression. 212 | * @param exception_class The class of the exception. Must be NSException, or a subclass of NSException. 213 | * @param exception_name The name of the exception. 214 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 215 | */ 216 | #define XCTAssertThrowsSpecificNamed(expression, exception_class, exception_name, ...) \ 217 | _XCTPrimitiveAssertThrowsSpecificNamed(self, expression, @#expression, exception_class, exception_name, __VA_ARGS__) 218 | 219 | /*! 220 | * @define XCTAssertNoThrow(expression, ...) 221 | * Generates a failure when ((\a expression) throws). 222 | * @param expression An expression. 223 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 224 | */ 225 | #define XCTAssertNoThrow(expression, ...) \ 226 | _XCTPrimitiveAssertNoThrow(self, expression, @#expression, __VA_ARGS__) 227 | 228 | /*! 229 | * @define XCTAssertNoThrowSpecific(expression, exception_class, ...) 230 | * Generates a failure when ((\a expression) throws \a exception_class). 231 | * @param expression An expression. 232 | * @param exception_class The class of the exception. Must be NSException, or a subclass of NSException. 233 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 234 | */ 235 | #define XCTAssertNoThrowSpecific(expression, exception_class, ...) \ 236 | _XCTPrimitiveAssertNoThrowSpecific(self, expression, @#expression, exception_class, __VA_ARGS__) 237 | 238 | /*! 239 | * @define XCTAssertNoThrowSpecificNamed(expression, exception_class, exception_name, ...) 240 | * Generates a failure when ((\a expression) throws \a exception_class with \a exception_name). 241 | * @param expression An expression. 242 | * @param exception_class The class of the exception. Must be NSException, or a subclass of NSException. 243 | * @param exception_name The name of the exception. 244 | * @param ... An optional supplementary description of the failure. A literal NSString, optionally with string format specifiers. This parameter can be completely omitted. 245 | */ 246 | #define XCTAssertNoThrowSpecificNamed(expression, exception_class, exception_name, ...) \ 247 | _XCTPrimitiveAssertNoThrowSpecificNamed(self, expression, @#expression, exception_class, exception_name, __VA_ARGS__) 248 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCTestCase+AsynchronousTesting.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014-2016 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | @class XCTestExpectation; 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | /*! 12 | * @category AsynchronousTesting 13 | * 14 | * @discussion 15 | * This category introduces support for asynchronous testing in XCTestCase. The mechanism 16 | * allows you to specify one or more "expectations" that will occur asynchronously 17 | * as a result of actions in the test. Once all expectations have been set, a "wait" 18 | * API is called that will block execution of subsequent test code until all expected 19 | * conditions have been fulfilled or a timeout occurs. 20 | */ 21 | @interface XCTestCase (AsynchronousTesting) 22 | 23 | /*! 24 | * @method -expectationWithDescription: 25 | * 26 | * @param description 27 | * This string will be displayed in the test log to help diagnose failures. 28 | * 29 | * @discussion 30 | * Creates and returns an expectation associated with the test case. 31 | */ 32 | - (XCTestExpectation *)expectationWithDescription:(NSString *)description; 33 | 34 | /*! 35 | * @typedef XCWaitCompletionHandler 36 | * A block to be invoked when a call to -waitForExpectationsWithTimeout:handler: times out or has 37 | * had all associated expectations fulfilled. 38 | * 39 | * @param error 40 | * If the wait timed out or a failure was raised while waiting, the error's code 41 | * will specify the type of failure. Otherwise error will be nil. 42 | */ 43 | typedef void (^XCWaitCompletionHandler)(NSError * __nullable error); 44 | 45 | /*! 46 | * @method -waitForExpectationsWithTimeout:handler: 47 | * 48 | * @param timeout 49 | * The amount of time within which all expectations must be fulfilled. 50 | * 51 | * @param handler 52 | * If provided, the handler will be invoked both on timeout or fulfillment of all 53 | * expectations. Timeout is always treated as a test failure. 54 | * 55 | * @discussion 56 | * -waitForExpectationsWithTimeout:handler: creates a point of synchronization in the flow of a 57 | * test. Only one -waitForExpectationsWithTimeout:handler: can be active at any given time, but 58 | * multiple discrete sequences of { expectations -> wait } can be chained together. 59 | * 60 | * -waitForExpectationsWithTimeout:handler: runs the run loop while handling events until all expectations 61 | * are fulfilled or the timeout is reached. Clients should not manipulate the run 62 | * loop while using this API. 63 | */ 64 | - (void)waitForExpectationsWithTimeout:(NSTimeInterval)timeout handler:(nullable XCWaitCompletionHandler)handler; 65 | 66 | #pragma mark Convenience APIs 67 | 68 | /*! 69 | * @method -keyValueObservingExpectationForObject:keyPath:expectedValue: 70 | * 71 | * @discussion 72 | * A convenience method for asynchronous tests that use Key Value Observing to detect changes 73 | * to values on an object. This variant takes an expected value and observes changes on the object 74 | * until the keyPath's value matches the expected value using -[NSObject isEqual:]. If 75 | * other comparisions are needed, use the variant below that takes a handler block. 76 | * 77 | * @param objectToObserve 78 | * The object to observe. 79 | * 80 | * @param keyPath 81 | * The key path to observe. 82 | * 83 | * @param expectedValue 84 | * Expected value of the keyPath for the object. The expectation will fulfill itself when the 85 | * keyPath is equal, as tested using -[NSObject isEqual:]. If nil, the expectation will be 86 | * fulfilled by the first change to the key path of the observed object. 87 | * 88 | * @return 89 | * Creates and returns an expectation associated with the test case. 90 | */ 91 | - (XCTestExpectation *)keyValueObservingExpectationForObject:(id)objectToObserve keyPath:(NSString *)keyPath expectedValue:(nullable id)expectedValue; 92 | 93 | /*! 94 | * @typedef 95 | * A block to be invoked when a change is observed for the keyPath of the observed object. 96 | * 97 | * @param observedObject 98 | * The observed object, provided to avoid block capture issues. 99 | * 100 | * @param change 101 | * The KVO change dictionary. 102 | * 103 | * @return 104 | * Return YES if the expectation is fulfilled, NO if it is not. 105 | */ 106 | typedef BOOL (^XCKeyValueObservingExpectationHandler)(id observedObject, NSDictionary *change); 107 | 108 | /*! 109 | * @method -keyValueObservingExpectationForObject:keyPath:handler: 110 | * 111 | * @discussion 112 | * Variant of the convenience for tests that use Key Value Observing. Takes a handler 113 | * block instead of an expected value. Every KVO change will run the handler block until 114 | * it returns YES (or the wait times out). Returning YES from the block will fulfill the 115 | * expectation. XCTAssert and related APIs can be used in the block to report a failure. 116 | * 117 | * @param objectToObserve 118 | * The object to observe. 119 | * 120 | * @param keyPath 121 | * The key path to observe. 122 | * 123 | * @param handler 124 | * Optional handler, /see XCKeyValueObservingExpectationHandler. If not provided, the expectation will 125 | * be fulfilled by the first change to the key path of the observed object. 126 | * 127 | * @return 128 | * Creates and returns an expectation associated with the test case. 129 | */ 130 | - (XCTestExpectation *)keyValueObservingExpectationForObject:(id)objectToObserve keyPath:(NSString *)keyPath handler:(nullable XCKeyValueObservingExpectationHandler)handler; 131 | 132 | /*! 133 | * @typedef 134 | * A block to be invoked when a notification matching the specified name is observed 135 | * from the object. 136 | * 137 | * @param notification 138 | * The notification object. 139 | * 140 | * @return 141 | * Return YES if the expectation is fulfilled, NO if it is not. 142 | */ 143 | typedef BOOL (^XCNotificationExpectationHandler)(NSNotification *notification); 144 | 145 | /*! 146 | * @method -expectationForNotification:object:handler: 147 | * 148 | * @discussion 149 | * A convenience method for asynchronous tests that observe NSNotifications. 150 | * 151 | * @param notificationName 152 | * The notification to register for. 153 | * 154 | * @param objectToObserve 155 | * The object to observe. 156 | * 157 | * @param handler 158 | * Optional handler, /see XCNotificationExpectationHandler. If not provided, the expectation 159 | * will be fulfilled by the first notification matching the specified name from the 160 | * observed object. 161 | * 162 | * @return 163 | * Creates and returns an expectation associated with the test case. 164 | */ 165 | - (XCTestExpectation *)expectationForNotification:(NSString *)notificationName object:(nullable id)objectToObserve handler:(nullable XCNotificationExpectationHandler)handler; 166 | 167 | /*! 168 | * @typedef 169 | * Handler called when evaluating the predicate against the object returns true. If the handler is not 170 | * provided the first successful evaluation will fulfill the expectation. If provided, the handler can 171 | * override that behavior which leaves the caller responsible for fulfilling the expectation. 172 | */ 173 | typedef BOOL (^XCPredicateExpectationHandler)(); 174 | 175 | /*! 176 | * @method -expectationForPredicate:evaluatedWithObject:handler: 177 | * Creates an expectation that is fulfilled if the predicate returns true when evaluated with the given 178 | * object. The expectation periodically evaluates the predicate and also may use notifications or other 179 | * events to optimistically re-evaluate. 180 | */ 181 | - (XCTestExpectation *)expectationForPredicate:(NSPredicate *)predicate evaluatedWithObject:(id)object handler:(nullable XCPredicateExpectationHandler)handler; 182 | 183 | @end 184 | 185 | NS_ASSUME_NONNULL_END 186 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCTestCase.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | #import 34 | 35 | NS_ASSUME_NONNULL_BEGIN 36 | 37 | @class XCTestSuite; 38 | @class XCTestCaseRun; 39 | 40 | #if XCT_UI_TESTING_AVAILABLE 41 | @class XCUIElement; 42 | #endif 43 | 44 | /*! 45 | * @class XCTestCase 46 | * XCTestCase is a concrete subclass of XCTest that should be the override point for 47 | * most developers creating tests for their projects. A test case subclass can have 48 | * multiple test methods and supports setup and tear down that executes for every test 49 | * method as well as class level setup and tear down. 50 | * 51 | * To define a test case: 52 | * 53 | * • Create a subclass of XCTestCase. 54 | * • Implement -test methods. 55 | * • Optionally define instance variables or properties that store the state of the test. 56 | * • Optionally initialize state by overriding -setUp 57 | * • Optionally clean-up after a test by overriding -tearDown. 58 | * 59 | * Test methods are instance methods meeting these requirements: 60 | * • accepting no parameters 61 | * • returning no value 62 | * • prefixed with 'test' 63 | * 64 | * For example: 65 | 66 | - (void)testSomething; 67 | 68 | * Test methods are automatically recognized as test cases by the XCTest framework. 69 | * Each XCTestCase subclass's defaultTestSuite is a XCTestSuite which includes these 70 | * tests. Test method implementations usually contain assertions that must be verified 71 | * for the test to pass, for example: 72 | 73 | @interface MathTest : XCTestCase { 74 | @private 75 | float f1; 76 | float f2; 77 | } 78 | 79 | - (void)testAddition; 80 | 81 | @end 82 | 83 | @implementation MathTest 84 | 85 | - (void)setUp 86 | { 87 | f1 = 2.0; 88 | f2 = 3.0; 89 | } 90 | 91 | - (void)testAddition 92 | { 93 | XCTAssertTrue (f1 + f2 == 5.0); 94 | } 95 | @end 96 | */ 97 | @interface XCTestCase : XCTest { 98 | #ifndef __OBJC2__ 99 | @private 100 | id _internalImplementation; 101 | #endif 102 | } 103 | 104 | /*! 105 | * @method +testCaseWithInvocation: 106 | */ 107 | + (instancetype)testCaseWithInvocation:(nullable NSInvocation *)invocation; 108 | 109 | /*! 110 | * @method -initWithInvocation: 111 | */ 112 | - (instancetype)initWithInvocation:(nullable NSInvocation *)invocation; 113 | 114 | /*! 115 | * @method +testCaseWithSelector: 116 | */ 117 | + (nullable instancetype)testCaseWithSelector:(SEL)selector; 118 | 119 | /*! 120 | * @method -initWithSelector: 121 | */ 122 | - (instancetype)initWithSelector:(SEL)selector; 123 | 124 | /*! 125 | * @property invocation 126 | * The invocation used when this test is run. 127 | */ 128 | @property (strong, nullable) NSInvocation *invocation; 129 | 130 | /*! 131 | * @method -invokeTest 132 | * Invoking a test performs its setUp, invocation, and tearDown. In general this 133 | * should not be called directly. 134 | */ 135 | - (void)invokeTest; 136 | 137 | /*! 138 | * @property continueAfterFailure 139 | * The test case behavior after a failure. Defaults to YES. 140 | */ 141 | @property BOOL continueAfterFailure; 142 | 143 | /*! 144 | * @method -recordFailureWithDescription:inFile:atLine:expected: 145 | * Records a failure in the execution of the test and is used by all test assertions. 146 | * 147 | * @param description The description of the failure being reported. 148 | * 149 | * @param filePath The file path to the source file where the failure being reported 150 | * was encountered. 151 | * 152 | * @param lineNumber The line number in the source file at filePath where the 153 | * failure being reported was encountered. 154 | * 155 | * @param expected YES if the failure being reported was the result of a failed assertion, 156 | * NO if it was the result of an uncaught exception. 157 | * 158 | */ 159 | - (void)recordFailureWithDescription:(NSString *)description inFile:(NSString *)filePath atLine:(NSUInteger)lineNumber expected:(BOOL)expected; 160 | 161 | /*! 162 | * @method +testInvocations 163 | * Invocations for each test method in the test case. 164 | */ 165 | + (NSArray *)testInvocations; 166 | 167 | #pragma mark - Measuring Performance Metrics 168 | 169 | /*! 170 | * @const XCTPerformanceMetric_WallClockTime 171 | * Records wall clock time in seconds between startMeasuring/stopMeasuring. 172 | */ 173 | XCT_EXPORT NSString * const XCTPerformanceMetric_WallClockTime; 174 | 175 | /*! 176 | * @method +defaultPerformanceMetrics 177 | * The names of the performance metrics to measure when invoking -measureBlock:. Returns XCTPerformanceMetric_WallClockTime by default. Subclasses can override this to change the behavior of -measureBlock: 178 | */ 179 | + (NSArray *)defaultPerformanceMetrics; 180 | 181 | /*! 182 | * @method -measureBlock: 183 | * 184 | * Call from a test method to measure resources (+defaultPerformanceMetrics) used by the 185 | * block in the current process. 186 | 187 | - (void)testPerformanceOfMyFunction { 188 | 189 | [self measureBlock:^{ 190 | // Do that thing you want to measure. 191 | MyFunction(); 192 | }]; 193 | } 194 | 195 | * @param block A block whose performance to measure. 196 | */ 197 | - (void)measureBlock:(void (^)(void))block; 198 | 199 | /*! 200 | * @method -measureMetrics:automaticallyStartMeasuring:forBlock: 201 | * 202 | * Call from a test method to measure resources (XCTPerformanceMetrics) used by the 203 | * block in the current process. Each metric will be measured across calls to the block. 204 | * The number of times the block will be called is undefined and may change in the 205 | * future. For one example of why, as long as the requested performance metrics do 206 | * not interfere with each other the API will measure all metrics across the same 207 | * calls to the block. If the performance metrics may interfere the API will measure 208 | * them separately. 209 | 210 | - (void)testMyFunction2_WallClockTime { 211 | [self measureMetrics:[[self class] defaultPerformanceMetrics] automaticallyStartMeasuring:NO forBlock:^{ 212 | 213 | // Do setup work that needs to be done for every iteration but you don't want to measure before the call to -startMeasuring 214 | SetupSomething(); 215 | [self startMeasuring]; 216 | 217 | // Do that thing you want to measure. 218 | MyFunction(); 219 | [self stopMeasuring]; 220 | 221 | // Do teardown work that needs to be done for every iteration but you don't want to measure after the call to -stopMeasuring 222 | TeardownSomething(); 223 | }]; 224 | } 225 | 226 | * Caveats: 227 | * • If YES was passed for automaticallyStartMeasuring and -startMeasuring is called 228 | * anyway, the test will fail. 229 | * • If NO was passed for automaticallyStartMeasuring then -startMeasuring must be 230 | * called once and only once before the end of the block or the test will fail. 231 | * • If -stopMeasuring is called multiple times during the block the test will fail. 232 | * 233 | * @param metrics An array of NSStrings (XCTPerformanceMetrics) to measure. Providing an unrecognized string is a test failure. 234 | * 235 | * @param automaticallyStartMeasuring If NO, XCTestCase will not take any measurements until -startMeasuring is called. 236 | * 237 | * @param block A block whose performance to measure. 238 | */ 239 | - (void)measureMetrics:(NSArray *)metrics automaticallyStartMeasuring:(BOOL)automaticallyStartMeasuring forBlock:(void (^)(void))block; 240 | 241 | /*! 242 | * @method -startMeasuring 243 | * Call this from within a measure block to set the beginning of the critical section. 244 | * Measurement of metrics will start at this point. 245 | */ 246 | - (void)startMeasuring; 247 | 248 | /*! 249 | * @method -stopMeasuring 250 | * Call this from within a measure block to set the ending of the critical section. 251 | * Measurement of metrics will stop at this point. 252 | */ 253 | - (void)stopMeasuring; 254 | 255 | #pragma mark - UI Testing Support 256 | #if XCT_UI_TESTING_AVAILABLE 257 | 258 | /*! Adds a handler to the current context. Returns a token that can be used to unregister the handler. Handlers are invoked in the reverse order in which they are added until one of the handlers returns true, indicating that it has handled the alert. 259 | @param handlerDescription Explanation of the behavior and purpose of this handler, mainly used for debugging and analysis. 260 | @param handler Handler block for asynchronous UI such as alerts and other dialogs. Handlers should return true if they handled the UI, false if they did not. The handler is passed an XCUIElement representing the top level UI element for the alert. 261 | */ 262 | - (id )addUIInterruptionMonitorWithDescription:(NSString *)handlerDescription handler:(BOOL (^)(XCUIElement *interruptingElement))handler; 263 | 264 | /*! Removes a handler using the token provided when it was added. */ 265 | - (void)removeUIInterruptionMonitor:(id )monitor; 266 | 267 | #endif 268 | 269 | @end 270 | 271 | @interface XCTestCase (XCTestSuiteExtensions) 272 | 273 | /*! 274 | * @method +defaultTestSuite 275 | * Returns a test suite containing test cases for all of the tests in the class. 276 | */ 277 | + (XCTestSuite *)defaultTestSuite; 278 | 279 | /*! 280 | * @method +setUp 281 | * Setup method called before the invocation of any test method in the class. 282 | */ 283 | + (void)setUp; 284 | 285 | /*! 286 | * @method +testDown 287 | * Teardown method called after the invocation of every test method in the class. 288 | */ 289 | + (void)tearDown; 290 | 291 | @end 292 | 293 | NS_ASSUME_NONNULL_END 294 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCTestCaseRun.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | NS_ASSUME_NONNULL_BEGIN 35 | 36 | @class XCTestCase; 37 | 38 | @interface XCTestCaseRun : XCTestRun 39 | 40 | - (void)recordFailureInTest:(XCTestCase *)testCase withDescription:(NSString *)description inFile:(NSString *)filePath atLine:(NSUInteger)lineNumber expected:(BOOL)expected DEPRECATED_ATTRIBUTE; 41 | 42 | @end 43 | 44 | NS_ASSUME_NONNULL_END 45 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCTestDefines.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | #if defined(__cplusplus) 35 | #define XCT_EXPORT extern "C" 36 | #else 37 | #define XCT_EXPORT extern 38 | #endif 39 | 40 | #if (!defined(__OBJC_GC__) || (defined(__OBJC_GC__) && ! __OBJC_GC__)) && (defined(__OBJC2__) && __OBJC2__) 41 | #ifndef XCT_UI_TESTING_AVAILABLE 42 | #define XCT_UI_TESTING_AVAILABLE 1 43 | #endif 44 | #endif 45 | 46 | #ifndef XCT_UI_TESTING_AVAILABLE 47 | #define XCT_UI_TESTING_AVAILABLE 0 48 | #endif 49 | 50 | #if TARGET_OS_SIMULATOR 51 | #define XCTEST_SIMULATOR_UNAVAILABLE(_msg) __attribute__((availability(ios,unavailable,message=_msg))) 52 | #else 53 | #define XCTEST_SIMULATOR_UNAVAILABLE(_msg) 54 | #endif 55 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCTestErrors.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014-2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | /*! 8 | * @const XCTestErrorDomain 9 | * Domain for errors provided by the XCTest framework. 10 | */ 11 | XCT_EXPORT NSString *const XCTestErrorDomain; 12 | 13 | /*! 14 | * @typedef XCTestErrorCode 15 | * Error codes used with errors in the XCTestErrorDomain. 16 | * 17 | * @constant XCTestErrorCodeTimeoutWhileWaiting Indicates that a call to -waitForExpectationsWithTimeout:handler: timed out. 18 | * @constant XCTestErrorCodeFailureWhileWaiting Indicates that a failure assertion was raised while waiting in -waitForExpectationsWithTimeout:handler:. 19 | */ 20 | typedef NS_ENUM(NSInteger, XCTestErrorCode) { 21 | XCTestErrorCodeTimeoutWhileWaiting, 22 | XCTestErrorCodeFailureWhileWaiting, 23 | }; 24 | 25 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCTestExpectation.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2016 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | NS_ASSUME_NONNULL_BEGIN 8 | 9 | /*! 10 | * @class XCTestExpectation 11 | * 12 | * @discussion 13 | * Expectations represent specific conditions in asynchronous testing. 14 | */ 15 | @interface XCTestExpectation : NSObject { 16 | #ifndef __OBJC2__ 17 | id _internalImplementation; 18 | #endif 19 | } 20 | 21 | /*! 22 | * @method -fulfill 23 | * 24 | * @discussion 25 | * Call -fulfill to mark an expectation as having been met. It's an error to call 26 | * -fulfill on an expectation that has already been fulfilled or when the test case 27 | * that vended the expectation has already completed. 28 | */ 29 | - (void)fulfill; 30 | 31 | @end 32 | 33 | NS_ASSUME_NONNULL_END 34 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCTestLog.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | /*! 35 | * XCTestLog is deprecated. 36 | */ 37 | 38 | DEPRECATED_ATTRIBUTE 39 | #pragma clang diagnostic push 40 | #pragma clang diagnostic ignored "-Wdeprecated-declarations" 41 | @interface XCTestLog : XCTestObserver 42 | #pragma clang diagnostic pop 43 | 44 | @property (readonly, strong) NSFileHandle *logFileHandle; 45 | - (void)testLogWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2); 46 | - (void)testLogWithFormat:(NSString *)format arguments:(va_list)arguments NS_FORMAT_FUNCTION(1,0); 47 | 48 | @end 49 | 50 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCTestObservation.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014-2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | NS_ASSUME_NONNULL_BEGIN 8 | 9 | @class XCTestSuite, XCTestCase; 10 | 11 | /*! 12 | * @protocol XCTestObservation 13 | * 14 | * Objects conforming to XCTestObservation can register to be notified of the progress of test runs. See XCTestObservationCenter 15 | * for details on registration. 16 | * 17 | * Progress events are delivered in the following sequence: 18 | * 19 | * -testBundleWillStart: // exactly once per test bundle 20 | * -testSuiteWillStart: // exactly once per test suite 21 | * -testCaseWillStart: // exactly once per test case 22 | * -testCase:didFailWithDescription:... // zero or more times per test case, any time between test case start and finish 23 | * -testCaseDidFinish: // exactly once per test case 24 | * -testSuite:didFailWithDescription:... // zero or more times per test suite, any time between test suite start and finish 25 | * -testSuiteDidFinish: // exactly once per test suite 26 | * -testBundleDidFinish: // exactly once per test bundle 27 | */ 28 | @protocol XCTestObservation 29 | @optional 30 | 31 | /*! 32 | * @method -testBundleWillStart: 33 | * 34 | * Sent immediately before tests begin as a hook for any pre-testing setup. 35 | * 36 | * @param testBundle The bundle containing the tests that were executed. 37 | */ 38 | - (void)testBundleWillStart:(NSBundle *)testBundle; 39 | 40 | /*! 41 | * @method -testBundleDidFinish: 42 | * 43 | * Sent immediately after all tests have finished as a hook for any post-testing activity. The test process will generally 44 | * exit after this method returns, so if there is long running and/or asynchronous work to be done after testing, be sure 45 | * to implement this method in a way that it blocks until all such activity is complete. 46 | * 47 | * @param testBundle The bundle containing the tests that were executed. 48 | */ 49 | - (void)testBundleDidFinish:(NSBundle *)testBundle; 50 | 51 | /*! 52 | * @method -testSuiteWillStart: 53 | * 54 | * Sent when a test suite starts executing. 55 | * 56 | * @param testSuite The test suite that started. Additional information can be retrieved from the associated XCTestRun. 57 | */ 58 | - (void)testSuiteWillStart:(XCTestSuite *)testSuite; 59 | 60 | /*! 61 | * @method -testSuiteDidFail:withDescription:inFile:atLine: 62 | * 63 | * Sent when a test suite reports a failure. Suite failures are most commonly reported during suite-level setup and teardown 64 | * whereas failures during tests are reported for the test case alone and are not reported as suite failures. 65 | * 66 | * @param testSuite The test suite that failed. Additional information can be retrieved from the associated XCTestRun. 67 | * @param description A textual description of the failure. 68 | * @param filePath The path of file where the failure occurred, nil if unknown. 69 | * @param lineNumber The line where the failure was reported. 70 | */ 71 | - (void)testSuite:(XCTestSuite *)testSuite didFailWithDescription:(NSString *)description inFile:(nullable NSString *)filePath atLine:(NSUInteger)lineNumber; 72 | 73 | /*! 74 | * @method -testSuiteDidFinish: 75 | * 76 | * Sent when a test suite finishes executing. 77 | * 78 | * @param testSuite The test suite that finished. Additional information can be retrieved from the associated XCTestRun. 79 | */ 80 | - (void)testSuiteDidFinish:(XCTestSuite *)testSuite; 81 | 82 | /*! 83 | * @method -testCaseWillStart: 84 | * 85 | * Sent when a test case starts executing. 86 | * 87 | * @param testCase The test case that started. Additional information can be retrieved from the associated XCTestRun. 88 | */ 89 | - (void)testCaseWillStart:(XCTestCase *)testCase; 90 | 91 | /*! 92 | * @method -testCaseDidFail:withDescription:inFile:atLine: 93 | * 94 | * Sent when a test case reports a failure. 95 | * 96 | * @param testCase The test case that failed. Additional information can be retrieved from the associated XCTestRun. 97 | * @param description A textual description of the failure. 98 | * @param filePath The path of file where the failure occurred, nil if unknown. 99 | * @param lineNumber The line where the failure was reported. 100 | */ 101 | - (void)testCase:(XCTestCase *)testCase didFailWithDescription:(NSString *)description inFile:(nullable NSString *)filePath atLine:(NSUInteger)lineNumber; 102 | 103 | /*! 104 | * @method -testCaseDidFinish: 105 | * 106 | * Sent when a test case finishes executing. 107 | * 108 | * @param testCase The test case that finished. Additional information can be retrieved from the associated XCTestRun. 109 | */ 110 | - (void)testCaseDidFinish:(XCTestCase *)testCase; 111 | 112 | @end 113 | 114 | NS_ASSUME_NONNULL_END 115 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCTestObservationCenter.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | #import 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | /*! 12 | * @class XCTestObservationCenter 13 | * 14 | * The XCTestObservationCenter distributes information about the progress of test runs to registered 15 | * observers. Observers can be any object conforming to the XCTestObservation protocol. 16 | * 17 | * If an NSPrincipalClass is declared in the test bundle's Info.plist, XCTest automatically creates a 18 | * single instance of that class when the test bundle is loaded. This instance provides a means to register 19 | * observers or do other pretesting global set up. 20 | * 21 | * Observers must be registered manually. The NSPrincipalClass instance is not automatically 22 | * registered as an observer even if the class conforms to . 23 | */ 24 | @interface XCTestObservationCenter : NSObject { 25 | #ifndef __OBJC2__ 26 | @private 27 | id _internalImplementation; 28 | #endif 29 | } 30 | 31 | /*! 32 | * @method +sharedTestObservationCenter 33 | * 34 | * @return The shared XCTestObservationCenter singleton instance. 35 | */ 36 | + (XCTestObservationCenter *)sharedTestObservationCenter; 37 | 38 | /*! 39 | * @method -addTestObserver: 40 | * 41 | * Register an object conforming to XCTestObservation as an observer for the current test session. Observers may be added 42 | * at any time, but will not receive events that occurred before they were registered. The observation center maintains a strong 43 | * reference to observers. 44 | * 45 | * Events may be delivered to observers in any order - given observers A and B, A may be notified of a test failure before 46 | * or after B. Any ordering dependencies or serialization requirements must be managed by clients. 47 | */ 48 | - (void)addTestObserver:(id )testObserver; 49 | 50 | /*! 51 | * @method -removeTestObserver: 52 | * 53 | * Unregister an object conforming to XCTestObservation as an observer for the current test session. 54 | */ 55 | - (void)removeTestObserver:(id )testObserver; 56 | 57 | @end 58 | 59 | NS_ASSUME_NONNULL_END 60 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCTestObserver.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | @class XCTestRun; 35 | 36 | /*! 37 | * XCTestObserver is deprecated. 38 | */ 39 | DEPRECATED_ATTRIBUTE 40 | @interface XCTestObserver : NSObject 41 | 42 | - (void)startObserving; 43 | - (void)stopObserving; 44 | - (void)testSuiteDidStart:(XCTestRun *)testRun; 45 | - (void)testSuiteDidStop:(XCTestRun *)testRun; 46 | - (void)testCaseDidStart:(XCTestRun *)testRun; 47 | - (void)testCaseDidStop:(XCTestRun *)testRun; 48 | - (void)testCaseDidFail:(XCTestRun *)testRun withDescription:(NSString *)description inFile:(NSString *)filePath atLine:(NSUInteger)lineNumber; 49 | 50 | @end 51 | 52 | /*! 53 | * XCTestObserverClassKey is deprecated and ignored. 54 | */ 55 | XCT_EXPORT NSString * const XCTestObserverClassKey DEPRECATED_ATTRIBUTE; 56 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCTestProbe.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | #import 35 | 36 | XCT_EXPORT int XCTSelfTestMain(void) DEPRECATED_ATTRIBUTE; 37 | 38 | DEPRECATED_ATTRIBUTE 39 | @interface XCTestProbe : NSObject 40 | 41 | + (BOOL)isTesting; 42 | 43 | @end 44 | 45 | XCT_EXPORT NSString * const XCTestedUnitPath DEPRECATED_ATTRIBUTE; 46 | XCT_EXPORT NSString * const XCTestScopeKey DEPRECATED_ATTRIBUTE; 47 | XCT_EXPORT NSString * const XCTestScopeAll DEPRECATED_ATTRIBUTE; 48 | XCT_EXPORT NSString * const XCTestScopeNone DEPRECATED_ATTRIBUTE; 49 | XCT_EXPORT NSString * const XCTestScopeSelf DEPRECATED_ATTRIBUTE; 50 | XCT_EXPORT NSString * const XCTestToolKey DEPRECATED_ATTRIBUTE; 51 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCTestRun.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | NS_ASSUME_NONNULL_BEGIN 35 | 36 | /*! 37 | * @class XCTestRun 38 | * A test run collects information about the execution of a test. Failures in explicit 39 | * test assertions are classified as "expected", while failures from unrelated or 40 | * uncaught exceptions are classified as "unexpected". 41 | */ 42 | @interface XCTestRun : NSObject { 43 | #ifndef __OBJC2__ 44 | @private 45 | id _internalTestRun; 46 | #endif 47 | } 48 | 49 | /*! 50 | * @method +testRunWithTest: 51 | * Class factory method for the XCTestRun class. 52 | * 53 | * @param test An XCTest instance. 54 | * 55 | * @return A test run for the provided test. 56 | */ 57 | + (instancetype)testRunWithTest:(XCTest *)test; 58 | 59 | /*! 60 | * @method -initWithTest: 61 | * Designated initializer for the XCTestRun class. 62 | * 63 | * @param test An XCTest instance. 64 | * 65 | * @return A test run for the provided test. 66 | */ 67 | - (instancetype)initWithTest:(XCTest *)test NS_DESIGNATED_INITIALIZER; 68 | 69 | /*! 70 | * @property test 71 | * The test instance provided when the test run was initialized. 72 | */ 73 | @property (readonly, strong) XCTest *test; 74 | 75 | /*! 76 | * @method -start 77 | * Start a test run. Must not be called more than once. 78 | */ 79 | - (void)start; 80 | 81 | /*! 82 | * @method -stop 83 | * Stop a test run. Must not be called unless the run has been started. Must not be called more than once. 84 | */ 85 | - (void)stop; 86 | 87 | /*! 88 | * @property startDate 89 | * The time at which the test run was started, or nil. 90 | */ 91 | @property (readonly, copy, nullable) NSDate *startDate; 92 | 93 | /*! 94 | * @property stopDate 95 | * The time at which the test run was stopped, or nil. 96 | */ 97 | @property (readonly, copy, nullable) NSDate *stopDate; 98 | 99 | /*! 100 | * @property totalDuration 101 | * The number of seconds that elapsed between when the run was started and when it was stopped. 102 | */ 103 | @property (readonly) NSTimeInterval totalDuration; 104 | 105 | /*! 106 | * @property testDuration 107 | * The number of seconds that elapsed between when the run was started and when it was stopped. 108 | */ 109 | @property (readonly) NSTimeInterval testDuration; 110 | 111 | /*! 112 | * @property testCaseCount 113 | * The number of tests in the run. 114 | */ 115 | @property (readonly) NSUInteger testCaseCount; 116 | 117 | /*! 118 | * @property executionCount 119 | * The number of test executions recorded during the run. 120 | */ 121 | @property (readonly) NSUInteger executionCount; 122 | 123 | /*! 124 | * @property failureCount 125 | * The number of test failures recorded during the run. 126 | */ 127 | @property (readonly) NSUInteger failureCount; 128 | 129 | /*! 130 | * @property unexpectedExceptionCount 131 | * The number of uncaught exceptions recorded during the run. 132 | */ 133 | @property (readonly) NSUInteger unexpectedExceptionCount; 134 | 135 | /*! 136 | * @property totalFailureCount 137 | * The total number of test failures and uncaught exceptions recorded during the run. 138 | */ 139 | @property (readonly) NSUInteger totalFailureCount; 140 | 141 | /*! 142 | * @property hasSucceeded 143 | * YES if all tests in the run completed their execution without recording any failures, otherwise NO. 144 | */ 145 | @property (readonly) BOOL hasSucceeded; 146 | 147 | /*! 148 | * @method -recordFailureWithDescription:inFile:atLine:expected: 149 | * Records a failure in the execution of the test for this test run. Must not be called 150 | * unless the run has been started. Must not be called if the test run has been stopped. 151 | * 152 | * @param description The description of the failure being reported. 153 | * 154 | * @param filePath The file path to the source file where the failure being reported 155 | * was encountered or nil if unknown. 156 | * 157 | * @param lineNumber The line number in the source file at filePath where the 158 | * failure being reported was encountered. 159 | * 160 | * @param expected YES if the failure being reported was the result of a failed assertion, 161 | * NO if it was the result of an uncaught exception. 162 | * 163 | */ 164 | - (void)recordFailureWithDescription:(NSString *)description inFile:(nullable NSString *)filePath atLine:(NSUInteger)lineNumber expected:(BOOL)expected; 165 | 166 | @end 167 | 168 | NS_ASSUME_NONNULL_END 169 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCTestSuite.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | NS_ASSUME_NONNULL_BEGIN 35 | 36 | /*! 37 | * @class XCTestSuite 38 | * A concrete subclass of XCTest, XCTestSuite is a collection of test cases. Suites 39 | * are usually managed by the IDE, but XCTestSuite also provides API for dynamic test 40 | * and suite management: 41 | 42 | XCTestSuite *suite = [XCTestSuite testSuiteWithName:@"My tests"]; 43 | [suite addTest:[MathTest testCaseWithSelector:@selector(testAdd)]]; 44 | [suite addTest:[MathTest testCaseWithSelector:@selector(testDivideByZero)]]; 45 | 46 | * Alternatively, a test suite can extract the tests to be run automatically. To do so, 47 | * pass the class of your test case class to the suite's constructor: 48 | 49 | XCTestSuite *suite = [XCTestSuite testSuiteForTestCaseClass:[MathTest class]]; 50 | 51 | * This creates a suite with all the methods starting with "test" that take no arguments. 52 | * Also, a test suite of all the test cases found in the runtime can be created automatically: 53 | 54 | XCTestSuite *suite = [XCTestSuite defaultTestSuite]; 55 | 56 | * This creates a suite of suites with all the XCTestCase subclasses methods that start 57 | * with "test" and take no arguments. 58 | */ 59 | @interface XCTestSuite : XCTest { 60 | #ifndef __OBJC2__ 61 | @private 62 | id _internalImplementation; 63 | #endif 64 | } 65 | 66 | + (instancetype)defaultTestSuite; 67 | + (instancetype)testSuiteForBundlePath:(NSString *)bundlePath; 68 | + (instancetype)testSuiteForTestCaseWithName:(NSString *)name; 69 | + (instancetype)testSuiteForTestCaseClass:(Class)testCaseClass; 70 | 71 | + (instancetype)testSuiteWithName:(NSString *)name; 72 | - (instancetype)initWithName:(NSString *)name NS_DESIGNATED_INITIALIZER; 73 | 74 | - (void)addTest:(XCTest *)test; 75 | 76 | @property (readonly, copy) NSArray <__kindof XCTest *> *tests; 77 | 78 | @end 79 | 80 | NS_ASSUME_NONNULL_END 81 | 82 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCTestSuiteRun.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2013-2015 Apple Inc. All rights reserved. 3 | // 4 | // Copyright (c) 1997-2005, Sen:te (Sente SA). All rights reserved. 5 | // 6 | // Use of this source code is governed by the following license: 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // (1) Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // 14 | // (2) Redistributions in binary form must reproduce the above copyright notice, 15 | // this list of conditions and the following disclaimer in the documentation 16 | // and/or other materials provided with the distribution. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 19 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL Sente SA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 23 | // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 | // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 26 | // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | // Note: this license is equivalent to the FreeBSD license. 29 | // 30 | // This notice may not be removed from this file. 31 | 32 | #import 33 | 34 | NS_ASSUME_NONNULL_BEGIN 35 | 36 | @interface XCTestSuiteRun : XCTestRun { 37 | #ifndef __OBJC2__ 38 | @private 39 | NSMutableArray *_testRuns; 40 | #endif 41 | } 42 | 43 | @property (readonly, copy) NSArray *testRuns; 44 | 45 | - (void)addTestRun:(XCTestRun *)testRun; 46 | 47 | @end 48 | 49 | NS_ASSUME_NONNULL_END 50 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCUIApplication.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014-2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | #import 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | #if XCT_UI_TESTING_AVAILABLE 11 | 12 | NS_CLASS_AVAILABLE(10_11, 9_0) 13 | 14 | /*! Proxy for an application. The information identifying the application is specified in the Xcode target settings as the "Target Application". */ 15 | @interface XCUIApplication : XCUIElement 16 | 17 | /*! 18 | * Launches the application. This call is synchronous and when it returns the application is launched 19 | * and ready to handle user events. Any failure in the launch sequence is reported as a test failure 20 | * and halts the test at this point. If the application is already running, this call will first 21 | * terminate the existing instance to ensure clean state of the launched instance. 22 | */ 23 | - (void)launch; 24 | 25 | /*! 26 | * Terminates any running instance of the application. If the application has an existing debug session 27 | * via Xcode, the termination is implemented as a halt via that debug connection. Otherwise, a SIGKILL 28 | * is sent to the process. 29 | */ 30 | - (void)terminate; 31 | 32 | /*! 33 | * The arguments that will be passed to the application on launch. If not modified, these are the 34 | * arguments that Xcode will pass on launch. Those arguments can be changed, added to, or removed. 35 | * Unlike NSTask, it is legal to modify these arguments after the application has been launched. These 36 | * changes will not affect the current launch session, but will take effect the next time the application 37 | * is launched. 38 | */ 39 | @property (nonatomic, copy) NSArray *launchArguments; 40 | 41 | /*! 42 | * The environment that will be passed to the application on launch. If not modified, this is the 43 | * environment that Xcode will pass on launch. Those variables can be changed, added to, or removed. 44 | * Unlike NSTask, it is legal to modify the environment after the application has been launched. These 45 | * changes will not affect the current launch session, but will take effect the next time the application 46 | * is launched. 47 | */ 48 | @property (nonatomic, copy) NSDictionary *launchEnvironment; 49 | 50 | @end 51 | 52 | #endif 53 | 54 | NS_ASSUME_NONNULL_END 55 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCUICoordinate.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014-2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | #if TARGET_OS_IPHONE 8 | #import 9 | #else 10 | #import 11 | #endif 12 | 13 | 14 | NS_ASSUME_NONNULL_BEGIN 15 | 16 | #if XCT_UI_TESTING_AVAILABLE && !TARGET_OS_TV 17 | 18 | @class XCUIElement; 19 | 20 | NS_CLASS_AVAILABLE(10_11, 9_0) 21 | 22 | /*! A coordinate represents a location on screen, relative to some element. Coordinates are dynamic, just like the elements to which they refer, and may compute different screen locations at different times, or be invalid if the referenced element does not exist. */ 23 | @interface XCUICoordinate : NSObject 24 | 25 | /*! Coordinates are never instantiated directly. Instead, they are created by elements or by other coordinates. */ 26 | - (instancetype)init NS_UNAVAILABLE; 27 | 28 | /*! The element that the coordinate is based on, either directly or via the coordinate from which it was derived. */ 29 | @property (readonly) XCUIElement *referencedElement; 30 | 31 | /*! The dynamically computed value of the coordinate's location on screen. Note that this value is dependent on the current frame of the referenced element; if the element's frame changes, so will the value returned by this property. If the referenced element does exist when this is called, it will fail the test; check the referenced element's exists property if the element may not be present. */ 32 | @property (readonly) CGPoint screenPoint; 33 | 34 | /*! Creates a new coordinate with an absolute offset in points from the original coordinate. */ 35 | - (XCUICoordinate *)coordinateWithOffset:(CGVector)offsetVector; 36 | 37 | #if TARGET_OS_IPHONE 38 | - (void)tap; 39 | - (void)doubleTap; 40 | - (void)pressForDuration:(NSTimeInterval)duration; 41 | - (void)pressForDuration:(NSTimeInterval)duration thenDragToCoordinate:(XCUICoordinate *)otherCoordinate; 42 | #else 43 | - (void)hover; 44 | - (void)click; 45 | - (void)doubleClick; 46 | - (void)rightClick; 47 | - (void)clickForDuration:(NSTimeInterval)duration thenDragToCoordinate:(XCUICoordinate *)otherCoordinate; 48 | - (void)scrollByDeltaX:(CGFloat)deltaX deltaY:(CGFloat)deltaY; 49 | #endif 50 | 51 | @end 52 | 53 | #endif 54 | 55 | NS_ASSUME_NONNULL_END 56 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCUIDevice.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014-2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | #if XCT_UI_TESTING_AVAILABLE 8 | 9 | #if TARGET_OS_IPHONE 10 | 11 | #import 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | /*! 16 | * @enum XCUIDeviceButton 17 | * 18 | * Represents a physical button on a device. 19 | * 20 | * @note Some buttons are not available in the Simulator, and should not be used in your tests. 21 | * You can use a block like this: 22 | * 23 | * #if !TARGET_OS_SIMULATOR 24 | * // test code that depends on buttons not available in the Simulator 25 | * #endif 26 | * 27 | * in your test code to ensure it does not call unavailable APIs. 28 | */ 29 | typedef NS_ENUM(NSInteger, XCUIDeviceButton) { 30 | XCUIDeviceButtonHome = 1, 31 | XCUIDeviceButtonVolumeUp XCTEST_SIMULATOR_UNAVAILABLE("This API is not available in the Simulator, see the XCUIDeviceButton documentation for details.") = 2, 32 | XCUIDeviceButtonVolumeDown XCTEST_SIMULATOR_UNAVAILABLE("This API is not available in the Simulator, see the XCUIDeviceButton documentation for details.") = 3 33 | }; 34 | 35 | /*! Represents a device, providing an interface for simulating events involving physical buttons and device state. */ 36 | NS_CLASS_AVAILABLE(NA, 9_0) 37 | @interface XCUIDevice : NSObject 38 | 39 | /*! The current device. */ 40 | + (XCUIDevice *)sharedDevice; 41 | 42 | #if TARGET_OS_IOS 43 | /*! The orientation of the device. */ 44 | @property (nonatomic) UIDeviceOrientation orientation; 45 | #endif 46 | 47 | /*! Simulates the user pressing a physical button. */ 48 | - (void)pressButton:(XCUIDeviceButton)button; 49 | 50 | @end 51 | 52 | NS_ASSUME_NONNULL_END 53 | 54 | #endif 55 | 56 | #endif 57 | 58 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCUIElement.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014-2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | #if TARGET_OS_IPHONE 8 | #import 9 | #else 10 | #import 11 | #endif 12 | 13 | #import 14 | #import 15 | 16 | NS_ASSUME_NONNULL_BEGIN 17 | 18 | #if XCT_UI_TESTING_AVAILABLE 19 | 20 | NS_ENUM_AVAILABLE(10_11, 9_0) 21 | typedef NS_OPTIONS(NSUInteger, XCUIKeyModifierFlags) { 22 | XCUIKeyModifierNone = 0, 23 | XCUIKeyModifierAlphaShift = (1UL << 0), 24 | XCUIKeyModifierShift = (1UL << 1), 25 | XCUIKeyModifierControl = (1UL << 2), 26 | XCUIKeyModifierAlternate = (1UL << 3), 27 | XCUIKeyModifierOption = XCUIKeyModifierAlternate, 28 | XCUIKeyModifierCommand = (1UL << 4), 29 | }; 30 | 31 | @class XCUIElementQuery; 32 | @class XCUICoordinate; 33 | 34 | /*! 35 | * @class XCUIElement (/seealso XCUIElementAttributes) 36 | * Elements are objects encapsulating the information needed to dynamically locate a user interface 37 | * element in an application. Elements are described in terms of queries /seealso XCUIElementQuery. 38 | */ 39 | NS_CLASS_AVAILABLE(10_11, 9_0) 40 | @interface XCUIElement : NSObject 41 | 42 | /*! Test to determine if the element exists. */ 43 | @property (readonly) BOOL exists; 44 | 45 | /*! Whether or not a hit point can be computed for the element for the purpose of synthesizing events. */ 46 | @property (readonly, getter = isHittable) BOOL hittable; 47 | 48 | /*! Returns a query for all descendants of the element matching the specified type. */ 49 | - (XCUIElementQuery *)descendantsMatchingType:(XCUIElementType)type; 50 | 51 | /*! Returns a query for direct children of the element matching the specified type. */ 52 | - (XCUIElementQuery *)childrenMatchingType:(XCUIElementType)type; 53 | 54 | #if !TARGET_OS_TV 55 | /*! Creates and returns a new coordinate that will compute its screen point by adding the offset multiplied by the size of the element’s frame to the origin of the element’s frame. */ 56 | - (XCUICoordinate *)coordinateWithNormalizedOffset:(CGVector)normalizedOffset; 57 | #endif 58 | 59 | /*! 60 | @discussion 61 | Provides debugging information about the element. The data in the string will vary based on the 62 | time at which it is captured, but it may include any of the following as well as additional data: 63 | • Values for the elements attributes. 64 | • The entire tree of descendants rooted at the element. 65 | • The element's query. 66 | This data should be used for debugging only - depending on any of the data as part of a test is unsupported. 67 | */ 68 | @property (readonly, copy) NSString *debugDescription; 69 | 70 | @end 71 | 72 | #pragma mark - Event Synthesis 73 | 74 | /*! 75 | * @category Events 76 | * Events that can be synthesized relative to an XCUIElement object. When an event API is called, the element 77 | * will be resolved. If zero or multiple matches are found, an error will be raised. 78 | */ 79 | @interface XCUIElement (XCUIElementEventSynthesis) 80 | 81 | /*! 82 | * Types a string into the element. The element or a descendant must have keyboard focus; otherwise an 83 | * error is raised. 84 | * 85 | * This API discards any modifiers set in the current context by +performWithKeyModifiers:block: so that 86 | * it strictly interprets the provided text. To input keys with modifier flags, use -typeKey:modifierFlags:. 87 | */ 88 | - (void)typeText:(NSString *)text; 89 | 90 | #if TARGET_OS_TV 91 | #elif TARGET_OS_IOS 92 | 93 | /*! 94 | * Sends a tap event to a hittable point computed for the element. 95 | */ 96 | - (void)tap; 97 | 98 | /*! 99 | * Sends a double tap event to a hittable point computed for the element. 100 | */ 101 | - (void)doubleTap; 102 | 103 | /*! 104 | * Sends a two finger tap event to a hittable point computed for the element. 105 | */ 106 | - (void)twoFingerTap; 107 | 108 | /*! 109 | * Sends one or more taps with one of more touch points. 110 | * 111 | * @param numberOfTaps 112 | * The number of taps. 113 | * 114 | * @param numberOfTouches 115 | * The number of touch points. 116 | */ 117 | - (void)tapWithNumberOfTaps:(NSUInteger)numberOfTaps numberOfTouches:(NSUInteger)numberOfTouches; 118 | 119 | /*! 120 | * Sends a long press gesture to a hittable point computed for the element, holding for the specified duration. 121 | * 122 | * @param duration 123 | * Duration in seconds. 124 | */ 125 | - (void)pressForDuration:(NSTimeInterval)duration; 126 | 127 | /*! 128 | * Initiates a press-and-hold gesture that then drags to another element, suitable for table cell reordering and similar operations. 129 | * @param duration 130 | * Duration of the initial press-and-hold. 131 | * @param otherElement 132 | * The element to finish the drag gesture over. In the example of table cell reordering, this would be the reorder element of the destination row. 133 | */ 134 | - (void)pressForDuration:(NSTimeInterval)duration thenDragToElement:(XCUIElement *)otherElement; 135 | 136 | /*! 137 | * Sends a swipe-up gesture. 138 | */ 139 | - (void)swipeUp; 140 | 141 | /*! 142 | * Sends a swipe-down gesture. 143 | */ 144 | - (void)swipeDown; 145 | 146 | /*! 147 | * Sends a swipe-left gesture. 148 | */ 149 | - (void)swipeLeft; 150 | 151 | /*! 152 | * Sends a swipe-right gesture. 153 | */ 154 | - (void)swipeRight; 155 | 156 | /*! 157 | * Sends a pinching gesture with two touches. 158 | * 159 | * The system makes a best effort to synthesize the requested scale and velocity: absolute accuracy is not guaranteed. 160 | * Some values may not be possible based on the size of the element's frame - these will result in test failures. 161 | * 162 | * @param scale 163 | * The scale of the pinch gesture. Use a scale between 0 and 1 to "pinch close" or zoom out and a scale greater than 1 to "pinch open" or zoom in. 164 | * 165 | * @param velocity 166 | * The velocity of the pinch in scale factor per second. 167 | */ 168 | - (void)pinchWithScale:(CGFloat)scale velocity:(CGFloat)velocity; 169 | 170 | /*! 171 | * Sends a rotation gesture with two touches. 172 | * 173 | * The system makes a best effort to synthesize the requested rotation and velocity: absolute accuracy is not guaranteed. 174 | * Some values may not be possible based on the size of the element's frame - these will result in test failures. 175 | * 176 | * @param rotation 177 | * The rotation of the gesture in radians. 178 | * 179 | * @param velocity 180 | * The velocity of the rotation gesture in radians per second. 181 | */ 182 | - (void)rotate:(CGFloat)rotation withVelocity:(CGFloat)velocity; 183 | 184 | #elif TARGET_OS_MAC 185 | 186 | /*! 187 | * Moves the cursor over the element. 188 | */ 189 | - (void)hover; 190 | 191 | /*! 192 | * Sends a click event to a hittable point computed for the element. 193 | */ 194 | - (void)click; 195 | 196 | /*! 197 | * Sends a double click event to a hittable point computed for the element. 198 | */ 199 | - (void)doubleClick; 200 | 201 | /*! 202 | * Sends a right click event to a hittable point computed for the element. 203 | */ 204 | - (void)rightClick; 205 | 206 | /*! 207 | * Clicks and holds for a specified duration (generally long enough to start a drag operation) then drags 208 | * to the other element. 209 | */ 210 | - (void)clickForDuration:(NSTimeInterval)duration thenDragToElement:(XCUIElement *)otherElement; 211 | 212 | /*! 213 | * Hold modifier keys while the given block runs. This method pushes and pops the modifiers as global state 214 | * without need for reference to a particular element. Inside the block, elements can be clicked on, dragged 215 | * from, typed into, etc. 216 | */ 217 | + (void)performWithKeyModifiers:(XCUIKeyModifierFlags)flags block:(void (^)(void))block; 218 | 219 | /*! 220 | * Types a single key with the specified modifier flags. Although `key` is a string, it must represent 221 | * a single key on a physical keyboard; strings that resolve to multiple keys will raise an error at runtime. 222 | * In addition to literal string key representations like "a", "6", and "[", keys such as the arrow keys, 223 | * command, control, option, and function keys can be typed using constants defined for them in XCUIKeyboardKeys.h 224 | */ 225 | - (void)typeKey:(NSString *)key modifierFlags:(XCUIKeyModifierFlags)flags; 226 | 227 | /*! 228 | * Scroll the view the specified pixels, x and y. 229 | */ 230 | - (void)scrollByDeltaX:(CGFloat)deltaX deltaY:(CGFloat)deltaY; 231 | 232 | #endif 233 | 234 | @end 235 | 236 | /*! This category on XCUIElement provides functionality for automating UISlider and NSSlider. */ 237 | @interface XCUIElement (XCUIElementTypeSlider) 238 | 239 | /*! Manipulates the UI to change the displayed value of the slider to one based on a normalized position. 0 corresponds to the minimum value of the slider, 1 corresponds to its maximum value. The adjustment is a "best effort" to move the indicator to the desired position; absolute fidelity is not guaranteed. */ 240 | - (void)adjustToNormalizedSliderPosition:(CGFloat)normalizedSliderPosition; 241 | 242 | /*! Returns the position of the slider's indicator as a normalized value where 0 corresponds to the minimum value of the slider and 1 corresponds to its maximum value. */ 243 | @property (readonly) CGFloat normalizedSliderPosition; 244 | 245 | @end 246 | 247 | #if TARGET_OS_IOS 248 | 249 | /*! This category on XCUIElement provides functionality for automating the picker wheels of UIPickerViews and UIDatePickers. */ 250 | @interface XCUIElement (XCUIElementTypePickerWheel) 251 | 252 | /*! Changes the displayed value for the picker wheel. Will generate a test failure if the specified value is not available. */ 253 | - (void)adjustToPickerWheelValue:(NSString *)pickerWheelValue; 254 | 255 | @end 256 | 257 | #endif 258 | 259 | #endif 260 | 261 | NS_ASSUME_NONNULL_END 262 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCUIElementAttributes.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | #import 7 | 8 | #if XCT_UI_TESTING_AVAILABLE 9 | 10 | #if TARGET_OS_IPHONE 11 | 12 | #import 13 | 14 | typedef NS_ENUM(NSInteger, XCUIUserInterfaceSizeClass) { 15 | XCUIUserInterfaceSizeClassUnspecified = UIUserInterfaceSizeClassUnspecified, 16 | XCUIUserInterfaceSizeClassCompact = UIUserInterfaceSizeClassCompact, 17 | XCUIUserInterfaceSizeClassRegular = UIUserInterfaceSizeClassRegular, 18 | }; 19 | 20 | #else 21 | 22 | #import 23 | 24 | typedef NS_ENUM(NSInteger, XCUIUserInterfaceSizeClass) { 25 | XCUIUserInterfaceSizeClassUnspecified = 0, 26 | }; 27 | 28 | #endif 29 | 30 | NS_ASSUME_NONNULL_BEGIN 31 | 32 | /*! Protocol describing the attributes exposed on user interface elements and available during query matching. These attributes represent data exposed to the Accessibility system. */ 33 | @protocol XCUIElementAttributes 34 | 35 | /*! The accessibility identifier. */ 36 | @property (readonly) NSString *identifier; 37 | 38 | /*! The frame of the element in the screen coordinate space. */ 39 | @property (readonly) CGRect frame; 40 | 41 | /*! The raw value attribute of the element. Depending on the element, the actual type can vary. */ 42 | @property (readonly, nullable) id value; 43 | 44 | /*! The title attribute of the element. */ 45 | @property (readonly, copy) NSString *title; 46 | 47 | /*! The label attribute of the element. */ 48 | @property (readonly, copy) NSString *label; 49 | 50 | /*! The type of the element. /seealso XCUIElementType. */ 51 | @property (readonly) XCUIElementType elementType; 52 | 53 | /*! Whether or not the element is enabled for user interaction. */ 54 | @property (readonly, getter = isEnabled) BOOL enabled; 55 | 56 | /*! The horizontal size class of the element. */ 57 | @property (readonly) XCUIUserInterfaceSizeClass horizontalSizeClass; 58 | 59 | /*! The vertical size class of the element. */ 60 | @property (readonly) XCUIUserInterfaceSizeClass verticalSizeClass; 61 | 62 | /*! The value that is displayed when the element has no value. */ 63 | @property (readonly, nullable) NSString *placeholderValue; 64 | 65 | /*! Whether or not the element is selected. */ 66 | @property (readonly, getter = isSelected) BOOL selected; 67 | 68 | #if TARGET_OS_TV 69 | /*! Whether or not the elment has UI focus. */ 70 | @property (readonly) BOOL hasFocus; 71 | #endif 72 | 73 | @end 74 | 75 | NS_ASSUME_NONNULL_END 76 | 77 | #endif 78 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCUIElementQuery.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | #if XCT_UI_TESTING_AVAILABLE 8 | 9 | #import 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | XCT_EXPORT NSString *XCUIIdentifierCloseWindow; 15 | XCT_EXPORT NSString *XCUIIdentifierMinimizeWindow; 16 | XCT_EXPORT NSString *XCUIIdentifierZoomWindow; 17 | XCT_EXPORT NSString *XCUIIdentifierFullScreenWindow; 18 | 19 | @class XCUIElement; 20 | 21 | /*! Object for locating elements that can be chained with other queries. */ 22 | NS_CLASS_AVAILABLE(10_11, 9_0) 23 | @interface XCUIElementQuery : NSObject 24 | 25 | /*! Returns an element that will use the query for resolution. */ 26 | @property (readonly) XCUIElement *element; 27 | 28 | /*! Evaluates the query at the time it is called and returns the number of matches found. */ 29 | @property (readonly) NSUInteger count; 30 | 31 | /*! Returns an element that will resolve to the index into the query's result set. */ 32 | - (XCUIElement *)elementAtIndex:(NSUInteger)index NS_DEPRECATED(10_11, 10_11, 9_0, 9_0, "Use elementBoundByIndex instead."); 33 | 34 | /*! Returns an element that will use the index into the query's results to determine which underlying accessibility element it is matched with. */ 35 | - (XCUIElement *)elementBoundByIndex:(NSUInteger)index; 36 | 37 | /*! Returns an element that matches the predicate. The predicate will be evaluated against objects of type id. */ 38 | - (XCUIElement *)elementMatchingPredicate:(NSPredicate *)predicate; 39 | 40 | /*! Returns an element that matches the type and identifier. */ 41 | - (XCUIElement *)elementMatchingType:(XCUIElementType)elementType identifier:(nullable NSString *)identifier; 42 | 43 | /*! Keyed subscripting is implemented as a shortcut for matching an identifier only. For example, app.descendants["Foo"] -> XCUIElement. */ 44 | - (XCUIElement *)objectForKeyedSubscript:(NSString *)key; 45 | 46 | /*! Immediately evaluates the query and returns an array of elements bound to the resulting accessibility elements. */ 47 | @property (readonly, copy) NSArray *allElementsBoundByAccessibilityElement; 48 | 49 | /*! Immediately evaluates the query and returns an array of elements bound by the index of each result. */ 50 | @property (readonly, copy) NSArray *allElementsBoundByIndex; 51 | 52 | /*! Returns a new query that finds the descendants of all the elements found by the receiver. */ 53 | - (XCUIElementQuery *)descendantsMatchingType:(XCUIElementType)type; 54 | 55 | /*! Returns a new query that finds the direct children of all the elements found by the receiver. */ 56 | - (XCUIElementQuery *)childrenMatchingType:(XCUIElementType)type; 57 | 58 | /*! Returns a new query that applies the specified attributes or predicate to the receiver. The predicate will be evaluated against objects of type id. */ 59 | - (XCUIElementQuery *)matchingPredicate:(NSPredicate *)predicate; 60 | - (XCUIElementQuery *)matchingType:(XCUIElementType)elementType identifier:(nullable NSString *)identifier; 61 | - (XCUIElementQuery *)matchingIdentifier:(NSString *)identifier; 62 | 63 | /*! Returns a new query for finding elements that contain a descendant matching the specification. The predicate will be evaluated against objects of type id. */ 64 | - (XCUIElementQuery *)containingPredicate:(NSPredicate *)predicate; 65 | - (XCUIElementQuery *)containingType:(XCUIElementType)elementType identifier:(nullable NSString *)identifier; 66 | 67 | /*! 68 | @discussion 69 | Provides debugging information about the query. The data in the string will vary based on the time 70 | at which it is captured, but it may include any of the following as well as additional data: 71 | • A description of each step of the query. 72 | • Information about the inputs and matched outputs of each step of the query. 73 | This data should be used for debugging only - depending on any of the data as part of a test is unsupported. 74 | */ 75 | @property (readonly, copy) NSString *debugDescription; 76 | 77 | @end 78 | 79 | NS_ASSUME_NONNULL_END 80 | 81 | #endif 82 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCUIElementTypeQueryProvider.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | #if XCT_UI_TESTING_AVAILABLE 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | @class XCUIElementQuery; 12 | 13 | @protocol XCUIElementTypeQueryProvider 14 | 15 | @property (readonly, copy) XCUIElementQuery *groups; 16 | @property (readonly, copy) XCUIElementQuery *windows; 17 | @property (readonly, copy) XCUIElementQuery *sheets; 18 | @property (readonly, copy) XCUIElementQuery *drawers; 19 | @property (readonly, copy) XCUIElementQuery *alerts; 20 | @property (readonly, copy) XCUIElementQuery *dialogs; 21 | @property (readonly, copy) XCUIElementQuery *buttons; 22 | @property (readonly, copy) XCUIElementQuery *radioButtons; 23 | @property (readonly, copy) XCUIElementQuery *radioGroups; 24 | @property (readonly, copy) XCUIElementQuery *checkBoxes; 25 | @property (readonly, copy) XCUIElementQuery *disclosureTriangles; 26 | @property (readonly, copy) XCUIElementQuery *popUpButtons; 27 | @property (readonly, copy) XCUIElementQuery *comboBoxes; 28 | @property (readonly, copy) XCUIElementQuery *menuButtons; 29 | @property (readonly, copy) XCUIElementQuery *toolbarButtons; 30 | @property (readonly, copy) XCUIElementQuery *popovers; 31 | @property (readonly, copy) XCUIElementQuery *keyboards; 32 | @property (readonly, copy) XCUIElementQuery *keys; 33 | @property (readonly, copy) XCUIElementQuery *navigationBars; 34 | @property (readonly, copy) XCUIElementQuery *tabBars; 35 | @property (readonly, copy) XCUIElementQuery *tabGroups; 36 | @property (readonly, copy) XCUIElementQuery *toolbars; 37 | @property (readonly, copy) XCUIElementQuery *statusBars; 38 | @property (readonly, copy) XCUIElementQuery *tables; 39 | @property (readonly, copy) XCUIElementQuery *tableRows; 40 | @property (readonly, copy) XCUIElementQuery *tableColumns; 41 | @property (readonly, copy) XCUIElementQuery *outlines; 42 | @property (readonly, copy) XCUIElementQuery *outlineRows; 43 | @property (readonly, copy) XCUIElementQuery *browsers; 44 | @property (readonly, copy) XCUIElementQuery *collectionViews; 45 | @property (readonly, copy) XCUIElementQuery *sliders; 46 | @property (readonly, copy) XCUIElementQuery *pageIndicators; 47 | @property (readonly, copy) XCUIElementQuery *progressIndicators; 48 | @property (readonly, copy) XCUIElementQuery *activityIndicators; 49 | @property (readonly, copy) XCUIElementQuery *segmentedControls; 50 | @property (readonly, copy) XCUIElementQuery *pickers; 51 | @property (readonly, copy) XCUIElementQuery *pickerWheels; 52 | @property (readonly, copy) XCUIElementQuery *switches; 53 | @property (readonly, copy) XCUIElementQuery *toggles; 54 | @property (readonly, copy) XCUIElementQuery *links; 55 | @property (readonly, copy) XCUIElementQuery *images; 56 | @property (readonly, copy) XCUIElementQuery *icons; 57 | @property (readonly, copy) XCUIElementQuery *searchFields; 58 | @property (readonly, copy) XCUIElementQuery *scrollViews; 59 | @property (readonly, copy) XCUIElementQuery *scrollBars; 60 | @property (readonly, copy) XCUIElementQuery *staticTexts; 61 | @property (readonly, copy) XCUIElementQuery *textFields; 62 | @property (readonly, copy) XCUIElementQuery *secureTextFields; 63 | @property (readonly, copy) XCUIElementQuery *datePickers; 64 | @property (readonly, copy) XCUIElementQuery *textViews; 65 | @property (readonly, copy) XCUIElementQuery *menus; 66 | @property (readonly, copy) XCUIElementQuery *menuItems; 67 | @property (readonly, copy) XCUIElementQuery *menuBars; 68 | @property (readonly, copy) XCUIElementQuery *menuBarItems; 69 | @property (readonly, copy) XCUIElementQuery *maps; 70 | @property (readonly, copy) XCUIElementQuery *webViews; 71 | @property (readonly, copy) XCUIElementQuery *steppers; 72 | @property (readonly, copy) XCUIElementQuery *incrementArrows; 73 | @property (readonly, copy) XCUIElementQuery *decrementArrows; 74 | @property (readonly, copy) XCUIElementQuery *tabs; 75 | @property (readonly, copy) XCUIElementQuery *timelines; 76 | @property (readonly, copy) XCUIElementQuery *ratingIndicators; 77 | @property (readonly, copy) XCUIElementQuery *valueIndicators; 78 | @property (readonly, copy) XCUIElementQuery *splitGroups; 79 | @property (readonly, copy) XCUIElementQuery *splitters; 80 | @property (readonly, copy) XCUIElementQuery *relevanceIndicators; 81 | @property (readonly, copy) XCUIElementQuery *colorWells; 82 | @property (readonly, copy) XCUIElementQuery *helpTags; 83 | @property (readonly, copy) XCUIElementQuery *mattes; 84 | @property (readonly, copy) XCUIElementQuery *dockItems; 85 | @property (readonly, copy) XCUIElementQuery *rulers; 86 | @property (readonly, copy) XCUIElementQuery *rulerMarkers; 87 | @property (readonly, copy) XCUIElementQuery *grids; 88 | @property (readonly, copy) XCUIElementQuery *levelIndicators; 89 | @property (readonly, copy) XCUIElementQuery *cells; 90 | @property (readonly, copy) XCUIElementQuery *layoutAreas; 91 | @property (readonly, copy) XCUIElementQuery *layoutItems; 92 | @property (readonly, copy) XCUIElementQuery *handles; 93 | @property (readonly, copy) XCUIElementQuery *otherElements; 94 | 95 | @end 96 | 97 | NS_ASSUME_NONNULL_END 98 | 99 | #endif 100 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCUIElementTypes.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | 7 | #if XCT_UI_TESTING_AVAILABLE 8 | 9 | NS_ENUM_AVAILABLE(10_11, 9_0) 10 | typedef NS_ENUM(NSUInteger, XCUIElementType) { 11 | XCUIElementTypeAny = 0, 12 | XCUIElementTypeOther = 1, 13 | XCUIElementTypeApplication = 2, 14 | XCUIElementTypeGroup = 3, 15 | XCUIElementTypeWindow = 4, 16 | XCUIElementTypeSheet = 5, 17 | XCUIElementTypeDrawer = 6, 18 | XCUIElementTypeAlert = 7, 19 | XCUIElementTypeDialog = 8, 20 | XCUIElementTypeButton = 9, 21 | XCUIElementTypeRadioButton = 10, 22 | XCUIElementTypeRadioGroup = 11, 23 | XCUIElementTypeCheckBox = 12, 24 | XCUIElementTypeDisclosureTriangle = 13, 25 | XCUIElementTypePopUpButton = 14, 26 | XCUIElementTypeComboBox = 15, 27 | XCUIElementTypeMenuButton = 16, 28 | XCUIElementTypeToolbarButton = 17, 29 | XCUIElementTypePopover = 18, 30 | XCUIElementTypeKeyboard = 19, 31 | XCUIElementTypeKey = 20, 32 | XCUIElementTypeNavigationBar = 21, 33 | XCUIElementTypeTabBar = 22, 34 | XCUIElementTypeTabGroup = 23, 35 | XCUIElementTypeToolbar = 24, 36 | XCUIElementTypeStatusBar = 25, 37 | XCUIElementTypeTable = 26, 38 | XCUIElementTypeTableRow = 27, 39 | XCUIElementTypeTableColumn = 28, 40 | XCUIElementTypeOutline = 29, 41 | XCUIElementTypeOutlineRow = 30, 42 | XCUIElementTypeBrowser = 31, 43 | XCUIElementTypeCollectionView = 32, 44 | XCUIElementTypeSlider = 33, 45 | XCUIElementTypePageIndicator = 34, 46 | XCUIElementTypeProgressIndicator = 35, 47 | XCUIElementTypeActivityIndicator = 36, 48 | XCUIElementTypeSegmentedControl = 37, 49 | XCUIElementTypePicker = 38, 50 | XCUIElementTypePickerWheel = 39, 51 | XCUIElementTypeSwitch = 40, 52 | XCUIElementTypeToggle = 41, 53 | XCUIElementTypeLink = 42, 54 | XCUIElementTypeImage = 43, 55 | XCUIElementTypeIcon = 44, 56 | XCUIElementTypeSearchField = 45, 57 | XCUIElementTypeScrollView = 46, 58 | XCUIElementTypeScrollBar = 47, 59 | XCUIElementTypeStaticText = 48, 60 | XCUIElementTypeTextField = 49, 61 | XCUIElementTypeSecureTextField = 50, 62 | XCUIElementTypeDatePicker = 51, 63 | XCUIElementTypeTextView = 52, 64 | XCUIElementTypeMenu = 53, 65 | XCUIElementTypeMenuItem = 54, 66 | XCUIElementTypeMenuBar = 55, 67 | XCUIElementTypeMenuBarItem = 56, 68 | XCUIElementTypeMap = 57, 69 | XCUIElementTypeWebView = 58, 70 | XCUIElementTypeIncrementArrow = 59, 71 | XCUIElementTypeDecrementArrow = 60, 72 | XCUIElementTypeTimeline = 61, 73 | XCUIElementTypeRatingIndicator = 62, 74 | XCUIElementTypeValueIndicator = 63, 75 | XCUIElementTypeSplitGroup = 64, 76 | XCUIElementTypeSplitter = 65, 77 | XCUIElementTypeRelevanceIndicator = 66, 78 | XCUIElementTypeColorWell = 67, 79 | XCUIElementTypeHelpTag = 68, 80 | XCUIElementTypeMatte = 69, 81 | XCUIElementTypeDockItem = 70, 82 | XCUIElementTypeRuler = 71, 83 | XCUIElementTypeRulerMarker = 72, 84 | XCUIElementTypeGrid = 73, 85 | XCUIElementTypeLevelIndicator = 74, 86 | XCUIElementTypeCell = 75, 87 | XCUIElementTypeLayoutArea = 76, 88 | XCUIElementTypeLayoutItem = 77, 89 | XCUIElementTypeHandle = 78, 90 | XCUIElementTypeStepper = 79, 91 | XCUIElementTypeTab = 80, 92 | }; 93 | 94 | #endif 95 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCUIKeyboardKeys.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | #import 7 | 8 | #if XCT_UI_TESTING_AVAILABLE 9 | 10 | /*! 11 | Constants for use with -[XCUIElement typeKey:modifierFlags:], 12 | representing keys that have no textual representation. These comprise 13 | the set of control, function, and modifier keys found on most keyboards. 14 | */ 15 | 16 | extern NSString *const XCUIKeyboardKeyDelete; 17 | extern NSString *const XCUIKeyboardKeyReturn; 18 | extern NSString *const XCUIKeyboardKeyEnter; 19 | extern NSString *const XCUIKeyboardKeyTab; 20 | extern NSString *const XCUIKeyboardKeySpace; 21 | extern NSString *const XCUIKeyboardKeyEscape; 22 | 23 | extern NSString *const XCUIKeyboardKeyUpArrow; 24 | extern NSString *const XCUIKeyboardKeyDownArrow; 25 | extern NSString *const XCUIKeyboardKeyLeftArrow; 26 | extern NSString *const XCUIKeyboardKeyRightArrow; 27 | 28 | extern NSString *const XCUIKeyboardKeyF1; 29 | extern NSString *const XCUIKeyboardKeyF2; 30 | extern NSString *const XCUIKeyboardKeyF3; 31 | extern NSString *const XCUIKeyboardKeyF4; 32 | extern NSString *const XCUIKeyboardKeyF5; 33 | extern NSString *const XCUIKeyboardKeyF6; 34 | extern NSString *const XCUIKeyboardKeyF7; 35 | extern NSString *const XCUIKeyboardKeyF8; 36 | extern NSString *const XCUIKeyboardKeyF9; 37 | extern NSString *const XCUIKeyboardKeyF10; 38 | extern NSString *const XCUIKeyboardKeyF11; 39 | extern NSString *const XCUIKeyboardKeyF12; 40 | extern NSString *const XCUIKeyboardKeyF13; 41 | extern NSString *const XCUIKeyboardKeyF14; 42 | extern NSString *const XCUIKeyboardKeyF15; 43 | extern NSString *const XCUIKeyboardKeyF16; 44 | extern NSString *const XCUIKeyboardKeyF17; 45 | extern NSString *const XCUIKeyboardKeyF18; 46 | extern NSString *const XCUIKeyboardKeyF19; 47 | 48 | extern NSString *const XCUIKeyboardKeyForwardDelete; 49 | extern NSString *const XCUIKeyboardKeyHome; 50 | extern NSString *const XCUIKeyboardKeyEnd; 51 | extern NSString *const XCUIKeyboardKeyPageUp; 52 | extern NSString *const XCUIKeyboardKeyPageDown; 53 | extern NSString *const XCUIKeyboardKeyClear; 54 | extern NSString *const XCUIKeyboardKeyHelp; 55 | 56 | extern NSString *const XCUIKeyboardKeyCapsLock; 57 | extern NSString *const XCUIKeyboardKeyShift; 58 | extern NSString *const XCUIKeyboardKeyControl; 59 | extern NSString *const XCUIKeyboardKeyOption; 60 | extern NSString *const XCUIKeyboardKeyCommand; 61 | extern NSString *const XCUIKeyboardKeyRightShift; 62 | extern NSString *const XCUIKeyboardKeyRightControl; 63 | extern NSString *const XCUIKeyboardKeyRightOption; 64 | extern NSString *const XCUIKeyboardKeyRightCommand; 65 | extern NSString *const XCUIKeyboardKeySecondaryFn; 66 | 67 | #endif 68 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Headers/XCUIRemote.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (c) 2014-2015 Apple Inc. All rights reserved. 3 | // 4 | 5 | #import 6 | #import 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | #if XCT_UI_TESTING_AVAILABLE 11 | 12 | /*! 13 | * @enum XCUIRemoteButton 14 | * 15 | * A button on a physical remote control. 16 | */ 17 | typedef NS_ENUM(NSUInteger, XCUIRemoteButton) { 18 | XCUIRemoteButtonUp = 0, 19 | XCUIRemoteButtonDown = 1, 20 | XCUIRemoteButtonLeft = 2, 21 | XCUIRemoteButtonRight = 3, 22 | 23 | XCUIRemoteButtonSelect = 4, 24 | XCUIRemoteButtonMenu = 5, 25 | XCUIRemoteButtonPlayPause = 6, 26 | }; 27 | 28 | #if TARGET_OS_TV 29 | 30 | /*! 31 | * @class XCUIRemote 32 | * 33 | * Simulates interaction with a physical remote control. 34 | */ 35 | NS_CLASS_AVAILABLE_IOS(9_0) 36 | @interface XCUIRemote : NSObject 37 | 38 | /*! 39 | * The simulated physical remote control. 40 | */ 41 | + (instancetype)sharedRemote; 42 | 43 | /*! 44 | * Sends a momentary press of a button on a physical remote control. 45 | * 46 | * @param remoteButton 47 | * The button on the physical remote control for which to synthesize a press. 48 | */ 49 | - (void)pressButton:(XCUIRemoteButton)remoteButton; 50 | 51 | /*! 52 | * Sends a press and hold of a button on a physical remote control, holding for the specified duration. 53 | * 54 | * @param remoteButton 55 | * The button on the physical remote control for which to synthesize a press. 56 | * 57 | * @param duration 58 | * Duration in seconds. 59 | */ 60 | - (void)pressButton:(XCUIRemoteButton)remoteButton forDuration:(NSTimeInterval)duration; 61 | 62 | @end 63 | 64 | #endif 65 | 66 | #endif 67 | 68 | NS_ASSUME_NONNULL_END 69 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/XCTest.framework/Info.plist -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module XCTest { 2 | umbrella header "XCTest.h" 3 | requires objc 4 | export * 5 | } 6 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/TextBasedStubs/XCTest.tbd: -------------------------------------------------------------------------------- 1 | --- !tapi-tbd-v2 2 | archs: [ i386, x86_64 ] 3 | uuids: [ 'i386: 36F84377-2301-3779-B196-EDD4FC50E942', 'x86_64: 93ADC079-E20A-3B76-8B4F-0C6A9AD32D4E' ] 4 | platform: ios 5 | flags: [ not_app_extension_safe ] 6 | install-name: '@rpath/XCTest.framework/XCTest' 7 | current-version: 11134.0 8 | objc-constraint: none 9 | exports: 10 | - archs: [ i386, x86_64 ] 11 | symbols: [ '_OBJC_EHTYPE_$__XCTestCaseInterruptionException', _XCCGPointDistanceToPoint, 12 | _XCCGRectMinimumDistanceToPoint, _XCSourceCodeTreeNode_PrefixDelimiter, 13 | _XCSourceCodeTreeNode_SuffixDelimiter, _XCTPerformanceMetric_HighWaterMarkForHeapAllocations, 14 | _XCTPerformanceMetric_HighWaterMarkForVMAllocations, _XCTPerformanceMetric_PersistentHeapAllocations, 15 | _XCTPerformanceMetric_PersistentHeapAllocationsNodes, _XCTPerformanceMetric_PersistentVMAllocations, 16 | _XCTPerformanceMetric_RunTime, _XCTPerformanceMetric_SystemTime, 17 | _XCTPerformanceMetric_TemporaryHeapAllocationsKilobytes, _XCTPerformanceMetric_TemporaryHeapAllocationsNodes, 18 | _XCTPerformanceMetric_TemporaryVMAllocationsKilobytes, _XCTPerformanceMetric_TotalHeapAllocationsKilobytes, 19 | _XCTPerformanceMetric_TransientHeapAllocationsKilobytes, _XCTPerformanceMetric_TransientHeapAllocationsNodes, 20 | _XCTPerformanceMetric_TransientVMAllocationsKilobytes, _XCTPerformanceMetric_UserTime, 21 | _XCTPerformanceMetric_WallClockTime, _XCTSelfTestMain, _XCTestErrorDomain, 22 | _XCTestObserverClassKey, _XCTestScopeAll, _XCTestScopeKey, 23 | _XCTestScopeNone, _XCTestScopeSelf, _XCTestToolKey, _XCTestedUnitPath, 24 | _XCUIIdentifierCloseWindow, _XCUIIdentifierFullScreenWindow, 25 | _XCUIIdentifierMinimizeWindow, _XCUIIdentifierZoomWindow, 26 | _XCUIKeyModifierFlagsFromUIKeyModifierFlags, _XCUIKeyModifierFlagsToDisplayString, 27 | _XCUIKeyModifierFlagsToUIKeyModifierFlags, _XCUIKeyModifiersMaskAll, 28 | _XCUIKeyboardKeyCapsLock, _XCUIKeyboardKeyClear, _XCUIKeyboardKeyCommand, 29 | _XCUIKeyboardKeyControl, _XCUIKeyboardKeyDelete, _XCUIKeyboardKeyDownArrow, 30 | _XCUIKeyboardKeyEnd, _XCUIKeyboardKeyEnter, _XCUIKeyboardKeyEscape, 31 | _XCUIKeyboardKeyF1, _XCUIKeyboardKeyF10, _XCUIKeyboardKeyF11, 32 | _XCUIKeyboardKeyF12, _XCUIKeyboardKeyF13, _XCUIKeyboardKeyF14, 33 | _XCUIKeyboardKeyF15, _XCUIKeyboardKeyF16, _XCUIKeyboardKeyF17, 34 | _XCUIKeyboardKeyF18, _XCUIKeyboardKeyF19, _XCUIKeyboardKeyF2, 35 | _XCUIKeyboardKeyF3, _XCUIKeyboardKeyF4, _XCUIKeyboardKeyF5, 36 | _XCUIKeyboardKeyF6, _XCUIKeyboardKeyF7, _XCUIKeyboardKeyF8, 37 | _XCUIKeyboardKeyF9, _XCUIKeyboardKeyForwardDelete, _XCUIKeyboardKeyHelp, 38 | _XCUIKeyboardKeyHome, _XCUIKeyboardKeyLeftArrow, _XCUIKeyboardKeyOption, 39 | _XCUIKeyboardKeyPageDown, _XCUIKeyboardKeyPageUp, _XCUIKeyboardKeyReturn, 40 | _XCUIKeyboardKeyRightArrow, _XCUIKeyboardKeyRightCommand, 41 | _XCUIKeyboardKeyRightControl, _XCUIKeyboardKeyRightOption, 42 | _XCUIKeyboardKeyRightShift, _XCUIKeyboardKeySecondaryFn, _XCUIKeyboardKeyShift, 43 | _XCUIKeyboardKeySpace, _XCUIKeyboardKeyTab, _XCUIKeyboardKeyUpArrow, 44 | _XCUIMatchingPointAlignment, _XCUIMatchingPointIgnoreFrame, 45 | _XCUIMatchingPointIgnoringFrames, _XCUIMatchingPointInFrame, 46 | _XCUIMatchingPointSuggestedPoints, _XCUnoccludedSubrects, 47 | __XCINFLog, __XCLog, __XCTAXMessagingTimeout, __XCTAXResponseTimeout, 48 | __XCTApplicationStateTimeout, __XCTCurrentTestCase, __XCTDaemonConfirmationTimeout, 49 | __XCTDescriptionForValue, __XCTEventConfirmationTimeout, __XCTFailInCurrentTest, 50 | __XCTFailureFormat, __XCTFailureHandler, __XCTPreformattedFailureHandler, 51 | __XCTSetAXMessagingTimeout, __XCTSetAXResponseTimeout, __XCTSetApplicationStateTimeout, 52 | __XCTSetDaemonConfirmationTimeout, __XCTSetEventConfirmationTimeout, 53 | __XCTestMain, __XCWaitLoopIsValid ] 54 | objc-classes: [ _XCAXClient_iOS, _XCAccessibilityElement, _XCActivityRecord, 55 | _XCApplicationMonitor, _XCElementSnapshot, _XCEventGenerator, 56 | _XCPointerEvent, _XCPointerEventPath, _XCSourceCodeRecording, 57 | _XCSourceCodeTreeNode, _XCSymbolicationRecord, _XCSynthesizedEventRecord, 58 | _XCTest, _XCTestCase, _XCTestCaseRun, _XCTestConfiguration, 59 | _XCTestContext, _XCTestDriver, _XCTestExpectation, _XCTestExpectationWaiter, 60 | _XCTestLog, _XCTestObservationCenter, _XCTestObserver, _XCTestProbe, 61 | _XCTestRun, _XCTestSuite, _XCTestSuiteRun, _XCUIApplication, 62 | _XCUIApplicationImpl, _XCUIApplicationProcess, _XCUICoordinate, 63 | _XCUIDevice, _XCUIElement, _XCUIElementQuery, _XCUIRecorderUtilities, 64 | __XCTestCaseImplementation, __XCTestCaseInterruptionException ] 65 | objc-ivars: [ _XCAXClient_iOS._alertNotificationCounter, _XCAXClient_iOS._cacheAccessibilityLoadedValuesForPIDs, 66 | _XCAXClient_iOS._userTestingNotificationHandlers, _XCApplicationMonitor._applicationImplementations, 67 | _XCApplicationMonitor._applicationProcessesForPID, _XCApplicationMonitor._applicationProcessesForToken, 68 | _XCApplicationMonitor._launchedApplications, _XCEventGenerator._eventQueue, 69 | _XCEventGenerator._generation, _XCEventGenerator._generationObserver, 70 | _XCTestConfiguration._absolutePath, _XCTestConfiguration._aggregateStatisticsBeforeCrash, 71 | _XCTestConfiguration._baselineFileRelativePath, _XCTestConfiguration._baselineFileURL, 72 | _XCTestConfiguration._disablePerformanceMetrics, _XCTestConfiguration._initializeForUITesting, 73 | _XCTestConfiguration._pathToXcodeReportingSocket, _XCTestConfiguration._productModuleName, 74 | _XCTestConfiguration._reportActivities, _XCTestConfiguration._reportResultsToIDE, 75 | _XCTestConfiguration._sessionIdentifier, _XCTestConfiguration._targetApplicationBundleID, 76 | _XCTestConfiguration._targetApplicationPath, _XCTestConfiguration._testBundleRelativePath, 77 | _XCTestConfiguration._testBundleURL, _XCTestConfiguration._testsMustRunOnMainThread, 78 | _XCTestConfiguration._testsToRun, _XCTestConfiguration._testsToSkip, 79 | _XCTestConfiguration._treatMissingBaselinesAsFailures ] 80 | ... 81 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/XCTest: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/XCTest.framework/XCTest -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/XCTest.tbd: -------------------------------------------------------------------------------- 1 | TextBasedStubs/XCTest.tbd -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/XPCServices/XCUIRecorderService.xpc/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/XCTest.framework/XPCServices/XCUIRecorderService.xpc/Info.plist -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/XPCServices/XCUIRecorderService.xpc/XCUIRecorderService: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/XCTest.framework/XPCServices/XCUIRecorderService.xpc/XCUIRecorderService -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/XPCServices/XCUIRecorderService.xpc/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Info.plist 8 | 9 | daPcUHeI7smI+bfNH/gYfd2XsCw= 10 | 11 | version.plist 12 | 13 | 6nbxw2NOojRpBQBLYqyQ0AtTz9Q= 14 | 15 | 16 | files2 17 | 18 | version.plist 19 | 20 | 6nbxw2NOojRpBQBLYqyQ0AtTz9Q= 21 | 22 | 23 | rules 24 | 25 | ^ 26 | 27 | ^.*\.lproj/ 28 | 29 | optional 30 | 31 | weight 32 | 1000 33 | 34 | ^.*\.lproj/locversion.plist$ 35 | 36 | omit 37 | 38 | weight 39 | 1100 40 | 41 | ^version.plist$ 42 | 43 | 44 | rules2 45 | 46 | .*\.dSYM($|/) 47 | 48 | weight 49 | 11 50 | 51 | ^ 52 | 53 | weight 54 | 20 55 | 56 | ^(.*/)?\.DS_Store$ 57 | 58 | omit 59 | 60 | weight 61 | 2000 62 | 63 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 64 | 65 | nested 66 | 67 | weight 68 | 10 69 | 70 | ^.* 71 | 72 | ^.*\.lproj/ 73 | 74 | optional 75 | 76 | weight 77 | 1000 78 | 79 | ^.*\.lproj/locversion.plist$ 80 | 81 | omit 82 | 83 | weight 84 | 1100 85 | 86 | ^Info\.plist$ 87 | 88 | omit 89 | 90 | weight 91 | 20 92 | 93 | ^PkgInfo$ 94 | 95 | omit 96 | 97 | weight 98 | 20 99 | 100 | ^[^/]+$ 101 | 102 | nested 103 | 104 | weight 105 | 10 106 | 107 | ^embedded\.provisionprofile$ 108 | 109 | weight 110 | 20 111 | 112 | ^version\.plist$ 113 | 114 | weight 115 | 20 116 | 117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/XPCServices/XCUIRecorderService.xpc/version.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildAliasOf 6 | XCTest 7 | BuildVersion 8 | 6 9 | CFBundleShortVersionString 10 | 1.0 11 | CFBundleVersion 12 | 1 13 | ProjectName 14 | XCTest_Sim 15 | SourceVersion 16 | 11134000000000000 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/XPCServices/xctestSymbolicator.xpc/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/XCTest.framework/XPCServices/xctestSymbolicator.xpc/Info.plist -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/XPCServices/xctestSymbolicator.xpc/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Info.plist 8 | 9 | 89+xmnpwc51/kL9aWeisnKZ8Znw= 10 | 11 | version.plist 12 | 13 | 6nbxw2NOojRpBQBLYqyQ0AtTz9Q= 14 | 15 | 16 | files2 17 | 18 | version.plist 19 | 20 | 6nbxw2NOojRpBQBLYqyQ0AtTz9Q= 21 | 22 | 23 | rules 24 | 25 | ^ 26 | 27 | ^.*\.lproj/ 28 | 29 | optional 30 | 31 | weight 32 | 1000 33 | 34 | ^.*\.lproj/locversion.plist$ 35 | 36 | omit 37 | 38 | weight 39 | 1100 40 | 41 | ^version.plist$ 42 | 43 | 44 | rules2 45 | 46 | .*\.dSYM($|/) 47 | 48 | weight 49 | 11 50 | 51 | ^ 52 | 53 | weight 54 | 20 55 | 56 | ^(.*/)?\.DS_Store$ 57 | 58 | omit 59 | 60 | weight 61 | 2000 62 | 63 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 64 | 65 | nested 66 | 67 | weight 68 | 10 69 | 70 | ^.* 71 | 72 | ^.*\.lproj/ 73 | 74 | optional 75 | 76 | weight 77 | 1000 78 | 79 | ^.*\.lproj/locversion.plist$ 80 | 81 | omit 82 | 83 | weight 84 | 1100 85 | 86 | ^Info\.plist$ 87 | 88 | omit 89 | 90 | weight 91 | 20 92 | 93 | ^PkgInfo$ 94 | 95 | omit 96 | 97 | weight 98 | 20 99 | 100 | ^[^/]+$ 101 | 102 | nested 103 | 104 | weight 105 | 10 106 | 107 | ^embedded\.provisionprofile$ 108 | 109 | weight 110 | 20 111 | 112 | ^version\.plist$ 113 | 114 | weight 115 | 20 116 | 117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/XPCServices/xctestSymbolicator.xpc/version.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildAliasOf 6 | XCTest 7 | BuildVersion 8 | 6 9 | CFBundleShortVersionString 10 | 1.0 11 | CFBundleVersion 12 | 1 13 | ProjectName 14 | XCTest_Sim 15 | SourceVersion 16 | 11134000000000000 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/XPCServices/xctestSymbolicator.xpc/xctestSymbolicator: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/XCTest.framework/XPCServices/xctestSymbolicator.xpc/xctestSymbolicator -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Headers/XCAbstractTest.h 8 | 9 | glimZR9g23UWmtfTfpa3DtRU32o= 10 | 11 | Headers/XCTest.h 12 | 13 | FeItRoIRWX9yeukRVtg0l8vKWu0= 14 | 15 | Headers/XCTestAssertions.h 16 | 17 | t430vwqgq3wiAocVV386i0N+lOY= 18 | 19 | Headers/XCTestAssertionsImpl.h 20 | 21 | ZbDVHohdSHIPtEqmg7zN34qa0T4= 22 | 23 | Headers/XCTestCase+AsynchronousTesting.h 24 | 25 | PL1ZOdDhdZzPNjCxecLsCysb3OQ= 26 | 27 | Headers/XCTestCase.h 28 | 29 | YzjVm663E0vT+P6c0ORX46w/zQ0= 30 | 31 | Headers/XCTestCaseRun.h 32 | 33 | /XUqDHA/BFdQDUxQU8Ft5LXo/Ps= 34 | 35 | Headers/XCTestDefines.h 36 | 37 | Dz7Tri4hztdVrwGfOLzpE53H3kk= 38 | 39 | Headers/XCTestErrors.h 40 | 41 | oZFqJmcKHuKZIgeKOwsFDxhfEEc= 42 | 43 | Headers/XCTestExpectation.h 44 | 45 | dwE0LefMLJ+L/tF8PwAW0Adc7I0= 46 | 47 | Headers/XCTestLog.h 48 | 49 | 9BU/gwbaKcfn2L9dfo2dHRFN6Bc= 50 | 51 | Headers/XCTestObservation.h 52 | 53 | 24hjfD82jAN7/PhxU8RiEWTo5gs= 54 | 55 | Headers/XCTestObservationCenter.h 56 | 57 | 0rP5BQIIjFP/HdaM97/A9mUteRg= 58 | 59 | Headers/XCTestObserver.h 60 | 61 | DV3Cjdd1CAe6nYFEzmUrCtnzxQg= 62 | 63 | Headers/XCTestProbe.h 64 | 65 | fIVR0xRsxMAabrJmeGX3hPDwL0Y= 66 | 67 | Headers/XCTestRun.h 68 | 69 | LAZ8VzMsuBB9pLfqrrnltc7bl1E= 70 | 71 | Headers/XCTestSuite.h 72 | 73 | 8I97NjqsYFEmiGVB5ZkFAdtT3ic= 74 | 75 | Headers/XCTestSuiteRun.h 76 | 77 | OX+g52bOAnhjLVDKkweTKM8jTHQ= 78 | 79 | Headers/XCUIApplication.h 80 | 81 | Dck9MbhtVGBeWIgQiEVEpTDtrTw= 82 | 83 | Headers/XCUICoordinate.h 84 | 85 | rWeryK2BMCp9F3/mp9BKm7kg/1Q= 86 | 87 | Headers/XCUIDevice.h 88 | 89 | 9pxehhPyrWb03igVA7PwEtgkzLM= 90 | 91 | Headers/XCUIElement.h 92 | 93 | uzgoVBBig+CJOMv+jyGE6Ou4lx0= 94 | 95 | Headers/XCUIElementAttributes.h 96 | 97 | kWitRD0ClLa1hUvctZ6Jw2DmOW8= 98 | 99 | Headers/XCUIElementQuery.h 100 | 101 | owQe3VU8ucSdoJ7QiOvOS/rHAww= 102 | 103 | Headers/XCUIElementTypeQueryProvider.h 104 | 105 | DEWr4Nmwz7JAy6EydZYQIYgpTlE= 106 | 107 | Headers/XCUIElementTypes.h 108 | 109 | KfkqELrdD/Tb6UOCWX6a7rizJmE= 110 | 111 | Headers/XCUIKeyboardKeys.h 112 | 113 | RE/yMpRDrcsUljcKW/YgNGkt5Oc= 114 | 115 | Headers/XCUIRemote.h 116 | 117 | GuQMu1KdZMJO3/yRBQHEbrVVv38= 118 | 119 | Info.plist 120 | 121 | o+6HjeXHIRU2pTtYGPfLcQ6ewRg= 122 | 123 | Modules/module.modulemap 124 | 125 | 0hPLcrGRiL8HEYGWbYL+qhcqBZI= 126 | 127 | TextBasedStubs/XCTest.tbd 128 | 129 | RHXSWYnDetHKL50HLNwIgcxIwd8= 130 | 131 | XPCServices/XCUIRecorderService.xpc/Info.plist 132 | 133 | daPcUHeI7smI+bfNH/gYfd2XsCw= 134 | 135 | XPCServices/XCUIRecorderService.xpc/XCUIRecorderService 136 | 137 | nRgHY0yfSkh+Rsgag2hvfV9HRVU= 138 | 139 | XPCServices/XCUIRecorderService.xpc/_CodeSignature/CodeResources 140 | 141 | MfcuT2iwFIPWAvNoShXgpSYyxn0= 142 | 143 | XPCServices/XCUIRecorderService.xpc/version.plist 144 | 145 | 6nbxw2NOojRpBQBLYqyQ0AtTz9Q= 146 | 147 | XPCServices/xctestSymbolicator.xpc/Info.plist 148 | 149 | 89+xmnpwc51/kL9aWeisnKZ8Znw= 150 | 151 | XPCServices/xctestSymbolicator.xpc/_CodeSignature/CodeResources 152 | 153 | hiVUAijYQPVQpb+mOEOKzyxTBsY= 154 | 155 | XPCServices/xctestSymbolicator.xpc/version.plist 156 | 157 | 6nbxw2NOojRpBQBLYqyQ0AtTz9Q= 158 | 159 | XPCServices/xctestSymbolicator.xpc/xctestSymbolicator 160 | 161 | 4P97BUzWBX1rxzp6PbF0u5ztZww= 162 | 163 | en.lproj/InfoPlist.strings 164 | 165 | hash 166 | 167 | WbY3O0G7IBs11w3Ll/yYYaDQvo8= 168 | 169 | optional 170 | 171 | 172 | version.plist 173 | 174 | NC0s8Ltayn5g2lVdYHthxSDTX7s= 175 | 176 | 177 | files2 178 | 179 | Headers/XCAbstractTest.h 180 | 181 | glimZR9g23UWmtfTfpa3DtRU32o= 182 | 183 | Headers/XCTest.h 184 | 185 | FeItRoIRWX9yeukRVtg0l8vKWu0= 186 | 187 | Headers/XCTestAssertions.h 188 | 189 | t430vwqgq3wiAocVV386i0N+lOY= 190 | 191 | Headers/XCTestAssertionsImpl.h 192 | 193 | ZbDVHohdSHIPtEqmg7zN34qa0T4= 194 | 195 | Headers/XCTestCase+AsynchronousTesting.h 196 | 197 | PL1ZOdDhdZzPNjCxecLsCysb3OQ= 198 | 199 | Headers/XCTestCase.h 200 | 201 | YzjVm663E0vT+P6c0ORX46w/zQ0= 202 | 203 | Headers/XCTestCaseRun.h 204 | 205 | /XUqDHA/BFdQDUxQU8Ft5LXo/Ps= 206 | 207 | Headers/XCTestDefines.h 208 | 209 | Dz7Tri4hztdVrwGfOLzpE53H3kk= 210 | 211 | Headers/XCTestErrors.h 212 | 213 | oZFqJmcKHuKZIgeKOwsFDxhfEEc= 214 | 215 | Headers/XCTestExpectation.h 216 | 217 | dwE0LefMLJ+L/tF8PwAW0Adc7I0= 218 | 219 | Headers/XCTestLog.h 220 | 221 | 9BU/gwbaKcfn2L9dfo2dHRFN6Bc= 222 | 223 | Headers/XCTestObservation.h 224 | 225 | 24hjfD82jAN7/PhxU8RiEWTo5gs= 226 | 227 | Headers/XCTestObservationCenter.h 228 | 229 | 0rP5BQIIjFP/HdaM97/A9mUteRg= 230 | 231 | Headers/XCTestObserver.h 232 | 233 | DV3Cjdd1CAe6nYFEzmUrCtnzxQg= 234 | 235 | Headers/XCTestProbe.h 236 | 237 | fIVR0xRsxMAabrJmeGX3hPDwL0Y= 238 | 239 | Headers/XCTestRun.h 240 | 241 | LAZ8VzMsuBB9pLfqrrnltc7bl1E= 242 | 243 | Headers/XCTestSuite.h 244 | 245 | 8I97NjqsYFEmiGVB5ZkFAdtT3ic= 246 | 247 | Headers/XCTestSuiteRun.h 248 | 249 | OX+g52bOAnhjLVDKkweTKM8jTHQ= 250 | 251 | Headers/XCUIApplication.h 252 | 253 | Dck9MbhtVGBeWIgQiEVEpTDtrTw= 254 | 255 | Headers/XCUICoordinate.h 256 | 257 | rWeryK2BMCp9F3/mp9BKm7kg/1Q= 258 | 259 | Headers/XCUIDevice.h 260 | 261 | 9pxehhPyrWb03igVA7PwEtgkzLM= 262 | 263 | Headers/XCUIElement.h 264 | 265 | uzgoVBBig+CJOMv+jyGE6Ou4lx0= 266 | 267 | Headers/XCUIElementAttributes.h 268 | 269 | kWitRD0ClLa1hUvctZ6Jw2DmOW8= 270 | 271 | Headers/XCUIElementQuery.h 272 | 273 | owQe3VU8ucSdoJ7QiOvOS/rHAww= 274 | 275 | Headers/XCUIElementTypeQueryProvider.h 276 | 277 | DEWr4Nmwz7JAy6EydZYQIYgpTlE= 278 | 279 | Headers/XCUIElementTypes.h 280 | 281 | KfkqELrdD/Tb6UOCWX6a7rizJmE= 282 | 283 | Headers/XCUIKeyboardKeys.h 284 | 285 | RE/yMpRDrcsUljcKW/YgNGkt5Oc= 286 | 287 | Headers/XCUIRemote.h 288 | 289 | GuQMu1KdZMJO3/yRBQHEbrVVv38= 290 | 291 | Modules/module.modulemap 292 | 293 | 0hPLcrGRiL8HEYGWbYL+qhcqBZI= 294 | 295 | TextBasedStubs/XCTest.tbd 296 | 297 | RHXSWYnDetHKL50HLNwIgcxIwd8= 298 | 299 | XCTest.tbd 300 | 301 | symlink 302 | TextBasedStubs/XCTest.tbd 303 | 304 | XPCServices/XCUIRecorderService.xpc/Info.plist 305 | 306 | daPcUHeI7smI+bfNH/gYfd2XsCw= 307 | 308 | XPCServices/XCUIRecorderService.xpc/XCUIRecorderService 309 | 310 | nRgHY0yfSkh+Rsgag2hvfV9HRVU= 311 | 312 | XPCServices/XCUIRecorderService.xpc/_CodeSignature/CodeResources 313 | 314 | MfcuT2iwFIPWAvNoShXgpSYyxn0= 315 | 316 | XPCServices/XCUIRecorderService.xpc/version.plist 317 | 318 | 6nbxw2NOojRpBQBLYqyQ0AtTz9Q= 319 | 320 | XPCServices/xctestSymbolicator.xpc/Info.plist 321 | 322 | 89+xmnpwc51/kL9aWeisnKZ8Znw= 323 | 324 | XPCServices/xctestSymbolicator.xpc/_CodeSignature/CodeResources 325 | 326 | hiVUAijYQPVQpb+mOEOKzyxTBsY= 327 | 328 | XPCServices/xctestSymbolicator.xpc/version.plist 329 | 330 | 6nbxw2NOojRpBQBLYqyQ0AtTz9Q= 331 | 332 | XPCServices/xctestSymbolicator.xpc/xctestSymbolicator 333 | 334 | 4P97BUzWBX1rxzp6PbF0u5ztZww= 335 | 336 | en.lproj/InfoPlist.strings 337 | 338 | hash 339 | 340 | WbY3O0G7IBs11w3Ll/yYYaDQvo8= 341 | 342 | optional 343 | 344 | 345 | version.plist 346 | 347 | NC0s8Ltayn5g2lVdYHthxSDTX7s= 348 | 349 | 350 | rules 351 | 352 | ^ 353 | 354 | ^.*\.lproj/ 355 | 356 | optional 357 | 358 | weight 359 | 1000 360 | 361 | ^.*\.lproj/locversion.plist$ 362 | 363 | omit 364 | 365 | weight 366 | 1100 367 | 368 | ^version.plist$ 369 | 370 | 371 | rules2 372 | 373 | .*\.dSYM($|/) 374 | 375 | weight 376 | 11 377 | 378 | ^ 379 | 380 | weight 381 | 20 382 | 383 | ^(.*/)?\.DS_Store$ 384 | 385 | omit 386 | 387 | weight 388 | 2000 389 | 390 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 391 | 392 | nested 393 | 394 | weight 395 | 10 396 | 397 | ^.* 398 | 399 | ^.*\.lproj/ 400 | 401 | optional 402 | 403 | weight 404 | 1000 405 | 406 | ^.*\.lproj/locversion.plist$ 407 | 408 | omit 409 | 410 | weight 411 | 1100 412 | 413 | ^Info\.plist$ 414 | 415 | omit 416 | 417 | weight 418 | 20 419 | 420 | ^PkgInfo$ 421 | 422 | omit 423 | 424 | weight 425 | 20 426 | 427 | ^[^/]+$ 428 | 429 | nested 430 | 431 | weight 432 | 10 433 | 434 | ^embedded\.provisionprofile$ 435 | 436 | weight 437 | 20 438 | 439 | ^version\.plist$ 440 | 441 | weight 442 | 20 443 | 444 | 445 | 446 | 447 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/XCTest.framework/en.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/XCTest.framework/version.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildAliasOf 6 | XCTest 7 | BuildVersion 8 | 6 9 | CFBundleShortVersionString 10 | 1.0 11 | CFBundleVersion 12 | 11134 13 | ProjectName 14 | XCTest_Sim 15 | SourceVersion 16 | 11134000000000000 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/libswiftCore.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/libswiftCore.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/libswiftCoreAudio.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/libswiftCoreAudio.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/libswiftCoreGraphics.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/libswiftCoreGraphics.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/libswiftCoreImage.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/libswiftCoreImage.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/libswiftCoreMedia.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/libswiftCoreMedia.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/libswiftDarwin.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/libswiftDarwin.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/libswiftDispatch.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/libswiftDispatch.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/libswiftFoundation.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/libswiftFoundation.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/libswiftObjectiveC.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/libswiftObjectiveC.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/libswiftUIKit.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/libswiftUIKit.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/Frameworks/libswiftos.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Frameworks/libswiftos.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/HelloOptimus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/HelloOptimus -------------------------------------------------------------------------------- /app/HelloOptimus.app/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/Info.plist -------------------------------------------------------------------------------- /app/HelloOptimus.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftCore.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftCore.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftCoreAudio.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftCoreAudio.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftCoreGraphics.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftCoreGraphics.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftCoreImage.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftCoreImage.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftCoreMedia.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftCoreMedia.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftDarwin.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftDarwin.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftDispatch.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftDispatch.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftFoundation.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftFoundation.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftObjectiveC.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftObjectiveC.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftUIKit.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftUIKit.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftXCTest.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftXCTest.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftos.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Frameworks/libswiftos.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/HelloOptimusTests: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/HelloOptimusTests -------------------------------------------------------------------------------- /app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/Info.plist -------------------------------------------------------------------------------- /app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Frameworks/libswiftCore.dylib 8 | 9 | LF41Uh0Sp4L1Z3yICK12sjRbUjs= 10 | 11 | Frameworks/libswiftCoreAudio.dylib 12 | 13 | rDzJs1nU4Z8U2a0rknvoLZ5LEO4= 14 | 15 | Frameworks/libswiftCoreGraphics.dylib 16 | 17 | GiTlUYKtNaSb4tIeIPM1luUQKhI= 18 | 19 | Frameworks/libswiftCoreImage.dylib 20 | 21 | D6k+A+gnFPQUBxniaJBEqkOvPpA= 22 | 23 | Frameworks/libswiftCoreMedia.dylib 24 | 25 | Ga30qH+StVOyoSgBBtTYnGBsa8k= 26 | 27 | Frameworks/libswiftDarwin.dylib 28 | 29 | JI9mWSWbrNTAgmEGtAHcrKH3nfs= 30 | 31 | Frameworks/libswiftDispatch.dylib 32 | 33 | n3BulE7mkUZ+qQ2lnIm/7/pcf5g= 34 | 35 | Frameworks/libswiftFoundation.dylib 36 | 37 | uF/sF/xbjxlaAhjVX8hawYPUcik= 38 | 39 | Frameworks/libswiftObjectiveC.dylib 40 | 41 | 4sQ5ITCtBahH9Q58pH53rQ/5vfo= 42 | 43 | Frameworks/libswiftUIKit.dylib 44 | 45 | Ch5Swd1niGl65CQmnfDLQiZaxDA= 46 | 47 | Frameworks/libswiftXCTest.dylib 48 | 49 | 2qOiGXX0JQkQgVfU3a5Iv7Y8ozc= 50 | 51 | Frameworks/libswiftos.dylib 52 | 53 | 3pGIqKcGBe5aYb7UlzMBucLGukM= 54 | 55 | Info.plist 56 | 57 | TD1By+xbUF+JNGsNxC4C3uEuPJY= 58 | 59 | libswiftRemoteMirror.dylib 60 | 61 | wyYX1cXEYB1a9v5ZrJt+Uy5NFG8= 62 | 63 | 64 | files2 65 | 66 | Frameworks/libswiftCore.dylib 67 | 68 | hash 69 | 70 | LF41Uh0Sp4L1Z3yICK12sjRbUjs= 71 | 72 | hash2 73 | 74 | PZgl7551/w0mzGRapHf+JXuFQ6G1jX3jxFhrO+SHjCI= 75 | 76 | 77 | Frameworks/libswiftCoreAudio.dylib 78 | 79 | hash 80 | 81 | rDzJs1nU4Z8U2a0rknvoLZ5LEO4= 82 | 83 | hash2 84 | 85 | i64MdQ0dZeY+5K82sCrSM1cPl9u9p3o5Urugv5u8B8M= 86 | 87 | 88 | Frameworks/libswiftCoreGraphics.dylib 89 | 90 | hash 91 | 92 | GiTlUYKtNaSb4tIeIPM1luUQKhI= 93 | 94 | hash2 95 | 96 | AljusE8LQqIa6xN4+H9bg3See3hL8zQybuGdrQpaX0s= 97 | 98 | 99 | Frameworks/libswiftCoreImage.dylib 100 | 101 | hash 102 | 103 | D6k+A+gnFPQUBxniaJBEqkOvPpA= 104 | 105 | hash2 106 | 107 | VBbBp7d2v/D9AK/U1wufre2FGc9mnnZEA4gJWPnW3mo= 108 | 109 | 110 | Frameworks/libswiftCoreMedia.dylib 111 | 112 | hash 113 | 114 | Ga30qH+StVOyoSgBBtTYnGBsa8k= 115 | 116 | hash2 117 | 118 | UJGpN/PA5nDMiWEKGyf9R2TjGpBn/rRG1TczqUh32gU= 119 | 120 | 121 | Frameworks/libswiftDarwin.dylib 122 | 123 | hash 124 | 125 | JI9mWSWbrNTAgmEGtAHcrKH3nfs= 126 | 127 | hash2 128 | 129 | MMzPVQ5XO5Dh0+LDlfKc3NZFJRL+t9eEeu6DAT81Z7U= 130 | 131 | 132 | Frameworks/libswiftDispatch.dylib 133 | 134 | hash 135 | 136 | n3BulE7mkUZ+qQ2lnIm/7/pcf5g= 137 | 138 | hash2 139 | 140 | /suKCuGzuAoGv8MD/0uTTyTCKBcg9Uh6hHUcyEPV08g= 141 | 142 | 143 | Frameworks/libswiftFoundation.dylib 144 | 145 | hash 146 | 147 | uF/sF/xbjxlaAhjVX8hawYPUcik= 148 | 149 | hash2 150 | 151 | qqzDRv8cKKOFiAPagp3QxzFXpSrM9hxIoEjI5H982SM= 152 | 153 | 154 | Frameworks/libswiftObjectiveC.dylib 155 | 156 | hash 157 | 158 | 4sQ5ITCtBahH9Q58pH53rQ/5vfo= 159 | 160 | hash2 161 | 162 | 5TNbgkrV4vReZbfZZ5TgmjRbWXS87koPZsuUJhlY60g= 163 | 164 | 165 | Frameworks/libswiftUIKit.dylib 166 | 167 | hash 168 | 169 | Ch5Swd1niGl65CQmnfDLQiZaxDA= 170 | 171 | hash2 172 | 173 | PjpjA1Dany6UcOGVFrT3FngrFqz+Hwz0TJSUsPLhNXI= 174 | 175 | 176 | Frameworks/libswiftXCTest.dylib 177 | 178 | hash 179 | 180 | 2qOiGXX0JQkQgVfU3a5Iv7Y8ozc= 181 | 182 | hash2 183 | 184 | R9CVRtGFh4RUGcUxLDqINLrBMp/b0bp4c5kUrXl6XDc= 185 | 186 | 187 | Frameworks/libswiftos.dylib 188 | 189 | hash 190 | 191 | 3pGIqKcGBe5aYb7UlzMBucLGukM= 192 | 193 | hash2 194 | 195 | LtcKRthlwopiSpRsPPza7t7nRkfzLry8PHNzyeHDJX8= 196 | 197 | 198 | libswiftRemoteMirror.dylib 199 | 200 | hash 201 | 202 | wyYX1cXEYB1a9v5ZrJt+Uy5NFG8= 203 | 204 | hash2 205 | 206 | CDNni4KOfGg4kqrp3FyST+ObUPYJe2ubnxJXbQKhVQU= 207 | 208 | 209 | 210 | rules 211 | 212 | ^ 213 | 214 | ^.*\.lproj/ 215 | 216 | optional 217 | 218 | weight 219 | 1000 220 | 221 | ^.*\.lproj/locversion.plist$ 222 | 223 | omit 224 | 225 | weight 226 | 1100 227 | 228 | ^Base\.lproj/ 229 | 230 | weight 231 | 1010 232 | 233 | ^version.plist$ 234 | 235 | 236 | rules2 237 | 238 | .*\.dSYM($|/) 239 | 240 | weight 241 | 11 242 | 243 | ^ 244 | 245 | weight 246 | 20 247 | 248 | ^(.*/)?\.DS_Store$ 249 | 250 | omit 251 | 252 | weight 253 | 2000 254 | 255 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 256 | 257 | nested 258 | 259 | weight 260 | 10 261 | 262 | ^.* 263 | 264 | ^.*\.lproj/ 265 | 266 | optional 267 | 268 | weight 269 | 1000 270 | 271 | ^.*\.lproj/locversion.plist$ 272 | 273 | omit 274 | 275 | weight 276 | 1100 277 | 278 | ^Base\.lproj/ 279 | 280 | weight 281 | 1010 282 | 283 | ^Info\.plist$ 284 | 285 | omit 286 | 287 | weight 288 | 20 289 | 290 | ^PkgInfo$ 291 | 292 | omit 293 | 294 | weight 295 | 20 296 | 297 | ^[^/]+$ 298 | 299 | nested 300 | 301 | weight 302 | 10 303 | 304 | ^embedded\.provisionprofile$ 305 | 306 | weight 307 | 20 308 | 309 | ^version\.plist$ 310 | 311 | weight 312 | 20 313 | 314 | 315 | 316 | 317 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/libswiftRemoteMirror.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/PlugIns/HelloOptimusTests.xctest/libswiftRemoteMirror.dylib -------------------------------------------------------------------------------- /app/HelloOptimus.app/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib 8 | 9 | gCOjxfoojtHIR5JYRbah3LxN2Cw= 10 | 11 | Base.lproj/LaunchScreen.storyboardc/Info.plist 12 | 13 | n2t8gsDpfE6XkhG31p7IQJRxTxU= 14 | 15 | Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib 16 | 17 | 6CAkippS8t4/XsyIQRmHSn8kZtY= 18 | 19 | Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib 20 | 21 | h06d9xW1IxPjgqJkgEqh9ZhOMV4= 22 | 23 | Base.lproj/Main.storyboardc/Info.plist 24 | 25 | MDrKFvFWroTb0+KEbQShBcoBvo4= 26 | 27 | Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib 28 | 29 | TOwI0Pccq/pxwQV9hiFFANaqGPI= 30 | 31 | Frameworks/libswiftCore.dylib 32 | 33 | LF41Uh0Sp4L1Z3yICK12sjRbUjs= 34 | 35 | Frameworks/libswiftCoreAudio.dylib 36 | 37 | rDzJs1nU4Z8U2a0rknvoLZ5LEO4= 38 | 39 | Frameworks/libswiftCoreGraphics.dylib 40 | 41 | GiTlUYKtNaSb4tIeIPM1luUQKhI= 42 | 43 | Frameworks/libswiftCoreImage.dylib 44 | 45 | D6k+A+gnFPQUBxniaJBEqkOvPpA= 46 | 47 | Frameworks/libswiftCoreMedia.dylib 48 | 49 | Ga30qH+StVOyoSgBBtTYnGBsa8k= 50 | 51 | Frameworks/libswiftDarwin.dylib 52 | 53 | JI9mWSWbrNTAgmEGtAHcrKH3nfs= 54 | 55 | Frameworks/libswiftDispatch.dylib 56 | 57 | n3BulE7mkUZ+qQ2lnIm/7/pcf5g= 58 | 59 | Frameworks/libswiftFoundation.dylib 60 | 61 | uF/sF/xbjxlaAhjVX8hawYPUcik= 62 | 63 | Frameworks/libswiftObjectiveC.dylib 64 | 65 | 4sQ5ITCtBahH9Q58pH53rQ/5vfo= 66 | 67 | Frameworks/libswiftUIKit.dylib 68 | 69 | Ch5Swd1niGl65CQmnfDLQiZaxDA= 70 | 71 | Frameworks/libswiftos.dylib 72 | 73 | 3pGIqKcGBe5aYb7UlzMBucLGukM= 74 | 75 | Info.plist 76 | 77 | 4dC6z0rkPT8g54xtKw4L0ROiaVI= 78 | 79 | PkgInfo 80 | 81 | n57qDP4tZfLD1rCS43W0B4LQjzE= 82 | 83 | libswiftRemoteMirror.dylib 84 | 85 | wyYX1cXEYB1a9v5ZrJt+Uy5NFG8= 86 | 87 | 88 | files2 89 | 90 | Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib 91 | 92 | hash 93 | 94 | gCOjxfoojtHIR5JYRbah3LxN2Cw= 95 | 96 | hash2 97 | 98 | s+DqNQbgFlpJ5KIvfzSJ6+tj9dZTQXncwh5eGiGE9nM= 99 | 100 | 101 | Base.lproj/LaunchScreen.storyboardc/Info.plist 102 | 103 | hash 104 | 105 | n2t8gsDpfE6XkhG31p7IQJRxTxU= 106 | 107 | hash2 108 | 109 | HyVdXMU7Ux4/KalAao30mpWOK/lEPT4gvYN09wf31cg= 110 | 111 | 112 | Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib 113 | 114 | hash 115 | 116 | 6CAkippS8t4/XsyIQRmHSn8kZtY= 117 | 118 | hash2 119 | 120 | X8lFX/FwFmeGSyjrY8DpgCmjsbXqQx43EW7aqQNSo1Y= 121 | 122 | 123 | Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib 124 | 125 | hash 126 | 127 | h06d9xW1IxPjgqJkgEqh9ZhOMV4= 128 | 129 | hash2 130 | 131 | lEV+yOEB8sy3EgA4toT8DgBddAnHMDbuwmP81GRcE+Q= 132 | 133 | 134 | Base.lproj/Main.storyboardc/Info.plist 135 | 136 | hash 137 | 138 | MDrKFvFWroTb0+KEbQShBcoBvo4= 139 | 140 | hash2 141 | 142 | PpvapAjR62rl6Ym4E6hkTgpKmBICxTaQXeUqcpHmmqQ= 143 | 144 | 145 | Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib 146 | 147 | hash 148 | 149 | TOwI0Pccq/pxwQV9hiFFANaqGPI= 150 | 151 | hash2 152 | 153 | BDfHtwcNw0kvEm+CiO/lLleYbVrP9Snz5s17HyKjjw0= 154 | 155 | 156 | Frameworks/libswiftCore.dylib 157 | 158 | hash 159 | 160 | LF41Uh0Sp4L1Z3yICK12sjRbUjs= 161 | 162 | hash2 163 | 164 | PZgl7551/w0mzGRapHf+JXuFQ6G1jX3jxFhrO+SHjCI= 165 | 166 | 167 | Frameworks/libswiftCoreAudio.dylib 168 | 169 | hash 170 | 171 | rDzJs1nU4Z8U2a0rknvoLZ5LEO4= 172 | 173 | hash2 174 | 175 | i64MdQ0dZeY+5K82sCrSM1cPl9u9p3o5Urugv5u8B8M= 176 | 177 | 178 | Frameworks/libswiftCoreGraphics.dylib 179 | 180 | hash 181 | 182 | GiTlUYKtNaSb4tIeIPM1luUQKhI= 183 | 184 | hash2 185 | 186 | AljusE8LQqIa6xN4+H9bg3See3hL8zQybuGdrQpaX0s= 187 | 188 | 189 | Frameworks/libswiftCoreImage.dylib 190 | 191 | hash 192 | 193 | D6k+A+gnFPQUBxniaJBEqkOvPpA= 194 | 195 | hash2 196 | 197 | VBbBp7d2v/D9AK/U1wufre2FGc9mnnZEA4gJWPnW3mo= 198 | 199 | 200 | Frameworks/libswiftCoreMedia.dylib 201 | 202 | hash 203 | 204 | Ga30qH+StVOyoSgBBtTYnGBsa8k= 205 | 206 | hash2 207 | 208 | UJGpN/PA5nDMiWEKGyf9R2TjGpBn/rRG1TczqUh32gU= 209 | 210 | 211 | Frameworks/libswiftDarwin.dylib 212 | 213 | hash 214 | 215 | JI9mWSWbrNTAgmEGtAHcrKH3nfs= 216 | 217 | hash2 218 | 219 | MMzPVQ5XO5Dh0+LDlfKc3NZFJRL+t9eEeu6DAT81Z7U= 220 | 221 | 222 | Frameworks/libswiftDispatch.dylib 223 | 224 | hash 225 | 226 | n3BulE7mkUZ+qQ2lnIm/7/pcf5g= 227 | 228 | hash2 229 | 230 | /suKCuGzuAoGv8MD/0uTTyTCKBcg9Uh6hHUcyEPV08g= 231 | 232 | 233 | Frameworks/libswiftFoundation.dylib 234 | 235 | hash 236 | 237 | uF/sF/xbjxlaAhjVX8hawYPUcik= 238 | 239 | hash2 240 | 241 | qqzDRv8cKKOFiAPagp3QxzFXpSrM9hxIoEjI5H982SM= 242 | 243 | 244 | Frameworks/libswiftObjectiveC.dylib 245 | 246 | hash 247 | 248 | 4sQ5ITCtBahH9Q58pH53rQ/5vfo= 249 | 250 | hash2 251 | 252 | 5TNbgkrV4vReZbfZZ5TgmjRbWXS87koPZsuUJhlY60g= 253 | 254 | 255 | Frameworks/libswiftUIKit.dylib 256 | 257 | hash 258 | 259 | Ch5Swd1niGl65CQmnfDLQiZaxDA= 260 | 261 | hash2 262 | 263 | PjpjA1Dany6UcOGVFrT3FngrFqz+Hwz0TJSUsPLhNXI= 264 | 265 | 266 | Frameworks/libswiftos.dylib 267 | 268 | hash 269 | 270 | 3pGIqKcGBe5aYb7UlzMBucLGukM= 271 | 272 | hash2 273 | 274 | LtcKRthlwopiSpRsPPza7t7nRkfzLry8PHNzyeHDJX8= 275 | 276 | 277 | libswiftRemoteMirror.dylib 278 | 279 | hash 280 | 281 | wyYX1cXEYB1a9v5ZrJt+Uy5NFG8= 282 | 283 | hash2 284 | 285 | CDNni4KOfGg4kqrp3FyST+ObUPYJe2ubnxJXbQKhVQU= 286 | 287 | 288 | 289 | rules 290 | 291 | ^ 292 | 293 | ^.*\.lproj/ 294 | 295 | optional 296 | 297 | weight 298 | 1000 299 | 300 | ^.*\.lproj/locversion.plist$ 301 | 302 | omit 303 | 304 | weight 305 | 1100 306 | 307 | ^Base\.lproj/ 308 | 309 | weight 310 | 1010 311 | 312 | ^version.plist$ 313 | 314 | 315 | rules2 316 | 317 | .*\.dSYM($|/) 318 | 319 | weight 320 | 11 321 | 322 | ^ 323 | 324 | weight 325 | 20 326 | 327 | ^(.*/)?\.DS_Store$ 328 | 329 | omit 330 | 331 | weight 332 | 2000 333 | 334 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 335 | 336 | nested 337 | 338 | weight 339 | 10 340 | 341 | ^.* 342 | 343 | ^.*\.lproj/ 344 | 345 | optional 346 | 347 | weight 348 | 1000 349 | 350 | ^.*\.lproj/locversion.plist$ 351 | 352 | omit 353 | 354 | weight 355 | 1100 356 | 357 | ^Base\.lproj/ 358 | 359 | weight 360 | 1010 361 | 362 | ^Info\.plist$ 363 | 364 | omit 365 | 366 | weight 367 | 20 368 | 369 | ^PkgInfo$ 370 | 371 | omit 372 | 373 | weight 374 | 20 375 | 376 | ^[^/]+$ 377 | 378 | nested 379 | 380 | weight 381 | 10 382 | 383 | ^embedded\.provisionprofile$ 384 | 385 | weight 386 | 20 387 | 388 | ^version\.plist$ 389 | 390 | weight 391 | 20 392 | 393 | 394 | 395 | 396 | -------------------------------------------------------------------------------- /app/HelloOptimus.app/libswiftRemoteMirror.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/HelloOptimus.app/libswiftRemoteMirror.dylib -------------------------------------------------------------------------------- /app/hellooptimus.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/app/hellooptimus.apk -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java' 2 | apply plugin: 'groovy' 3 | apply plugin: 'idea' 4 | apply plugin: 'maven' 5 | apply plugin: "com.testvagrant.optimus.plugin" 6 | /* 7 | IMPORTANT: Optimus extension is required to run optimus plugin. 8 | */ 9 | optimus { 10 | testFeed = System.getProperty("testFeed"); 11 | tags = System.getProperty("tags"); 12 | devMode = System.getProperty("devMode"); 13 | regression = System.getProperty("regression"); 14 | env = System.getProperty("env", "integration"); 15 | classpath = sourceSets.test.runtimeClasspath 16 | } 17 | 18 | service { 19 | database = System.getProperty("database", "optimus") 20 | port = System.getProperty("port", "8090") 21 | uri = System.getProperty("uri", "mongodb://localhost:27017") 22 | } 23 | 24 | //Optimus Execution Rules 25 | tasks.runFragmentation.dependsOn 'clean', 'build','spinServices' 26 | tasks.runDistribution.dependsOn 'clean', 'build','spinServices' 27 | tasks.build.mustRunAfter 'clean' 28 | tasks.runFragmentation.finalizedBy 'fragmentationReport' 29 | tasks.runDistribution.finalizedBy 'distributionReport' 30 | tasks.fragmentationReport.finalizedBy 'stopServices' 31 | tasks.distributionReport.finalizedBy 'stopServices' 32 | 33 | buildscript { 34 | repositories { 35 | maven { 36 | url "https://plugins.gradle.org/m2/" 37 | } 38 | mavenCentral() 39 | } 40 | dependencies { 41 | classpath "gradle.plugin.com.testvagrant.optimus:OptimusGradle:3.0.1" 42 | } 43 | 44 | } 45 | 46 | repositories { 47 | mavenCentral() 48 | jcenter() 49 | 50 | } 51 | 52 | 53 | dependencies { 54 | compile 'org.codehaus.groovy:groovy-all:2.5.6' 55 | compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.6.0' 56 | 57 | compile 'cglib:cglib:3.2.4' 58 | 59 | compile group: 'com.testvagrant', name: 'optimus', version: '3.0.2' 60 | compile 'com.testvagrant.stepdefs:stepdefs:1.0.8' 61 | compile 'com.testvagrant.intents:intents:1.0.6' 62 | 63 | testCompile('com.google.inject:guice:3.0') 64 | testCompile(group: 'com.googlecode.lambdaj', name: 'lambdaj', version: '2.3.3') 65 | testCompile(group: 'org.json', name: 'json', version: '20131018') 66 | compile group: 'com.google.guava', name: 'guava', version: '22.0' 67 | } 68 | 69 | 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /docs/AppiumServerCapabilities.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/AppiumServerCapabilities.png -------------------------------------------------------------------------------- /docs/CommonAttributes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/CommonAttributes.png -------------------------------------------------------------------------------- /docs/CreateOptProject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/CreateOptProject.png -------------------------------------------------------------------------------- /docs/HelloOptimus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/HelloOptimus.png -------------------------------------------------------------------------------- /docs/HelloOptimus1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/HelloOptimus1.png -------------------------------------------------------------------------------- /docs/HelloOptimusIos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/HelloOptimusIos.png -------------------------------------------------------------------------------- /docs/Optimus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/Optimus.png -------------------------------------------------------------------------------- /docs/eclipse/Step2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/eclipse/Step2.png -------------------------------------------------------------------------------- /docs/eclipse/Step3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/eclipse/Step3.png -------------------------------------------------------------------------------- /docs/eclipse/Step4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/eclipse/Step4.png -------------------------------------------------------------------------------- /docs/eclipse/Step5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/eclipse/Step5.png -------------------------------------------------------------------------------- /docs/eclipse/Step6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/eclipse/Step6.png -------------------------------------------------------------------------------- /docs/eclipse/Step7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/eclipse/Step7.png -------------------------------------------------------------------------------- /docs/eclipse/Step8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/eclipse/Step8.png -------------------------------------------------------------------------------- /docs/eclipse/step1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/eclipse/step1.png -------------------------------------------------------------------------------- /docs/intellij/Step1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/intellij/Step1.png -------------------------------------------------------------------------------- /docs/intellij/Step10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/intellij/Step10.png -------------------------------------------------------------------------------- /docs/intellij/Step2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/intellij/Step2.png -------------------------------------------------------------------------------- /docs/intellij/Step3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/intellij/Step3.png -------------------------------------------------------------------------------- /docs/intellij/Step4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/intellij/Step4.png -------------------------------------------------------------------------------- /docs/intellij/Step5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/intellij/Step5.png -------------------------------------------------------------------------------- /docs/intellij/Step6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/intellij/Step6.png -------------------------------------------------------------------------------- /docs/intellij/Step7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/intellij/Step7.png -------------------------------------------------------------------------------- /docs/intellij/Step8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/intellij/Step8.png -------------------------------------------------------------------------------- /docs/intellij/Step9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/docs/intellij/Step9.png -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Thu May 18 10:06:48 IST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip 7 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Attempt to set APP_HOME 10 | # Resolve links: $0 may be a link 11 | PRG="$0" 12 | # Need this for relative symlinks. 13 | while [ -h "$PRG" ] ; do 14 | ls=`ls -ld "$PRG"` 15 | link=`expr "$ls" : '.*-> \(.*\)$'` 16 | if expr "$link" : '/.*' > /dev/null; then 17 | PRG="$link" 18 | else 19 | PRG=`dirname "$PRG"`"/$link" 20 | fi 21 | done 22 | SAVED="`pwd`" 23 | cd "`dirname \"$PRG\"`/" >/dev/null 24 | APP_HOME="`pwd -P`" 25 | cd "$SAVED" >/dev/null 26 | 27 | APP_NAME="Gradle" 28 | APP_BASE_NAME=`basename "$0"` 29 | 30 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 31 | DEFAULT_JVM_OPTS="" 32 | 33 | # Use the maximum available, or set MAX_FD != -1 to use that value. 34 | MAX_FD="maximum" 35 | 36 | warn ( ) { 37 | echo "$*" 38 | } 39 | 40 | die ( ) { 41 | echo 42 | echo "$*" 43 | echo 44 | exit 1 45 | } 46 | 47 | # OS specific support (must be 'true' or 'false'). 48 | cygwin=false 49 | msys=false 50 | darwin=false 51 | nonstop=false 52 | case "`uname`" in 53 | CYGWIN* ) 54 | cygwin=true 55 | ;; 56 | Darwin* ) 57 | darwin=true 58 | ;; 59 | MINGW* ) 60 | msys=true 61 | ;; 62 | NONSTOP* ) 63 | nonstop=true 64 | ;; 65 | esac 66 | 67 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 68 | 69 | # Determine the Java command to use to start the JVM. 70 | if [ -n "$JAVA_HOME" ] ; then 71 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 72 | # IBM's JDK on AIX uses strange locations for the executables 73 | JAVACMD="$JAVA_HOME/jre/sh/java" 74 | else 75 | JAVACMD="$JAVA_HOME/bin/java" 76 | fi 77 | if [ ! -x "$JAVACMD" ] ; then 78 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 79 | 80 | Please set the JAVA_HOME variable in your environment to match the 81 | location of your Java installation." 82 | fi 83 | else 84 | JAVACMD="java" 85 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 86 | 87 | Please set the JAVA_HOME variable in your environment to match the 88 | location of your Java installation." 89 | fi 90 | 91 | # Increase the maximum file descriptors if we can. 92 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then 93 | MAX_FD_LIMIT=`ulimit -H -n` 94 | if [ $? -eq 0 ] ; then 95 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 96 | MAX_FD="$MAX_FD_LIMIT" 97 | fi 98 | ulimit -n $MAX_FD 99 | if [ $? -ne 0 ] ; then 100 | warn "Could not set maximum file descriptor limit: $MAX_FD" 101 | fi 102 | else 103 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 104 | fi 105 | fi 106 | 107 | # For Darwin, add options to specify how the application appears in the dock 108 | if $darwin; then 109 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 110 | fi 111 | 112 | # For Cygwin, switch paths to Windows format before running java 113 | if $cygwin ; then 114 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 115 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 116 | JAVACMD=`cygpath --unix "$JAVACMD"` 117 | 118 | # We build the pattern for arguments to be converted via cygpath 119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 120 | SEP="" 121 | for dir in $ROOTDIRSRAW ; do 122 | ROOTDIRS="$ROOTDIRS$SEP$dir" 123 | SEP="|" 124 | done 125 | OURCYGPATTERN="(^($ROOTDIRS))" 126 | # Add a user-defined pattern to the cygpath arguments 127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 129 | fi 130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 131 | i=0 132 | for arg in "$@" ; do 133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 135 | 136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 138 | else 139 | eval `echo args$i`="\"$arg\"" 140 | fi 141 | i=$((i+1)) 142 | done 143 | case $i in 144 | (0) set -- ;; 145 | (1) set -- "$args0" ;; 146 | (2) set -- "$args0" "$args1" ;; 147 | (3) set -- "$args0" "$args1" "$args2" ;; 148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 154 | esac 155 | fi 156 | 157 | # Escape application args 158 | save ( ) { 159 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done 160 | echo " " 161 | } 162 | APP_ARGS=$(save "$@") 163 | 164 | # Collect all arguments for the java command, following the shell quoting and substitution rules 165 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" 166 | 167 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong 168 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then 169 | cd "$(dirname "$0")" 170 | fi 171 | 172 | exec "$JAVACMD" "$@" 173 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | set DIRNAME=%~dp0 12 | if "%DIRNAME%" == "" set DIRNAME=. 13 | set APP_BASE_NAME=%~n0 14 | set APP_HOME=%DIRNAME% 15 | 16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 17 | set DEFAULT_JVM_OPTS= 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windows variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | 53 | :win9xME_args 54 | @rem Slurp the command line arguments. 55 | set CMD_LINE_ARGS= 56 | set _SKIP=2 57 | 58 | :win9xME_args_slurp 59 | if "x%~1" == "x" goto execute 60 | 61 | set CMD_LINE_ARGS=%* 62 | 63 | :execute 64 | @rem Setup the command line 65 | 66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 67 | 68 | @rem Execute Gradle 69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 70 | 71 | :end 72 | @rem End local scope for the variables with windows NT shell 73 | if "%ERRORLEVEL%"=="0" goto mainEnd 74 | 75 | :fail 76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 77 | rem the _cmd.exe /c_ return code! 78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 79 | exit /b 1 80 | 81 | :mainEnd 82 | if "%OS%"=="Windows_NT" endlocal 83 | 84 | :omega 85 | -------------------------------------------------------------------------------- /libs/optimus-services-2.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/libs/optimus-services-2.0.jar -------------------------------------------------------------------------------- /optimusTemplate.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/test/java/pages/HelloOptimusPage.java: -------------------------------------------------------------------------------- 1 | package pages; 2 | 3 | import io.appium.java_client.AppiumDriver; 4 | import org.openqa.selenium.WebElement; 5 | import org.openqa.selenium.support.FindBy; 6 | import org.openqa.selenium.support.PageFactory; 7 | 8 | public class HelloOptimusPage extends BasePage { 9 | private AppiumDriver driver; 10 | 11 | @FindBy(id = "welcome_message") 12 | private WebElement welcomeMessage; 13 | 14 | public static final String MESSAGE = "Welcome to Optimus!! You are all ready to experience Automation like never before."; 15 | public HelloOptimusPage(AppiumDriver driver) { 16 | super(driver); 17 | PageFactory.initElements(driver,this); 18 | this.driver = driver; 19 | } 20 | 21 | public String getWelcomeMessage() { 22 | waitForElementToBeVisible(welcomeMessage); 23 | return welcomeMessage.getText(); 24 | } 25 | 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/test/java/steps/BaseSteps.java: -------------------------------------------------------------------------------- 1 | package steps; 2 | 3 | import com.testvagrant.commons.entities.SmartBOT; 4 | import com.testvagrant.optimus.device.OptimusController; 5 | import io.appium.java_client.AppiumDriver; 6 | import utils.OptimusImpl; 7 | 8 | import java.util.List; 9 | 10 | public class BaseSteps { 11 | 12 | 13 | protected static OptimusImpl optimus; 14 | protected static OptimusController controller; 15 | protected static List smartBOTs; 16 | 17 | protected AppiumDriver getDriverInstanceFor(String appConsumer) { 18 | return getSmartBOTBelongingTo(appConsumer).getDriver(); 19 | } 20 | 21 | protected SmartBOT getSmartBOTBelongingTo(String appConsumer) { 22 | return optimus.findBOTFor(appConsumer); 23 | } 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/test/java/steps/GenericSteps.java: -------------------------------------------------------------------------------- 1 | package steps; 2 | 3 | import com.testvagrant.commons.exceptions.OptimusException; 4 | import com.testvagrant.stepdefs.exceptions.NoSuchEventException; 5 | import cucumber.api.java.en.And; 6 | import cucumber.api.java.en.Given; 7 | 8 | import java.io.IOException; 9 | 10 | import static com.testvagrant.stepdefs.core.Tapster.tapster; 11 | 12 | public class GenericSteps extends BaseSteps { 13 | @Given("^(\\w+)\\s+on\\s+(\\w+)\\s+screen\\s+(\\w+)\\s+on\\s+(\\w+)\\s+value\\s+(.*)$") 14 | public void consumerOnScreenPerformsActionOnElementWithValue(String consumer, String screen, String action, String element, String value) throws NoSuchEventException, OptimusException, IOException { 15 | tapster().useDriver(getDriverInstanceFor(consumer)) 16 | .asConsumer(consumer) 17 | .onScreen(screen) 18 | .onElement(element) 19 | .doAction(action) 20 | .withValue(value) 21 | .serve(); 22 | } 23 | 24 | @And("^(\\w+)\\s+on\\s+(\\w+)\\s+screen\\s+(\\w+)\\s+on\\s+(\\w+)$") 25 | public void consumerOnScreenPerformsActionOnElement(String consumer, String screen, String action, String element) throws OptimusException, NoSuchEventException, IOException { 26 | tapster().useDriver(getDriverInstanceFor(consumer)) 27 | .onScreen(screen) 28 | .asConsumer(consumer) 29 | .onElement(element) 30 | .doAction(action) 31 | .serve(); 32 | } 33 | 34 | @And("^(\\w+)\\s+on\\s+(\\w+)\\sscreen verifies\\s+(\\w+)\\s+is\\s+(.*)$") 35 | public void assertelement(String consumer, String screen, String element, String action) throws NoSuchEventException, IOException, OptimusException { 36 | tapster().useDriver(getDriverInstanceFor(consumer)) 37 | .onScreen(screen) 38 | .asConsumer(consumer) 39 | .onElement(element) 40 | .doAction(action) 41 | .serve(); 42 | } 43 | 44 | @And("^(\\w+)\\s+on\\s+(\\w+)\\sscreen verifies\\s+(\\w+)\\s+has\\s+(\\w+)\\s+value\\s+(.*)$") 45 | public void assertelementwithvalue(String consumer, String screen, String element, String action, String value) throws OptimusException, NoSuchEventException, IOException { 46 | tapster().useDriver(getDriverInstanceFor(consumer)) 47 | .onScreen(screen) 48 | .asConsumer(consumer) 49 | .onElement(element) 50 | .doAction(action) 51 | .withValue(value) 52 | .serve(); 53 | } 54 | 55 | @And("^(\\w+)\\s+on\\s+(\\w+)\\s+screen\\s+(\\w+)\\s+on\\s+(\\w+)\\s+with index as\\s+(\\w+)\\s+and value is\\s+(.*)$") 56 | public void consumerOnScreenPerformsActionOnListOfElementsWithValue(String consumer, String screen, String action, String element, int index, String value) throws NoSuchEventException, OptimusException, IOException, InterruptedException { 57 | tapster().useDriver(getDriverInstanceFor(consumer)) 58 | .asConsumer(consumer) 59 | .onScreen(screen) 60 | .onElement(element) 61 | .doAction(action) 62 | .withIndex(index) 63 | .withValue(value) 64 | .serve(); 65 | } 66 | 67 | @And("^(\\w+)\\s+on\\s+(\\w+)\\s+screen\\s+(\\w+)\\s+on\\s+(\\w+)\\s+with index as\\s+(\\w+)$") 68 | public void consumerOnScreenPerformsActionOnListOfElements(String consumer, String screen, String action, String element, int index) throws NoSuchEventException, OptimusException, IOException, InterruptedException { 69 | tapster().useDriver(getDriverInstanceFor(consumer)) 70 | .asConsumer(consumer) 71 | .onScreen(screen) 72 | .onElement(element) 73 | .doAction(action) 74 | .withIndex(index) 75 | .serve(); 76 | } 77 | 78 | @Given("^(\\w+)\\s+on\\s+(\\w+)\\s+screen\\s+performs\\s+(.*)$") 79 | public void consumerOnScreenPerformsNavigation(String consumer, String screen, String navigation) throws NoSuchEventException, IOException, OptimusException { 80 | tapster().useDriver(getDriverInstanceFor(consumer)) 81 | .asConsumer(consumer) 82 | .onScreen(screen) 83 | .doAction(navigation) 84 | .serve(); 85 | } 86 | 87 | @Given("^I am running this scenario in parrallel on IOS$") 88 | public void iAmRunningThisScenarioInParrallelOnIOS() throws Throwable { 89 | System.out.println("Something Ran"); 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /src/test/java/steps/HelloOptimusSteps.java: -------------------------------------------------------------------------------- 1 | package steps; 2 | 3 | import cucumber.api.java.en.Given; 4 | import org.junit.Assert; 5 | import pages.HelloOptimusPage; 6 | 7 | public class HelloOptimusSteps extends BaseSteps { 8 | 9 | @Given("^I get a welcome message on successful execution of my hello optimus project$") 10 | public void iGetAWelcomeMessageOnSuccessfulExecutionOfMyHelloOptimusProject() throws Throwable { 11 | HelloOptimusPage helloOptimusPage = new HelloOptimusPage(getDriverInstanceFor("optimus")); 12 | String welcomeMessage = helloOptimusPage.getWelcomeMessage(); 13 | Assert.assertEquals(HelloOptimusPage.MESSAGE,welcomeMessage); 14 | Assert.fail("testing failure"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/test/java/steps/StartingSteps.java: -------------------------------------------------------------------------------- 1 | package steps; 2 | 3 | import com.testvagrant.commons.utils.JsonUtil; 4 | import com.testvagrant.monitor.exceptions.DeviceReleaseException; 5 | import com.testvagrant.optimus.device.OptimusController; 6 | import cucumber.api.Scenario; 7 | import cucumber.api.java.After; 8 | import cucumber.api.java.Before; 9 | import utils.OptimusImpl; 10 | 11 | import java.io.IOException; 12 | 13 | 14 | public class StartingSteps extends BaseSteps { 15 | 16 | @Before 17 | public void setUp(Scenario scenario) throws Exception { 18 | String testFeed = System.getProperty("testFeed") + ".json"; 19 | String appJson = new JsonUtil().getAppJson(testFeed); 20 | controller = new OptimusController(appJson, scenario); 21 | smartBOTs = controller.registerSmartBOTs(); 22 | System.out.println("Appium Services are..."+smartBOTs.size()); 23 | smartBOTs.forEach(smartBOT -> System.out.println(smartBOT.getAppiumService())); 24 | optimus = new OptimusImpl(smartBOTs); 25 | } 26 | 27 | @After 28 | public void tearDown(Scenario scenario) throws IOException, DeviceReleaseException { 29 | if (scenario.isFailed()) { 30 | byte[] failedScreens = optimus.getScreenCapture(); 31 | scenario.embed(failedScreens, "image/png"); 32 | } 33 | controller.deRegisterSmartBOTs(smartBOTs); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/test/java/utils/OptimusImpl.java: -------------------------------------------------------------------------------- 1 | package utils; 2 | 3 | import com.testvagrant.commons.entities.SmartBOT; 4 | import com.testvagrant.optimus.utils.ScreenShotGenerator; 5 | 6 | import java.io.IOException; 7 | import java.util.List; 8 | 9 | public class OptimusImpl { 10 | 11 | 12 | private List smartBOTs; 13 | 14 | public OptimusImpl(List smartBOTs) { 15 | this.smartBOTs = smartBOTs; 16 | } 17 | 18 | public SmartBOT findBOTFor(String appConsumer) { 19 | SmartBOT smartBOT = smartBOTs.stream() 20 | .filter(s -> s.getBelongsTo().equals(appConsumer)) 21 | .findFirst().get(); 22 | return smartBOT; 23 | } 24 | 25 | 26 | public byte[] getScreenCapture() throws IOException { 27 | return new ScreenShotGenerator(smartBOTs).getFailureImage(); 28 | } 29 | 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/test/resources/HelloOptimusAndroid.json: -------------------------------------------------------------------------------- 1 | { 2 | "executionDetails": { 3 | "appium_js_path": "/usr/local/bin/appium", 4 | "appium_node_path": "/usr/local/bin/node", 5 | "monitoring":true 6 | }, 7 | "testFeed":[ 8 | { 9 | "belongsTo":"optimus", 10 | "runsOn": "any", 11 | "appDir": "app", 12 | "nativeApp":true, 13 | "optimusDesiredCapabilities": { 14 | "appiumServerCapabilities": { 15 | "app": "HelloOptimus.apk", 16 | "platformName": "Android" 17 | }, 18 | "androidOnlyCapabilities": { 19 | "appActivity": "com.testvagrant.hellooptimus.MainActivity", 20 | "appPackage": "com.testvagrant.hellooptimus", 21 | "avdLaunchTimeout": 300000, 22 | "useKeystore": false 23 | } 24 | }, 25 | "deviceState": { 26 | "captureVideo": true 27 | } 28 | } 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /src/test/resources/HelloOptimusIOS.json: -------------------------------------------------------------------------------- 1 | { 2 | "executionDetails": { 3 | "appium_js_path": "/usr/local/bin/appium", 4 | "appium_node_path": "/usr/local/bin/node" 5 | }, 6 | "testFeed": [ 7 | { 8 | "belongsTo": "optimus", 9 | "runsOn": "simulator", 10 | "appDir": "app", 11 | "nativeApp":true, 12 | "optimusDesiredCapabilities": { 13 | "appiumServerCapabilities": { 14 | "app": "HelloOptimus.app", 15 | "platformName": "iOS", 16 | "platformVersion": "9.3", 17 | "deviceName": "iPhone 5s", 18 | "automationName": "XcuiTest" 19 | }, 20 | "iOSOnlyCapabilities": { 21 | "launchTimeout": 300000, 22 | "useNewWDA": false, 23 | "showXcodeLog": true 24 | } 25 | } 26 | } 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /src/test/resources/META-INF/Optimus.yaml: -------------------------------------------------------------------------------- 1 | # Sets the locators file format, you could use either elements/json/xls/xlsx file format, however default is json 2 | # eg: elementsFormat: json 3 | elementsFormat: elements 4 | 5 | #Overwrite the port if someother application is listening to 27017 6 | mongoPort: 27017 7 | 8 | #Overwrite wait time depending on your application 9 | webDriverWait: 30 -------------------------------------------------------------------------------- /src/test/resources/elements/HelloOptimus.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tvarchive/optimusTemplate/66d91d6a27c8ac2848a2b8171b578cd6f5641813/src/test/resources/elements/HelloOptimus.xlsx -------------------------------------------------------------------------------- /src/test/resources/elements/HelloOptimus/CommonElements.elements: -------------------------------------------------------------------------------- 1 | { 2 | "elements":[ 3 | { 4 | "elementName":"WelcomeMessageCommon", 5 | "identifier":"id", 6 | "value":"welcome_message" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/test/resources/elements/HelloOptimus/Home.elements: -------------------------------------------------------------------------------- 1 | { 2 | "elements":[ 3 | { 4 | "elementName":"WelcomeMessage", 5 | "referTo":"WelcomeMessageCommon" 6 | } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /src/test/resources/elements/HelloOptimus/Home.json: -------------------------------------------------------------------------------- 1 | { 2 | "elements":[ 3 | { 4 | "elementName":"WelcomeMessage", 5 | "identifier":"id", 6 | "value":"welcome_message" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /src/test/resources/features/HelloOptimusCustom.feature: -------------------------------------------------------------------------------- 1 | Feature: Say Hello to Optimus 2 | 3 | @helloOptimus 4 | Scenario: Hello Optimus 5 | Given I get a welcome message on successful execution of my hello optimus project 6 | 7 | 8 | 9 | @helloOptimusIos 10 | Scenario: Hello Optimus IOS 11 | Given I am running this scenario in parrallel on IOS 12 | -------------------------------------------------------------------------------- /src/test/resources/features/HelloOptimusGeneric.feature: -------------------------------------------------------------------------------- 1 | Feature: Say Hello to Optimus 2 | Using generic steps, I want read the welcome message 3 | 4 | 5 | @helloOptimus 6 | Scenario: generic step example 7 | Given optimus on Home screen verifies WelcomeMessage has textpresent value Welcome to Optimus!! You are all ready to experience Automation like never before. 8 | 9 | 10 | 11 | @helloOptimusIos 12 | Scenario: Hello Optimus IOS1 13 | Given I am running this scenario in parrallel on IOS 14 | --------------------------------------------------------------------------------