├── .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 [](https://badge.fury.io/js/optimus-cli) [](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 | 
67 | `Distributuion`: one feature will run on one device.
68 | 
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 |
--------------------------------------------------------------------------------