Calculator example - logic

This commit is contained in:
Carlos García 2015-08-16 01:37:36 +02:00
parent eb8280b4f2
commit 4340938363
7 changed files with 224 additions and 70 deletions

View File

@ -1,8 +1,8 @@
//
// Calculator.swift
// CalculatorViewController.swift
// RxExample
//
// Created by carlos on 4/8/15.
// Created by Carlos García on 4/8/15.
// Copyright (c) 2015 Krunoslav Zaher. All rights reserved.
//
@ -14,13 +14,38 @@ import RxCocoa
class CalculatorViewController: ViewController {
enum Operator {
case Addition
case Subtraction
case Multiplication
case Division
}
enum Action {
case Clear
case ChangeSign
case Percent
case Operation(Operator)
case Equal
case AddNumber(Character)
case AddDot
}
struct CalState {
let previousNumber: String!
let action: Action
let currentNumber: String!
let inScreen: String
let replace: Bool
}
@IBOutlet weak var lastSignLabel: UILabel!
@IBOutlet weak var resultLabel: UILabel!
@IBOutlet weak var allClearButton: UIButton!
@IBOutlet weak var changeSignButton: UIButton!
@IBOutlet weak var moduleButton: UIButton!
@IBOutlet weak var percentButton: UIButton!
@IBOutlet weak var divideButton: UIButton!
@IBOutlet weak var multiplyButton: UIButton!
@IBOutlet weak var minusButton: UIButton!
@ -40,33 +65,162 @@ class CalculatorViewController: ViewController {
@IBOutlet weak var eightButton: UIButton!
@IBOutlet weak var nineButton: UIButton!
let CLEAR_STATE = CalState(previousNumber: nil, action: .Clear, currentNumber: "0", inScreen: "0", replace: true)
let diposeBag = DisposeBag()
override func viewDidLoad() {
let allClearButtonOble = allClearButton.rx_tap
let changeSignButtonOble = changeSignButton.rx_tap
let moduleButtonOble = moduleButton.rx_tap
let divideButtonOble = divideButton.rx_tap
let multiplyButtonOble = multiplyButton.rx_tap
let minusButtonOble = minusButton.rx_tap
let plusButtonOble = plusButton.rx_tap
let equalButtonOble = equalButton.rx_tap
let dotButtonOble = dotButton.rx_tap
let zeroButtonOble = zeroButton.rx_tap
let oneButtonOble = oneButton.rx_tap
let twoButtonOble = twoButton.rx_tap
let threeButtonOble = threeButton.rx_tap
let fourButtonOble = fourButton.rx_tap
let fiveButtonOble = fiveButton.rx_tap
let sixButtonOble = sixButton.rx_tap
let sevenButtonOble = sevenButton.rx_tap
let eightButtonOble = eightButton.rx_tap
let nineButtonOble = nineButton.rx_tap
let commands: [Observable<Action>] = [
allClearButton.rx_tap >- map { _ in .Clear },
changeSignButton.rx_tap >- map { _ in .ChangeSign },
percentButton.rx_tap >- map { _ in .Percent },
divideButton.rx_tap >- map { _ in .Operation(.Division) },
multiplyButton.rx_tap >- map { _ in .Operation(.Multiplication) },
minusButton.rx_tap >- map { _ in .Operation(.Subtraction) },
plusButton.rx_tap >- map { _ in .Operation(.Addition) },
equalButton.rx_tap >- map { _ in .Equal },
dotButton.rx_tap >- map { _ in .AddDot },
zeroButton.rx_tap >- map { _ in .AddNumber("0") },
oneButton.rx_tap >- map { _ in .AddNumber("1") },
twoButton.rx_tap >- map { _ in .AddNumber("2") },
threeButton.rx_tap >- map { _ in .AddNumber("3") },
fourButton.rx_tap >- map { _ in .AddNumber("4") },
fiveButton.rx_tap >- map { _ in .AddNumber("5") },
sixButton.rx_tap >- map { _ in .AddNumber("6") },
sevenButton.rx_tap >- map { _ in .AddNumber("7") },
eightButton.rx_tap >- map { _ in .AddNumber("8") },
nineButton.rx_tap >- map { _ in .AddNumber("9") }
]
merge(from(commands))
>- scan(CLEAR_STATE) { a, x in
return self.tranformState(a, x)
}
>- debug("debugging")
>- subscribeNext { [weak self] calState in
self?.resultLabel.text = self?.prettyFormat(calState.inScreen)
switch calState.action {
case .Operation(let operation):
switch operation {
case .Addition:
self?.lastSignLabel.text = "+"
case .Subtraction:
self?.lastSignLabel.text = "-"
case .Multiplication:
self?.lastSignLabel.text = "x"
case .Division:
self?.lastSignLabel.text = "/"
}
default:
self?.lastSignLabel.text = ""
}
} >- diposeBag.addDisposable
}
func tranformState(a: CalState, _ x: Action) -> CalState {
switch x {
case .Clear:
return CLEAR_STATE
case .AddNumber(let c):
return addNumber(a, c)
case .AddDot:
return addDot(a)
case .ChangeSign:
let d = "\(-a.inScreen.toDouble()!)"
return CalState(previousNumber: a.previousNumber, action: a.action, currentNumber: d, inScreen: d, replace: true)
case .Percent:
let d = "\(a.inScreen.toDouble()!/100)"
return CalState(previousNumber: a.previousNumber, action: a.action, currentNumber: d, inScreen: d, replace: true)
case .Operation(let o):
return performOperation(a, o)
case .Equal:
return performEqual(a)
}
}
func addNumber(a: CalState, _ char: Character) -> CalState {
let cn = a.currentNumber == nil || a.replace ? String(char) : a.inScreen + String(char)
return CalState(previousNumber: a.previousNumber, action: a.action, currentNumber: cn, inScreen: cn, replace: false)
}
func addDot(a: CalState) -> CalState {
let cn = a.inScreen.rangeOfString(".") == nil ? a.currentNumber + "." : a.currentNumber
return CalState(previousNumber: a.previousNumber, action: a.action, currentNumber: cn, inScreen: cn, replace: false)
}
func performOperation(a: CalState, _ o: Operator) -> CalState {
if a.previousNumber == nil {
return CalState(previousNumber: a.currentNumber, action: .Operation(o), currentNumber: nil, inScreen: a.currentNumber, replace: true)
}
else {
let previous = a.previousNumber.toDouble()!
let current = a.inScreen.toDouble()!
switch a.action {
case .Operation(let op):
switch op {
case .Addition:
let result = "\(previous + current)"
return CalState(previousNumber: result, action: .Operation(o), currentNumber: nil, inScreen: result, replace: true)
case .Subtraction:
let result = "\(previous - current)"
return CalState(previousNumber: result, action: .Operation(o), currentNumber: nil, inScreen: result, replace: true)
case .Multiplication:
let result = "\(previous * current)"
return CalState(previousNumber: result, action: .Operation(o), currentNumber: nil, inScreen: result, replace: true)
case .Division:
let result = "\(previous / current)"
return CalState(previousNumber: result, action: .Operation(o), currentNumber: nil, inScreen: result, replace: true)
}
default:
return CalState(previousNumber: nil, action: .Operation(o), currentNumber: a.currentNumber, inScreen: a.inScreen, replace: true)
}
}
}
func performEqual(a: CalState) -> CalState {
let previous = (a.previousNumber ?? "0").toDouble()
let current = a.inScreen.toDouble()!
switch a.action {
case .Operation(let op):
switch op {
case .Addition:
let result = "\(previous! + current)"
return CalState(previousNumber: nil, action: .Clear, currentNumber: result, inScreen: result, replace: true)
case .Subtraction:
let result = "\(previous! - current)"
return CalState(previousNumber: nil, action: .Clear, currentNumber: result, inScreen: result, replace: true)
case .Multiplication:
let result = "\(previous! * current)"
return CalState(previousNumber: nil, action: .Clear, currentNumber: result, inScreen: result, replace: true)
case .Division:
let result = previous! / current
let resultText = result == Double.infinity ? "0" : "\(result)"
return CalState(previousNumber: nil, action: .Clear, currentNumber: resultText, inScreen: resultText, replace: true)
}
default:
return CalState(previousNumber: nil, action: .Clear, currentNumber: a.currentNumber, inScreen: a.inScreen, replace: true)
}
}
func prettyFormat(str: String) -> String {
if str.hasSuffix(".0") {
return str.substringToIndex(str.endIndex.predecessor().predecessor())
}
return str
}
}

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="7706" systemVersion="14F19a" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="E5v-jn-n2n">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="7706" systemVersion="14F25a" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="E5v-jn-n2n">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
<capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
@ -67,7 +67,7 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="yYr-Cu-KXe" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="151" y="272"/>
<point key="canvasLocation" x="151" y="-370"/>
</scene>
<!--Detail View Controller-->
<scene sceneID="n26-Ac-tgu">
@ -124,7 +124,7 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="NGu-t4-MLa" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="595" y="272"/>
<point key="canvasLocation" x="595" y="-370"/>
</scene>
<!--GitHub Signup-->
<scene sceneID="N2N-1B-sZ4">
@ -338,7 +338,7 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iOF-ih-lLu" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="151" y="2471"/>
<point key="canvasLocation" x="151" y="2344"/>
</scene>
<!--Rx Examples-->
<scene sceneID="TnT-xx-y5Q">
@ -374,29 +374,6 @@
<segue destination="dHR-mS-HCG" kind="push" id="rAe-JJ-Q7U"/>
</connections>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" textLabel="pxT-4B-gDc" detailTextLabel="xZJ-Xt-MqD" style="IBUITableViewCellStyleSubtitle" id="yAf-eB-mRo">
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="yAf-eB-mRo" id="M3Y-AJ-f8i">
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Search Wikipedia" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="pxT-4B-gDc">
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="MVVM Example" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="xZJ-Xt-MqD">
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="11"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
<connections>
<segue destination="Iwo-im-m6d" kind="push" identifier="ShowWikipediaSearch" id="Gfh-zm-u0w"/>
</connections>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" textLabel="x4u-zK-muO" detailTextLabel="nuf-1K-ITV" style="IBUITableViewCellStyleSubtitle" id="HTx-Ei-Vlj">
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="HTx-Ei-Vlj" id="kc9-g3-Zfl">
@ -443,6 +420,29 @@
<segue destination="ErT-E8-uY3" kind="push" id="3is-Gn-lDH"/>
</connections>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" textLabel="pxT-4B-gDc" detailTextLabel="xZJ-Xt-MqD" style="IBUITableViewCellStyleSubtitle" id="yAf-eB-mRo">
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="yAf-eB-mRo" id="M3Y-AJ-f8i">
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Search Wikipedia" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="pxT-4B-gDc">
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="MVVM Example" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="xZJ-Xt-MqD">
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="11"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
<connections>
<segue destination="Iwo-im-m6d" kind="push" identifier="ShowWikipediaSearch" id="Gfh-zm-u0w"/>
</connections>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" textLabel="siT-mr-b8A" detailTextLabel="BSH-sG-bpY" style="IBUITableViewCellStyleSubtitle" id="VBq-7j-4vQ">
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="VBq-7j-4vQ" id="m7h-NW-UnD">
@ -560,7 +560,7 @@ This is only showcase app, not intended for production purposes.</string>
</connections>
</searchDisplayController>
</objects>
<point key="canvasLocation" x="151" y="-379"/>
<point key="canvasLocation" x="151" y="995"/>
</scene>
<!--Wrappers View Controller-->
<scene sceneID="GYg-hz-8N5">
@ -668,7 +668,7 @@ This is only showcase app, not intended for production purposes.</string>
<placeholder placeholderIdentifier="IBFirstResponder" id="k4I-9E-5OJ" sceneMemberID="firstResponder"/>
<panGestureRecognizer minimumNumberOfTouches="1" id="Shn-qP-Kjy"/>
</objects>
<point key="canvasLocation" x="151" y="955"/>
<point key="canvasLocation" x="151" y="1665"/>
</scene>
<!--Calculator-->
<scene sceneID="Xfe-3i-xhv">
@ -1008,10 +1008,10 @@ This is only showcase app, not intended for production purposes.</string>
<outlet property="fourButton" destination="rUw-vf-PNm" id="7xg-NF-12b"/>
<outlet property="lastSignLabel" destination="YZh-2c-lxk" id="9eW-Xe-JWt"/>
<outlet property="minusButton" destination="hyZ-GS-b4n" id="hg4-5p-4PH"/>
<outlet property="moduleButton" destination="Bck-k4-Rnw" id="z1w-Pd-w0J"/>
<outlet property="multiplyButton" destination="Lef-oq-6tF" id="LJ7-bN-1Ok"/>
<outlet property="nineButton" destination="ScB-JD-pYD" id="qEp-ke-pJD"/>
<outlet property="oneButton" destination="cEb-GT-XMg" id="7ND-Jm-7he"/>
<outlet property="percentButton" destination="Bck-k4-Rnw" id="2HI-1N-V3v"/>
<outlet property="plusButton" destination="prS-ma-oED" id="wsH-hh-cHi"/>
<outlet property="resultLabel" destination="xws-I8-RiJ" id="X21-5l-a8h"/>
<outlet property="sevenButton" destination="w1G-BD-RaP" id="vbU-5M-YfS"/>
@ -1023,7 +1023,7 @@ This is only showcase app, not intended for production purposes.</string>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Hlb-0U-7wp" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="151" y="1657"/>
<point key="canvasLocation" x="151" y="296"/>
</scene>
</scenes>
<simulatedMetricsContainer key="defaultSimulatedMetrics">

View File

@ -10,7 +10,7 @@ test("----- githubSignUp -----", function (check, pass) {
return false;
}
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[0].tapWithOptions({tapOffset:{x:0.24, y:0.20}});
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[0].tap();
UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0].tap();
writeInElement(UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0], "rxrevolution")

View File

@ -4,7 +4,7 @@ test("----- searchWikipedia -----", function (check, pass) {
var width = UIATarget.localTarget().frontMostApp().mainWindow().rect().size.width
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[1].tap();
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[3].tap();
UIATarget.localTarget().frontMostApp().mainWindow().searchBars()[0].searchBars()[0].tap();
writeInElement(UIATarget.localTarget().frontMostApp().mainWindow().searchBars()[0].searchBars()[0], "banana")

View File

@ -7,7 +7,7 @@ test("----- masterDetail -----", function (check, pass) {
}
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[2].tapWithOptions({tapOffset:{x:0.24, y:0.20}});
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[1].tap();
UIATarget.localTarget().frontMostApp().navigationBar().rightButton().tap();
UIATarget.localTarget().frontMostApp().mainWindow().dragInsideWithOptions({startOffset:{x:0.93, y:yOffset(300)}, endOffset:{x:0.95, y:yOffset(200)}, duration:1.5});
UIATarget.localTarget().frontMostApp().mainWindow().dragInsideWithOptions({startOffset:{x:0.93, y:yOffset(300)}, endOffset:{x:0.95, y:yOffset(100)}, duration:1.5});

View File

@ -5,7 +5,7 @@
test("----- UIBarButtonItem tap -----", function (check, pass) {
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[3].tapWithOptions({tapOffset:{x:0.24, y:0.20}});
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[4]();
UIATarget.localTarget().frontMostApp().navigationBar().rightButton().tap();
@ -21,7 +21,7 @@ test("----- UIBarButtonItem tap -----", function (check, pass) {
test("----- UIBarButtonItem tap -----", function (check, pass) {
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[3].tapWithOptions({tapOffset:{x:0.24, y:0.20}});
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[4]();
UIATarget.localTarget().frontMostApp().mainWindow().buttons()["TapMe"].tap();
@ -39,7 +39,7 @@ test("----- UIBarButtonItem tap -----", function (check, pass) {
test("----- UISegmentedControl tap -----", function (check, pass) {
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[3].tapWithOptions({tapOffset:{x:0.24, y:0.20}});
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[4]();
UIATarget.localTarget().frontMostApp().mainWindow().segmentedControls()[0].buttons()["Second"].tap();
@ -63,7 +63,7 @@ test("----- UISegmentedControl tap -----", function (check, pass) {
test("----- UISwitch tap -----", function (check, pass) {
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[3].tapWithOptions({tapOffset:{x:0.24, y:0.20}});
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[4]();
UIATarget.localTarget().frontMostApp().mainWindow().switches()[0].setValue(0);
@ -87,7 +87,7 @@ test("----- UISwitch tap -----", function (check, pass) {
test("----- UITextField text -----", function (check, pass) {
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[3].tapWithOptions({tapOffset:{x:0.24, y:0.20}});
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[4]();
UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0].textFields()[0].tap();
// UIATarget.localTarget().frontMostApp().keyboard().typeString("t");// fails if software keyboard is disabled
@ -107,7 +107,7 @@ test("----- UITextField text -----", function (check, pass) {
test("----- UISlider value -----", function (check, pass) {
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[3].tapWithOptions({tapOffset:{x:0.24, y:0.20}});
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[4]();
UIATarget.localTarget().frontMostApp().mainWindow().sliders()[0].dragToValue(0.00);
@ -124,7 +124,7 @@ test("----- UISlider value -----", function (check, pass) {
test("----- UIDatePicker date -----", function (check, pass) {
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[3].tapWithOptions({tapOffset:{x:0.24, y:0.20}});
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[4]();
UIATarget.localTarget().frontMostApp().mainWindow().pickers()[0].wheels()[0].tapWithOptions({tapOffset:{x:0.49, y:0.65}});
UIATarget.localTarget().frontMostApp().mainWindow().pickers()[0].wheels()[1].tapWithOptions({tapOffset:{x:0.35, y:0.64}});
@ -143,7 +143,7 @@ test("----- UIDatePicker date -----", function (check, pass) {
test("----- UIActionSheet tap -----", function (check, pass) {
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[3].tapWithOptions({tapOffset:{x:0.24, y:0.20}});
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[4]();
UIATarget.localTarget().frontMostApp().mainWindow().buttons()["Open ActionSheet"].tap();
UIATarget.localTarget().frontMostApp().actionSheet().collectionViews()[0].cells()["OK"].buttons()["OK"].tap();
@ -161,7 +161,7 @@ test("----- UIActionSheet tap -----", function (check, pass) {
test("----- UIAlertView tap -----", function (check, pass) {
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[3].tapWithOptions({tapOffset:{x:0.24, y:0.20}});
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[4]();
UIATarget.localTarget().onAlert = function(alert){
UIATarget.localTarget().onAlert = null

View File

@ -2,7 +2,7 @@
test("----- reactivePartialUpdates -----", function (check, pass) {
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[4].tapWithOptions({tapOffset:{x:0.24, y:0.20}});
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[5].tap();
UIATarget.localTarget().frontMostApp().navigationBar().rightButton().tap();
UIATarget.localTarget().frontMostApp().navigationBar().rightButton().tap();
UIATarget.localTarget().frontMostApp().navigationBar().rightButton().tap();