calabash-android 0.4.0.pre6 → 0.4.0.pre7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/bin/calabash-android +7 -0
  2. data/bin/calabash-android-build.rb +1 -1
  3. data/bin/calabash-android-console.rb +1 -1
  4. data/bin/calabash-android-run.rb +1 -1
  5. data/calabash-android.gemspec +1 -0
  6. data/irbrc +2 -0
  7. data/lib/calabash-android/helpers.rb +4 -2
  8. data/lib/calabash-android/lib/TestServer.apk +0 -0
  9. data/lib/calabash-android/operations.rb +31 -22
  10. data/lib/calabash-android/version.rb +1 -1
  11. data/test-server/instrumentation-backend/.classpath +0 -1
  12. data/test-server/instrumentation-backend/antlr/UIQuery.g +11 -2
  13. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Command.java +4 -3
  14. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/FranklyResult.java +95 -0
  15. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java +7 -1
  16. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/HttpServer.java +15 -23
  17. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/location/FakeGPSLocation.java +13 -10
  18. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/CalabashChromeClient.java +136 -36
  19. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpBodyHtml.java +38 -18
  20. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpHtml.java +38 -16
  21. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/EnterTextByCssSelector.java +94 -66
  22. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteAsyncJavascript.java +55 -33
  23. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteJavascript.java +54 -31
  24. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/JavaScriptOperation.java +44 -0
  25. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java +52 -27
  26. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java +39 -32
  27. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ScrollTo.java +56 -41
  28. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetPropertyByCssSelector.java +50 -25
  29. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java +19 -22
  30. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/CompletedFuture.java +40 -0
  31. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/InvocationOperation.java +201 -0
  32. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Operation.java +7 -0
  33. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/PropertyOperation.java +56 -0
  34. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Query.java +144 -72
  35. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQuery.tokens +15 -12
  36. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQueryResultVoid.java +22 -0
  37. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ViewMapper.java +38 -11
  38. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryLexer.java +226 -109
  39. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryParser.java +237 -84
  40. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/PartialFutureList.java +100 -0
  41. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryAST.java +1 -1
  42. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTClassName.java +26 -22
  43. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTWith.java +170 -102
  44. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryEvaluator.java +54 -155
  45. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryUtils.java +97 -2
  46. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryVisibility.java +32 -0
  47. metadata +27 -5
  48. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Query.java +0 -24
  49. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Touch.java +0 -44
  50. data/test-server/instrumentation-backend/tests/sh/calaba/instrumentationbackend/query/tests/UIQueryTest.java +0 -134
@@ -1,24 +0,0 @@
1
- package sh.calaba.instrumentationbackend.actions.webview;
2
-
3
-
4
- import sh.calaba.instrumentationbackend.Result;
5
- import sh.calaba.instrumentationbackend.actions.Action;
6
-
7
-
8
- public class Query implements Action {
9
-
10
- @Override
11
- public Result execute(String... args) {
12
-
13
- String result = QueryHelper.executeJavascriptInWebview("calabash.js", args[1], args[0]);
14
- return new Result(true, result);
15
- }
16
-
17
- @Override
18
- public String key() {
19
- return "query";
20
- }
21
-
22
-
23
-
24
- }
@@ -1,44 +0,0 @@
1
- package sh.calaba.instrumentationbackend.actions.webview;
2
-
3
-
4
- import java.util.HashMap;
5
- import java.util.List;
6
- import java.util.Map;
7
-
8
- import sh.calaba.instrumentationbackend.InstrumentationBackend;
9
- import sh.calaba.instrumentationbackend.Result;
10
- import sh.calaba.instrumentationbackend.actions.Action;
11
- import sh.calaba.org.codehaus.jackson.map.ObjectMapper;
12
- import sh.calaba.org.codehaus.jackson.type.TypeReference;
13
-
14
-
15
- public class Touch implements Action {
16
-
17
- @Override
18
- public Result execute(String... args) {
19
-
20
- try {
21
- String queryResult = QueryHelper.executeJavascriptInWebview("calabash.js", args[1], args[0]);
22
- List<HashMap<String,Object>> p = new ObjectMapper().readValue(queryResult, new TypeReference<List<HashMap<String,Object>>>(){});
23
-
24
- if (p.isEmpty()) {
25
- throw new RuntimeException("No element found");
26
- }
27
-
28
- Map<String, Object> firstRect = QueryHelper.findFirstVisibleRectangle(p);
29
-
30
- float[] screenCoordinates = QueryHelper.getScreenCoordinatesForCenter(firstRect);
31
-
32
- InstrumentationBackend.solo.clickOnScreen(screenCoordinates[0], screenCoordinates[1]);
33
- } catch (Exception e) {
34
- throw new RuntimeException(e);
35
- }
36
-
37
- return new Result(true, "");
38
- }
39
-
40
- @Override
41
- public String key() {
42
- return "touch";
43
- }
44
- }
@@ -1,134 +0,0 @@
1
- package sh.calaba.instrumentationbackend.query.tests;
2
-
3
- import java.util.Arrays;
4
- import java.util.Collections;
5
- import java.util.List;
6
-
7
- import junit.framework.TestCase;
8
- import sh.calaba.instrumentationbackend.query.ast.UIQueryAST;
9
- import sh.calaba.instrumentationbackend.query.ast.UIQueryASTClassName;
10
- import sh.calaba.instrumentationbackend.query.ast.UIQueryEvaluator;
11
-
12
- public class UIQueryTest extends TestCase {
13
-
14
- @SuppressWarnings("rawtypes")
15
- public void testEvaluateQueryOnEmpty() {
16
- String query = "button";
17
- List res = UIQueryEvaluator.evaluateQuery(query, Collections.EMPTY_LIST);
18
- assertEquals(0, res.size());
19
- }
20
-
21
- public void testConvertSimpleQueryToUIQueryAst() throws Exception {
22
- List<UIQueryAST> parsedQuery = UIQueryEvaluator.parseQuery("button");
23
- assertEquals(1, parsedQuery.size());
24
-
25
- UIQueryAST uiQueryAST = parsedQuery.get(0);
26
-
27
- assertTrue(uiQueryAST instanceof UIQueryASTClassName);
28
- assertEquals("button", ((UIQueryASTClassName)uiQueryAST).simpleClassName);
29
-
30
- }
31
-
32
- public void testConvertQualifiedQueryToUIQueryAst() throws Exception {
33
- List<UIQueryAST> parsedQuery = UIQueryEvaluator.parseQuery("junit.framework.TestCase");
34
- assertEquals(1, parsedQuery.size());
35
-
36
- UIQueryAST uiQueryAST = parsedQuery.get(0);
37
-
38
- assertTrue(uiQueryAST instanceof UIQueryASTClassName);
39
- assertEquals(junit.framework.TestCase.class, ((UIQueryASTClassName)uiQueryAST).qualifiedClassName);
40
- }
41
-
42
- public void testConvertComposedQueryToUIQueryAst() throws Exception {
43
- List<UIQueryAST> parsedQuery = UIQueryEvaluator.parseQuery("view button");
44
- assertEquals(2, parsedQuery.size());
45
-
46
- UIQueryAST uiQueryASTFirst = parsedQuery.get(0);
47
- UIQueryAST uiQueryASTSecond = parsedQuery.get(1);
48
-
49
- assertTrue(uiQueryASTFirst instanceof UIQueryASTClassName);
50
- assertTrue(uiQueryASTSecond instanceof UIQueryASTClassName);
51
-
52
- assertEquals("view", ((UIQueryASTClassName)uiQueryASTFirst).simpleClassName);
53
- assertEquals("button", ((UIQueryASTClassName)uiQueryASTSecond).simpleClassName);
54
-
55
- }
56
-
57
-
58
- private static class View {
59
- @SuppressWarnings("rawtypes")
60
- List views;
61
-
62
- @SuppressWarnings("rawtypes")
63
- public View(List views) {
64
- super();
65
- this.views = views;
66
- }
67
- public Object getChildAt(int idx)
68
- {
69
- return this.views.get(idx);
70
- }
71
- @SuppressWarnings("unused")
72
- public Object getChildCount() {return this.views.size();}
73
-
74
- }
75
- private static class SubView extends View {
76
-
77
- @SuppressWarnings("rawtypes")
78
- public SubView(List views) {
79
- super(views);
80
- }
81
-
82
- }
83
- private static class Button extends View {
84
-
85
- @SuppressWarnings("rawtypes")
86
- public Button(List views) {
87
- super(views);
88
- // TODO Auto-generated constructor stub
89
- }
90
-
91
- }
92
-
93
- @SuppressWarnings("rawtypes")
94
- public void testEvaluateSimpleQuery() throws Exception {
95
- List<View> views = setupViews();
96
-
97
- List evaluateQuery = UIQueryEvaluator.evaluateQuery("subview", views);
98
- assertEquals(1, evaluateQuery.size());
99
- assertTrue(evaluateQuery.get(0) instanceof SubView);
100
-
101
- List evaluateQueryButtons = UIQueryEvaluator.evaluateQuery("button", views);
102
- assertEquals(3, evaluateQueryButtons.size());
103
- assertTrue(evaluateQueryButtons.get(0) instanceof Button);
104
- assertTrue(evaluateQueryButtons.get(1) instanceof Button);
105
- assertTrue(evaluateQueryButtons.get(2) instanceof Button);
106
-
107
- }
108
-
109
-
110
- @SuppressWarnings("rawtypes")
111
- public void testEvaluateComposedQuery() throws Exception {
112
- List<View> views = setupViews();
113
- SubView vv = (SubView) views.get(1);
114
- Button b = (Button) vv.getChildAt(0);
115
-
116
- List evaluateQuery = UIQueryEvaluator.evaluateQuery("subview button", views);
117
- assertEquals(1, evaluateQuery.size());
118
- assertTrue(evaluateQuery.get(0) instanceof Button);
119
- assertEquals(evaluateQuery.get(0), b);
120
-
121
-
122
- }
123
-
124
- private List<View> setupViews() {
125
- return Arrays.asList(new View[]{
126
- new Button(Collections.EMPTY_LIST),
127
- new SubView(Arrays.asList(new View[]{
128
- new Button(Collections.EMPTY_LIST)
129
- })),
130
- new Button(Collections.EMPTY_LIST)
131
- });
132
- }
133
-
134
- }