cukunity 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. data/.document +5 -0
  2. data/.gitmodules +0 -0
  3. data/.rspec +1 -0
  4. data/Gemfile +15 -0
  5. data/Gemfile.lock +60 -0
  6. data/LICENSE.txt +20 -0
  7. data/README.md +214 -0
  8. data/Rakefile +51 -0
  9. data/Unity/Assets/Demo/Art/Buttons/down.png +0 -0
  10. data/Unity/Assets/Demo/Art/Buttons/down.png.meta +28 -0
  11. data/Unity/Assets/Demo/Art/Buttons/left.png +0 -0
  12. data/Unity/Assets/Demo/Art/Buttons/left.png.meta +28 -0
  13. data/Unity/Assets/Demo/Art/Buttons/ok.png +0 -0
  14. data/Unity/Assets/Demo/Art/Buttons/ok.png.meta +28 -0
  15. data/Unity/Assets/Demo/Art/Buttons/options.png +0 -0
  16. data/Unity/Assets/Demo/Art/Buttons/options.png.meta +28 -0
  17. data/Unity/Assets/Demo/Art/Buttons/play.png +0 -0
  18. data/Unity/Assets/Demo/Art/Buttons/play.png.meta +28 -0
  19. data/Unity/Assets/Demo/Art/Buttons/quit.png +0 -0
  20. data/Unity/Assets/Demo/Art/Buttons/quit.png.meta +28 -0
  21. data/Unity/Assets/Demo/Art/Buttons/retry.png +0 -0
  22. data/Unity/Assets/Demo/Art/Buttons/retry.png.meta +28 -0
  23. data/Unity/Assets/Demo/Art/Buttons/right.png +0 -0
  24. data/Unity/Assets/Demo/Art/Buttons/right.png.meta +28 -0
  25. data/Unity/Assets/Demo/Art/Buttons/up.png +0 -0
  26. data/Unity/Assets/Demo/Art/Buttons/up.png.meta +28 -0
  27. data/Unity/Assets/Demo/Art/Buttons.meta +2 -0
  28. data/Unity/Assets/Demo/Art/clear.png +0 -0
  29. data/Unity/Assets/Demo/Art/clear.png.meta +28 -0
  30. data/Unity/Assets/Demo/Art/options.png +0 -0
  31. data/Unity/Assets/Demo/Art/options.png.meta +28 -0
  32. data/Unity/Assets/Demo/Art/sokoban.png +0 -0
  33. data/Unity/Assets/Demo/Art/sokoban.png.meta +28 -0
  34. data/Unity/Assets/Demo/Art.meta +2 -0
  35. data/Unity/Assets/Demo/Cubes/CrateCube.mat +0 -0
  36. data/Unity/Assets/Demo/Cubes/CrateCube.mat.meta +2 -0
  37. data/Unity/Assets/Demo/Cubes/CrateCube.prefab +0 -0
  38. data/Unity/Assets/Demo/Cubes/CrateCube.prefab.meta +2 -0
  39. data/Unity/Assets/Demo/Cubes/FloorCube.mat +0 -0
  40. data/Unity/Assets/Demo/Cubes/FloorCube.mat.meta +2 -0
  41. data/Unity/Assets/Demo/Cubes/FloorCube.prefab +0 -0
  42. data/Unity/Assets/Demo/Cubes/FloorCube.prefab.meta +2 -0
  43. data/Unity/Assets/Demo/Cubes/GoalCube.mat +0 -0
  44. data/Unity/Assets/Demo/Cubes/GoalCube.mat.meta +2 -0
  45. data/Unity/Assets/Demo/Cubes/GoalCube.prefab +0 -0
  46. data/Unity/Assets/Demo/Cubes/GoalCube.prefab.meta +2 -0
  47. data/Unity/Assets/Demo/Cubes/PlayerCube.mat +0 -0
  48. data/Unity/Assets/Demo/Cubes/PlayerCube.mat.meta +2 -0
  49. data/Unity/Assets/Demo/Cubes/PlayerCube.prefab +0 -0
  50. data/Unity/Assets/Demo/Cubes/PlayerCube.prefab.meta +2 -0
  51. data/Unity/Assets/Demo/Cubes/WallCube.mat +0 -0
  52. data/Unity/Assets/Demo/Cubes/WallCube.mat.meta +2 -0
  53. data/Unity/Assets/Demo/Cubes/WallCube.prefab +0 -0
  54. data/Unity/Assets/Demo/Cubes/WallCube.prefab.meta +2 -0
  55. data/Unity/Assets/Demo/Cubes.meta +2 -0
  56. data/Unity/Assets/Demo/Resources/MainMenu.prefab +0 -0
  57. data/Unity/Assets/Demo/Resources/MainMenu.prefab.meta +2 -0
  58. data/Unity/Assets/Demo/Resources/OptionsMenu.prefab +0 -0
  59. data/Unity/Assets/Demo/Resources/OptionsMenu.prefab.meta +2 -0
  60. data/Unity/Assets/Demo/Resources.meta +2 -0
  61. data/Unity/Assets/Demo/Scripts/CameraController.js +18 -0
  62. data/Unity/Assets/Demo/Scripts/CameraController.js.meta +2 -0
  63. data/Unity/Assets/Demo/Scripts/EnterPlayerName.js +21 -0
  64. data/Unity/Assets/Demo/Scripts/EnterPlayerName.js.meta +2 -0
  65. data/Unity/Assets/Demo/Scripts/GameLeftButton.js +18 -0
  66. data/Unity/Assets/Demo/Scripts/GameLeftButton.js.meta +2 -0
  67. data/Unity/Assets/Demo/Scripts/GameQuitButton.js +6 -0
  68. data/Unity/Assets/Demo/Scripts/GameQuitButton.js.meta +2 -0
  69. data/Unity/Assets/Demo/Scripts/GameRetryButton.js +7 -0
  70. data/Unity/Assets/Demo/Scripts/GameRetryButton.js.meta +2 -0
  71. data/Unity/Assets/Demo/Scripts/GameRightButton.js +18 -0
  72. data/Unity/Assets/Demo/Scripts/GameRightButton.js.meta +2 -0
  73. data/Unity/Assets/Demo/Scripts/GameUpButton.js +18 -0
  74. data/Unity/Assets/Demo/Scripts/GameUpButton.js.meta +2 -0
  75. data/Unity/Assets/Demo/Scripts/OnTouchGUIElementDown.js +34 -0
  76. data/Unity/Assets/Demo/Scripts/OnTouchGUIElementDown.js.meta +2 -0
  77. data/Unity/Assets/Demo/Scripts/PlayerData.js +3 -0
  78. data/Unity/Assets/Demo/Scripts/PlayerData.js.meta +2 -0
  79. data/Unity/Assets/Demo/Scripts/SokobanController.js +240 -0
  80. data/Unity/Assets/Demo/Scripts/SokobanController.js.meta +2 -0
  81. data/Unity/Assets/Demo/Scripts/TakeScreenShot.js +26 -0
  82. data/Unity/Assets/Demo/Scripts/TakeScreenShot.js.meta +2 -0
  83. data/Unity/Assets/Demo/Scripts/TitleOptionsButton.js +8 -0
  84. data/Unity/Assets/Demo/Scripts/TitleOptionsButton.js.meta +2 -0
  85. data/Unity/Assets/Demo/Scripts/TitleOptionsOkButton.js +8 -0
  86. data/Unity/Assets/Demo/Scripts/TitleOptionsOkButton.js.meta +2 -0
  87. data/Unity/Assets/Demo/Scripts/TitlePlayButton.js +6 -0
  88. data/Unity/Assets/Demo/Scripts/TitlePlayButton.js.meta +2 -0
  89. data/Unity/Assets/Demo/Scripts/TitleQuitButton.js +7 -0
  90. data/Unity/Assets/Demo/Scripts/TitleQuitButton.js.meta +2 -0
  91. data/Unity/Assets/Demo/Scripts/UpdateMovesLabel.js +26 -0
  92. data/Unity/Assets/Demo/Scripts/UpdateMovesLabel.js.meta +2 -0
  93. data/Unity/Assets/Demo/Scripts/UpdatePlayerName.js +14 -0
  94. data/Unity/Assets/Demo/Scripts/UpdatePlayerName.js.meta +2 -0
  95. data/Unity/Assets/Demo/Scripts.meta +2 -0
  96. data/Unity/Assets/Demo/demo_game.unity +0 -0
  97. data/Unity/Assets/Demo/demo_game.unity.meta +2 -0
  98. data/Unity/Assets/Demo/demo_title.unity +0 -0
  99. data/Unity/Assets/Demo/demo_title.unity.meta +2 -0
  100. data/Unity/Assets/Demo.meta +2 -0
  101. data/Unity/Assets/Plugins/CukunityInstance.prefab +0 -0
  102. data/Unity/Assets/Plugins/CukunityInstance.prefab.meta +2 -0
  103. data/Unity/Assets/Plugins/CukunityServer.cs +871 -0
  104. data/Unity/Assets/Plugins/CukunityServer.cs.meta +2 -0
  105. data/Unity/Assets/Plugins/JsonFx.Json.dll +0 -0
  106. data/Unity/Assets/Plugins/JsonFx.Json.dll.meta +2 -0
  107. data/Unity/Assets/Plugins/iOS/CukunityServer.mm +242 -0
  108. data/Unity/Assets/Plugins/iOS/CukunityServer.mm.meta +2 -0
  109. data/Unity/Assets/Plugins/iOS.meta +2 -0
  110. data/Unity/Assets/Plugins.meta +2 -0
  111. data/Unity/Library/AudioManager.asset +0 -0
  112. data/Unity/Library/BuildSettings.asset +0 -0
  113. data/Unity/Library/DynamicsManager.asset +0 -0
  114. data/Unity/Library/EditorBuildSettings.asset +0 -0
  115. data/Unity/Library/EditorSettings.asset +0 -0
  116. data/Unity/Library/EditorUserBuildSettings.asset +0 -0
  117. data/Unity/Library/EditorUserSettings.asset +0 -0
  118. data/Unity/Library/InputManager.asset +0 -0
  119. data/Unity/Library/InspectorExpandedItems.asset +0 -0
  120. data/Unity/Library/MonoManager.asset +0 -0
  121. data/Unity/Library/NetworkManager.asset +0 -0
  122. data/Unity/Library/ProjectSettings.asset +0 -0
  123. data/Unity/Library/QualitySettings.asset +0 -0
  124. data/Unity/Library/TagManager.asset +0 -0
  125. data/Unity/Library/TimeManager.asset +0 -0
  126. data/Unity/ProjectSettings/AudioManager.asset +0 -0
  127. data/Unity/ProjectSettings/DynamicsManager.asset +0 -0
  128. data/Unity/ProjectSettings/EditorBuildSettings.asset +0 -0
  129. data/Unity/ProjectSettings/EditorSettings.asset +0 -0
  130. data/Unity/ProjectSettings/InputManager.asset +0 -0
  131. data/Unity/ProjectSettings/NavMeshLayers.asset +0 -0
  132. data/Unity/ProjectSettings/NetworkManager.asset +0 -0
  133. data/Unity/ProjectSettings/ProjectSettings.asset +0 -0
  134. data/Unity/ProjectSettings/QualitySettings.asset +0 -0
  135. data/Unity/ProjectSettings/TagManager.asset +0 -0
  136. data/Unity/ProjectSettings/TimeManager.asset +0 -0
  137. data/VERSION +1 -0
  138. data/bin/cukunity +7 -0
  139. data/cukunity.gemspec +298 -0
  140. data/features/get_scene_command.feature +39 -0
  141. data/features/i18n/ja/sokoban_clear.feature +109 -0
  142. data/features/install.feature +23 -0
  143. data/features/keyboard_input.feature +26 -0
  144. data/features/load_level_command.feature +36 -0
  145. data/features/run.feature +33 -0
  146. data/features/select_visible.feature +29 -0
  147. data/features/support/env.rb +11 -0
  148. data/features/touch_input.feature +96 -0
  149. data/lib/cukunity/cli/argument_parser.rb +103 -0
  150. data/lib/cukunity/cli/bootstrap_command.rb +39 -0
  151. data/lib/cukunity/cli/doctor_command.rb +150 -0
  152. data/lib/cukunity/cli/features_command.rb +35 -0
  153. data/lib/cukunity/cli/main.rb +18 -0
  154. data/lib/cukunity/cli/options.rb +8 -0
  155. data/lib/cukunity/cli.rb +11 -0
  156. data/lib/cukunity/cucumber/step_definitions/get_scene_command_steps.rb +37 -0
  157. data/lib/cukunity/cucumber/step_definitions/i18n/ja/get_scene_command_steps.rb +37 -0
  158. data/lib/cukunity/cucumber/step_definitions/i18n/ja/install_steps.rb +25 -0
  159. data/lib/cukunity/cucumber/step_definitions/i18n/ja/keyboard_input_steps.rb +17 -0
  160. data/lib/cukunity/cucumber/step_definitions/i18n/ja/load_level_command_steps.rb +17 -0
  161. data/lib/cukunity/cucumber/step_definitions/i18n/ja/run_steps.rb +25 -0
  162. data/lib/cukunity/cucumber/step_definitions/i18n/ja/select_visible_steps.rb +9 -0
  163. data/lib/cukunity/cucumber/step_definitions/i18n/ja/touch_input_steps.rb +19 -0
  164. data/lib/cukunity/cucumber/step_definitions/i18n/ja.rb +9 -0
  165. data/lib/cukunity/cucumber/step_definitions/install_steps.rb +33 -0
  166. data/lib/cukunity/cucumber/step_definitions/keyboard_input_steps.rb +13 -0
  167. data/lib/cukunity/cucumber/step_definitions/load_level_command_steps.rb +17 -0
  168. data/lib/cukunity/cucumber/step_definitions/run_steps.rb +32 -0
  169. data/lib/cukunity/cucumber/step_definitions/select_visible_steps.rb +15 -0
  170. data/lib/cukunity/cucumber/step_definitions/touch_input_steps.rb +18 -0
  171. data/lib/cukunity/cucumber/support/platform_helpers.rb +105 -0
  172. data/lib/cukunity/cucumber/support/spec_helpers.rb +21 -0
  173. data/lib/cukunity/cucumber/support/transforms.rb +5 -0
  174. data/lib/cukunity/cucumber/support/unity_helpers.rb +35 -0
  175. data/lib/cukunity/cucumber.rb +28 -0
  176. data/lib/cukunity/drivers/android/app.rb +43 -0
  177. data/lib/cukunity/drivers/android/appkiller/.gitignore +9 -0
  178. data/lib/cukunity/drivers/android/appkiller/AndroidManifest.xml +17 -0
  179. data/lib/cukunity/drivers/android/appkiller/ant.properties +17 -0
  180. data/lib/cukunity/drivers/android/appkiller/build.xml +85 -0
  181. data/lib/cukunity/drivers/android/appkiller/proguard.cfg +40 -0
  182. data/lib/cukunity/drivers/android/appkiller/project.properties +11 -0
  183. data/lib/cukunity/drivers/android/appkiller/res/layout/main.xml +13 -0
  184. data/lib/cukunity/drivers/android/appkiller/res/values/strings.xml +4 -0
  185. data/lib/cukunity/drivers/android/appkiller/src/cukunity/appkiller/AppKiller.java +29 -0
  186. data/lib/cukunity/drivers/android/keyboard_input.rb +149 -0
  187. data/lib/cukunity/drivers/android/keycodes.rb +531 -0
  188. data/lib/cukunity/drivers/android/monkey_client.rb +65 -0
  189. data/lib/cukunity/drivers/android/process.rb +103 -0
  190. data/lib/cukunity/drivers/android/touch_input.rb +24 -0
  191. data/lib/cukunity/drivers/android/tunnel_client_methods.rb +22 -0
  192. data/lib/cukunity/drivers/android/unity_client.rb +27 -0
  193. data/lib/cukunity/drivers/android/utils.rb +50 -0
  194. data/lib/cukunity/drivers/android.rb +9 -0
  195. data/lib/cukunity/drivers/iOS/app.rb +32 -0
  196. data/lib/cukunity/drivers/iOS/keyboard_input.rb +104 -0
  197. data/lib/cukunity/drivers/iOS/process.rb +42 -0
  198. data/lib/cukunity/drivers/iOS/touch_input.rb +18 -0
  199. data/lib/cukunity/drivers/iOS/tunnel_client_methods.rb +27 -0
  200. data/lib/cukunity/drivers/iOS/uiautomation.rb +97 -0
  201. data/lib/cukunity/drivers/iOS/uiautomation_master.rb +152 -0
  202. data/lib/cukunity/drivers/iOS/uiautomation_slave.js +238 -0
  203. data/lib/cukunity/drivers/iOS/uiautomation_slave.rb +41 -0
  204. data/lib/cukunity/drivers/iOS/unity_client.rb +27 -0
  205. data/lib/cukunity/drivers/iOS/utils.rb +46 -0
  206. data/lib/cukunity/drivers/iOS.rb +9 -0
  207. data/lib/cukunity/exceptions.rb +24 -0
  208. data/lib/cukunity/keyboard_input_methods.rb +35 -0
  209. data/lib/cukunity/request_line_response_client_methods.rb +80 -0
  210. data/lib/cukunity/tasks/cucumber.rake +22 -0
  211. data/lib/cukunity/touch_input_methods.rb +19 -0
  212. data/lib/cukunity/unity/client_methods.rb +46 -0
  213. data/lib/cukunity/unity/command_facade.rb +67 -0
  214. data/lib/cukunity/unity/component.rb +39 -0
  215. data/lib/cukunity/unity/gameobject.rb +53 -0
  216. data/lib/cukunity/unity/hint.rb +27 -0
  217. data/lib/cukunity/unity/json_container.rb +48 -0
  218. data/lib/cukunity/unity/level.rb +6 -0
  219. data/lib/cukunity/unity/scene.rb +18 -0
  220. data/lib/cukunity/unity/screen.rb +45 -0
  221. data/lib/cukunity/unity/screen_hint_methods.rb +61 -0
  222. data/lib/cukunity/unity/text_hint_methods.rb +17 -0
  223. data/lib/cukunity/unity.rb +11 -0
  224. data/lib/cukunity/utils.rb +56 -0
  225. data/lib/cukunity.rb +19 -0
  226. metadata +411 -0
@@ -0,0 +1,2 @@
1
+ fileFormatVersion: 1
2
+ guid: d03979b9411df4b23a2d76ab3eb8e474
@@ -0,0 +1,2 @@
1
+ fileFormatVersion: 1
2
+ guid: e07c677a543cf4f05b5f36dd1840d36e
@@ -0,0 +1,242 @@
1
+ /*
2
+ * CukunityServer.mm
3
+ * CukunityServer
4
+ *
5
+ * Created by Mario Freitas (imkira@gmail.com) on 2012/03/02.
6
+ * Copyright 2012 Mario Freitas (imkira@gmail.com). All rights reserved.
7
+ *
8
+ * Touch synthesization code adapted from:
9
+ * http://cocoawithlove.com/2008/10/synthesizing-touch-event-on-iphone.html
10
+ *
11
+ */
12
+
13
+ #import <Foundation/Foundation.h>
14
+ #import <UIKit/UIKit.h>
15
+
16
+ //
17
+ // TouchSynthesis.m
18
+ // SelfTesting
19
+ //
20
+ // Created by Matt Gallagher on 23/11/08.
21
+ // Copyright 2008 Matt Gallagher. All rights reserved.
22
+ //
23
+ // Permission is given to use this source code file, free of charge, in any
24
+ // project, commercial or otherwise, entirely at your risk, with the condition
25
+ // that any redistribution (in part or whole) of source code must retain
26
+ // this copyright and permission notice. Attribution in compiled projects is
27
+ // appreciated but not required.
28
+ //
29
+
30
+ //
31
+ // UITouch (Synthesize)
32
+ //
33
+ // Category to allow creation and modification of UITouch objects.
34
+ //
35
+ @interface UITouch (Synthesize)
36
+
37
+ - (id)initInView:(UIView *)view;
38
+ - (void)setPhase:(UITouchPhase)phase;
39
+ - (void)setLocationInWindow:(CGPoint)location;
40
+
41
+ @end
42
+
43
+ //
44
+ // UIEvent (Synthesize)
45
+ //
46
+ // A category to allow creation of a touch event.
47
+ //
48
+ @interface UIEvent (Synthesize)
49
+
50
+ - (id)initWithTouch:(UITouch *)touch;
51
+
52
+ @end
53
+
54
+ @implementation UITouch (Synthesize)
55
+
56
+
57
+ //
58
+ // initInView:phase:
59
+ //
60
+ // Creats a UITouch, centered on the specified view, in the view's window.
61
+ // Sets the phase as specified.
62
+ //
63
+ - (id)initInView:(UIView *)view at:(CGPoint)point tapCount:(NSUInteger)tapCount
64
+ {
65
+ self = [super init];
66
+ if (self != nil)
67
+ {
68
+ _tapCount = tapCount;
69
+ _locationInWindow = [view.window convertPoint:point fromView:view];
70
+ _previousLocationInWindow = _locationInWindow;
71
+
72
+ UIView *target = [view.window hitTest:_locationInWindow withEvent:nil];
73
+ _window = [view.window retain];
74
+ _view = [target retain];
75
+ _phase = UITouchPhaseBegan;
76
+ _touchFlags._firstTouchForView = 1;
77
+ _touchFlags._isTap = 1;
78
+ _timestamp = [NSDate timeIntervalSinceReferenceDate];
79
+ _gestureView = [view retain];
80
+ }
81
+ return self;
82
+ }
83
+
84
+ - (id)initInView:(UIView *)view
85
+ {
86
+ CGRect frameInWindow;
87
+ if ([view isKindOfClass:[UIWindow class]])
88
+ {
89
+ frameInWindow = view.frame;
90
+ }
91
+ else
92
+ {
93
+ frameInWindow =
94
+ [view.window convertRect:view.frame fromView:view.superview];
95
+ }
96
+ CGPoint point = CGPointMake(frameInWindow.origin.x + 0.5 * frameInWindow.size.width,
97
+ frameInWindow.origin.y + 0.5 * frameInWindow.size.height);
98
+ return [self initInView:view at:point tapCount:1];
99
+ }
100
+
101
+ //
102
+ // setPhase:
103
+ //
104
+ // Setter to allow access to the _phase member.
105
+ //
106
+ - (void)setPhase:(UITouchPhase)phase
107
+ {
108
+ _phase = phase;
109
+ _timestamp = [NSDate timeIntervalSinceReferenceDate];
110
+ }
111
+
112
+ //
113
+ // setPhase:
114
+ //
115
+ // Setter to allow access to the _locationInWindow member.
116
+ //
117
+ - (void)setLocationInWindow:(CGPoint)location
118
+ {
119
+ _previousLocationInWindow = _locationInWindow;
120
+ _locationInWindow = location;
121
+ _timestamp = [NSDate timeIntervalSinceReferenceDate];
122
+ }
123
+
124
+ @end
125
+
126
+ //
127
+ // GSEvent is an undeclared object. We don't need to use it ourselves but some
128
+ // Apple APIs (UIScrollView in particular) require the x and y fields to be present.
129
+ //
130
+ @interface GSEventProxy : NSObject
131
+ {
132
+ @public
133
+ unsigned int flags;
134
+ unsigned int type;
135
+ unsigned int ignored1;
136
+ float x1;
137
+ float y1;
138
+ float x2;
139
+ float y2;
140
+ unsigned int ignored2[10];
141
+ unsigned int ignored3[7];
142
+ float sizeX;
143
+ float sizeY;
144
+ float x3;
145
+ float y3;
146
+ unsigned int ignored4[3];
147
+ }
148
+ @end
149
+ @implementation GSEventProxy
150
+ @end
151
+
152
+ //
153
+ // PublicEvent
154
+ //
155
+ // A dummy class used to gain access to UIEvent's private member variables.
156
+ // If UIEvent changes at all, this will break.
157
+ //
158
+ @interface PublicEvent : NSObject
159
+ {
160
+ @public
161
+ GSEventProxy *_event;
162
+ NSTimeInterval _timestamp;
163
+ NSMutableSet *_touches;
164
+ CFMutableDictionaryRef _keyedTouches;
165
+ }
166
+ @end
167
+
168
+ @implementation PublicEvent
169
+ @end
170
+
171
+ @interface UIEvent (Creation)
172
+
173
+ - (id)_initWithEvent:(GSEventProxy *)fp8 touches:(id)fp12;
174
+
175
+ @end
176
+
177
+ //
178
+ // UIEvent (Synthesize)
179
+ //
180
+ // A category to allow creation of a touch event.
181
+ //
182
+ @implementation UIEvent (Synthesize)
183
+
184
+ - (id)initWithTouch:(UITouch *)touch
185
+ {
186
+ CGPoint location = [touch locationInView:touch.window];
187
+ GSEventProxy *gsEventProxy = [[GSEventProxy alloc] init];
188
+ gsEventProxy->x1 = location.x;
189
+ gsEventProxy->y1 = location.y;
190
+ gsEventProxy->x2 = location.x;
191
+ gsEventProxy->y2 = location.y;
192
+ gsEventProxy->x3 = location.x;
193
+ gsEventProxy->y3 = location.y;
194
+ gsEventProxy->sizeX = 1.0;
195
+ gsEventProxy->sizeY = 1.0;
196
+ gsEventProxy->flags = ([touch phase] == UITouchPhaseEnded) ? 0x1010180 : 0x3010180;
197
+ gsEventProxy->type = 3001;
198
+
199
+ //
200
+ // On SDK versions 3.0 and greater, we need to reallocate as a
201
+ // UITouchesEvent.
202
+ //
203
+ Class touchesEventClass = NSClassFromString(@"UITouchesEvent");
204
+ if (touchesEventClass && ![[self class] isEqual:touchesEventClass])
205
+ {
206
+ [self release];
207
+ self = [touchesEventClass alloc];
208
+ }
209
+
210
+ self = [self _initWithEvent:gsEventProxy touches:[NSSet setWithObject:touch]];
211
+ if (self != nil)
212
+ {
213
+ }
214
+ return self;
215
+ }
216
+
217
+ @end
218
+
219
+ extern UIViewController *UnityGetGLViewController();
220
+
221
+ extern "C"
222
+ {
223
+ extern UIViewController *sGLViewController;
224
+
225
+ void CukunityScreenInstantTap(int x, int y, int tapCount)
226
+ {
227
+ UIView *view = UnityGetGLViewController().view;
228
+ UITouch *touch = [[UITouch alloc] initInView:view at:CGPointMake(x, y) tapCount:tapCount];
229
+ UIEvent *eventDown = [[UIEvent alloc] initWithTouch:touch];
230
+
231
+ [touch.view touchesBegan:[eventDown allTouches] withEvent:eventDown];
232
+
233
+ [touch setPhase:UITouchPhaseEnded];
234
+ UIEvent *eventUp = [[UIEvent alloc] initWithTouch:touch];
235
+
236
+ [touch.view touchesEnded:[eventUp allTouches] withEvent:eventUp];
237
+
238
+ [eventDown release];
239
+ [eventUp release];
240
+ [touch release];
241
+ }
242
+ }
@@ -0,0 +1,2 @@
1
+ fileFormatVersion: 1
2
+ guid: 3b08f88bae15b41a5b30baf7477cfc02
@@ -0,0 +1,2 @@
1
+ fileFormatVersion: 1
2
+ guid: 72b43ab0fb6d6401a80abf5b4d30211e
@@ -0,0 +1,2 @@
1
+ fileFormatVersion: 1
2
+ guid: 889207ff032564006a91466ace018168
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
data/bin/cukunity ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: UTF-8 -*-
3
+
4
+ $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
5
+ require 'cukunity/cli'
6
+
7
+ Cukunity::CLI::Main.execute!
data/cukunity.gemspec ADDED
@@ -0,0 +1,298 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "cukunity"
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Mario Freitas"]
12
+ s.date = "2012-04-02"
13
+ s.description = "cukunity is a tool inspired by the principles of Behaviour Driven Development. Cukunity is a portmanteau of \"Cucumber\" and \"Unity\", and as so it provides helpers to play nicely with cucumber, although it can be used standalone for automation. "
14
+ s.email = "imkira@gmail.com"
15
+ s.executables = ["cukunity"]
16
+ s.extra_rdoc_files = [
17
+ "LICENSE.txt",
18
+ "README.md"
19
+ ]
20
+ s.files = [
21
+ ".document",
22
+ ".gitmodules",
23
+ ".rspec",
24
+ "Gemfile",
25
+ "Gemfile.lock",
26
+ "LICENSE.txt",
27
+ "README.md",
28
+ "Rakefile",
29
+ "Unity/Assets/Demo.meta",
30
+ "Unity/Assets/Demo/Art.meta",
31
+ "Unity/Assets/Demo/Art/Buttons.meta",
32
+ "Unity/Assets/Demo/Art/Buttons/down.png",
33
+ "Unity/Assets/Demo/Art/Buttons/down.png.meta",
34
+ "Unity/Assets/Demo/Art/Buttons/left.png",
35
+ "Unity/Assets/Demo/Art/Buttons/left.png.meta",
36
+ "Unity/Assets/Demo/Art/Buttons/ok.png",
37
+ "Unity/Assets/Demo/Art/Buttons/ok.png.meta",
38
+ "Unity/Assets/Demo/Art/Buttons/options.png",
39
+ "Unity/Assets/Demo/Art/Buttons/options.png.meta",
40
+ "Unity/Assets/Demo/Art/Buttons/play.png",
41
+ "Unity/Assets/Demo/Art/Buttons/play.png.meta",
42
+ "Unity/Assets/Demo/Art/Buttons/quit.png",
43
+ "Unity/Assets/Demo/Art/Buttons/quit.png.meta",
44
+ "Unity/Assets/Demo/Art/Buttons/retry.png",
45
+ "Unity/Assets/Demo/Art/Buttons/retry.png.meta",
46
+ "Unity/Assets/Demo/Art/Buttons/right.png",
47
+ "Unity/Assets/Demo/Art/Buttons/right.png.meta",
48
+ "Unity/Assets/Demo/Art/Buttons/up.png",
49
+ "Unity/Assets/Demo/Art/Buttons/up.png.meta",
50
+ "Unity/Assets/Demo/Art/clear.png",
51
+ "Unity/Assets/Demo/Art/clear.png.meta",
52
+ "Unity/Assets/Demo/Art/options.png",
53
+ "Unity/Assets/Demo/Art/options.png.meta",
54
+ "Unity/Assets/Demo/Art/sokoban.png",
55
+ "Unity/Assets/Demo/Art/sokoban.png.meta",
56
+ "Unity/Assets/Demo/Cubes.meta",
57
+ "Unity/Assets/Demo/Cubes/CrateCube.mat",
58
+ "Unity/Assets/Demo/Cubes/CrateCube.mat.meta",
59
+ "Unity/Assets/Demo/Cubes/CrateCube.prefab",
60
+ "Unity/Assets/Demo/Cubes/CrateCube.prefab.meta",
61
+ "Unity/Assets/Demo/Cubes/FloorCube.mat",
62
+ "Unity/Assets/Demo/Cubes/FloorCube.mat.meta",
63
+ "Unity/Assets/Demo/Cubes/FloorCube.prefab",
64
+ "Unity/Assets/Demo/Cubes/FloorCube.prefab.meta",
65
+ "Unity/Assets/Demo/Cubes/GoalCube.mat",
66
+ "Unity/Assets/Demo/Cubes/GoalCube.mat.meta",
67
+ "Unity/Assets/Demo/Cubes/GoalCube.prefab",
68
+ "Unity/Assets/Demo/Cubes/GoalCube.prefab.meta",
69
+ "Unity/Assets/Demo/Cubes/PlayerCube.mat",
70
+ "Unity/Assets/Demo/Cubes/PlayerCube.mat.meta",
71
+ "Unity/Assets/Demo/Cubes/PlayerCube.prefab",
72
+ "Unity/Assets/Demo/Cubes/PlayerCube.prefab.meta",
73
+ "Unity/Assets/Demo/Cubes/WallCube.mat",
74
+ "Unity/Assets/Demo/Cubes/WallCube.mat.meta",
75
+ "Unity/Assets/Demo/Cubes/WallCube.prefab",
76
+ "Unity/Assets/Demo/Cubes/WallCube.prefab.meta",
77
+ "Unity/Assets/Demo/Resources.meta",
78
+ "Unity/Assets/Demo/Resources/MainMenu.prefab",
79
+ "Unity/Assets/Demo/Resources/MainMenu.prefab.meta",
80
+ "Unity/Assets/Demo/Resources/OptionsMenu.prefab",
81
+ "Unity/Assets/Demo/Resources/OptionsMenu.prefab.meta",
82
+ "Unity/Assets/Demo/Scripts.meta",
83
+ "Unity/Assets/Demo/Scripts/CameraController.js",
84
+ "Unity/Assets/Demo/Scripts/CameraController.js.meta",
85
+ "Unity/Assets/Demo/Scripts/EnterPlayerName.js",
86
+ "Unity/Assets/Demo/Scripts/EnterPlayerName.js.meta",
87
+ "Unity/Assets/Demo/Scripts/GameLeftButton.js",
88
+ "Unity/Assets/Demo/Scripts/GameLeftButton.js.meta",
89
+ "Unity/Assets/Demo/Scripts/GameQuitButton.js",
90
+ "Unity/Assets/Demo/Scripts/GameQuitButton.js.meta",
91
+ "Unity/Assets/Demo/Scripts/GameRetryButton.js",
92
+ "Unity/Assets/Demo/Scripts/GameRetryButton.js.meta",
93
+ "Unity/Assets/Demo/Scripts/GameRightButton.js",
94
+ "Unity/Assets/Demo/Scripts/GameRightButton.js.meta",
95
+ "Unity/Assets/Demo/Scripts/GameUpButton.js",
96
+ "Unity/Assets/Demo/Scripts/GameUpButton.js.meta",
97
+ "Unity/Assets/Demo/Scripts/OnTouchGUIElementDown.js",
98
+ "Unity/Assets/Demo/Scripts/OnTouchGUIElementDown.js.meta",
99
+ "Unity/Assets/Demo/Scripts/PlayerData.js",
100
+ "Unity/Assets/Demo/Scripts/PlayerData.js.meta",
101
+ "Unity/Assets/Demo/Scripts/SokobanController.js",
102
+ "Unity/Assets/Demo/Scripts/SokobanController.js.meta",
103
+ "Unity/Assets/Demo/Scripts/TakeScreenShot.js",
104
+ "Unity/Assets/Demo/Scripts/TakeScreenShot.js.meta",
105
+ "Unity/Assets/Demo/Scripts/TitleOptionsButton.js",
106
+ "Unity/Assets/Demo/Scripts/TitleOptionsButton.js.meta",
107
+ "Unity/Assets/Demo/Scripts/TitleOptionsOkButton.js",
108
+ "Unity/Assets/Demo/Scripts/TitleOptionsOkButton.js.meta",
109
+ "Unity/Assets/Demo/Scripts/TitlePlayButton.js",
110
+ "Unity/Assets/Demo/Scripts/TitlePlayButton.js.meta",
111
+ "Unity/Assets/Demo/Scripts/TitleQuitButton.js",
112
+ "Unity/Assets/Demo/Scripts/TitleQuitButton.js.meta",
113
+ "Unity/Assets/Demo/Scripts/UpdateMovesLabel.js",
114
+ "Unity/Assets/Demo/Scripts/UpdateMovesLabel.js.meta",
115
+ "Unity/Assets/Demo/Scripts/UpdatePlayerName.js",
116
+ "Unity/Assets/Demo/Scripts/UpdatePlayerName.js.meta",
117
+ "Unity/Assets/Demo/demo_game.unity",
118
+ "Unity/Assets/Demo/demo_game.unity.meta",
119
+ "Unity/Assets/Demo/demo_title.unity",
120
+ "Unity/Assets/Demo/demo_title.unity.meta",
121
+ "Unity/Assets/Plugins.meta",
122
+ "Unity/Assets/Plugins/CukunityInstance.prefab",
123
+ "Unity/Assets/Plugins/CukunityInstance.prefab.meta",
124
+ "Unity/Assets/Plugins/CukunityServer.cs",
125
+ "Unity/Assets/Plugins/CukunityServer.cs.meta",
126
+ "Unity/Assets/Plugins/JsonFx.Json.dll",
127
+ "Unity/Assets/Plugins/JsonFx.Json.dll.meta",
128
+ "Unity/Assets/Plugins/iOS.meta",
129
+ "Unity/Assets/Plugins/iOS/CukunityServer.mm",
130
+ "Unity/Assets/Plugins/iOS/CukunityServer.mm.meta",
131
+ "Unity/Library/AudioManager.asset",
132
+ "Unity/Library/BuildSettings.asset",
133
+ "Unity/Library/DynamicsManager.asset",
134
+ "Unity/Library/EditorBuildSettings.asset",
135
+ "Unity/Library/EditorSettings.asset",
136
+ "Unity/Library/EditorUserBuildSettings.asset",
137
+ "Unity/Library/EditorUserSettings.asset",
138
+ "Unity/Library/InputManager.asset",
139
+ "Unity/Library/InspectorExpandedItems.asset",
140
+ "Unity/Library/MonoManager.asset",
141
+ "Unity/Library/NetworkManager.asset",
142
+ "Unity/Library/ProjectSettings.asset",
143
+ "Unity/Library/QualitySettings.asset",
144
+ "Unity/Library/TagManager.asset",
145
+ "Unity/Library/TimeManager.asset",
146
+ "Unity/ProjectSettings/AudioManager.asset",
147
+ "Unity/ProjectSettings/DynamicsManager.asset",
148
+ "Unity/ProjectSettings/EditorBuildSettings.asset",
149
+ "Unity/ProjectSettings/EditorSettings.asset",
150
+ "Unity/ProjectSettings/InputManager.asset",
151
+ "Unity/ProjectSettings/NavMeshLayers.asset",
152
+ "Unity/ProjectSettings/NetworkManager.asset",
153
+ "Unity/ProjectSettings/ProjectSettings.asset",
154
+ "Unity/ProjectSettings/QualitySettings.asset",
155
+ "Unity/ProjectSettings/TagManager.asset",
156
+ "Unity/ProjectSettings/TimeManager.asset",
157
+ "VERSION",
158
+ "bin/cukunity",
159
+ "cukunity.gemspec",
160
+ "features/get_scene_command.feature",
161
+ "features/i18n/ja/sokoban_clear.feature",
162
+ "features/install.feature",
163
+ "features/keyboard_input.feature",
164
+ "features/load_level_command.feature",
165
+ "features/run.feature",
166
+ "features/select_visible.feature",
167
+ "features/support/env.rb",
168
+ "features/touch_input.feature",
169
+ "lib/cukunity.rb",
170
+ "lib/cukunity/cli.rb",
171
+ "lib/cukunity/cli/argument_parser.rb",
172
+ "lib/cukunity/cli/bootstrap_command.rb",
173
+ "lib/cukunity/cli/doctor_command.rb",
174
+ "lib/cukunity/cli/features_command.rb",
175
+ "lib/cukunity/cli/main.rb",
176
+ "lib/cukunity/cli/options.rb",
177
+ "lib/cukunity/cucumber.rb",
178
+ "lib/cukunity/cucumber/step_definitions/get_scene_command_steps.rb",
179
+ "lib/cukunity/cucumber/step_definitions/i18n/ja.rb",
180
+ "lib/cukunity/cucumber/step_definitions/i18n/ja/get_scene_command_steps.rb",
181
+ "lib/cukunity/cucumber/step_definitions/i18n/ja/install_steps.rb",
182
+ "lib/cukunity/cucumber/step_definitions/i18n/ja/keyboard_input_steps.rb",
183
+ "lib/cukunity/cucumber/step_definitions/i18n/ja/load_level_command_steps.rb",
184
+ "lib/cukunity/cucumber/step_definitions/i18n/ja/run_steps.rb",
185
+ "lib/cukunity/cucumber/step_definitions/i18n/ja/select_visible_steps.rb",
186
+ "lib/cukunity/cucumber/step_definitions/i18n/ja/touch_input_steps.rb",
187
+ "lib/cukunity/cucumber/step_definitions/install_steps.rb",
188
+ "lib/cukunity/cucumber/step_definitions/keyboard_input_steps.rb",
189
+ "lib/cukunity/cucumber/step_definitions/load_level_command_steps.rb",
190
+ "lib/cukunity/cucumber/step_definitions/run_steps.rb",
191
+ "lib/cukunity/cucumber/step_definitions/select_visible_steps.rb",
192
+ "lib/cukunity/cucumber/step_definitions/touch_input_steps.rb",
193
+ "lib/cukunity/cucumber/support/platform_helpers.rb",
194
+ "lib/cukunity/cucumber/support/spec_helpers.rb",
195
+ "lib/cukunity/cucumber/support/transforms.rb",
196
+ "lib/cukunity/cucumber/support/unity_helpers.rb",
197
+ "lib/cukunity/drivers/android.rb",
198
+ "lib/cukunity/drivers/android/app.rb",
199
+ "lib/cukunity/drivers/android/appkiller/.gitignore",
200
+ "lib/cukunity/drivers/android/appkiller/AndroidManifest.xml",
201
+ "lib/cukunity/drivers/android/appkiller/ant.properties",
202
+ "lib/cukunity/drivers/android/appkiller/build.xml",
203
+ "lib/cukunity/drivers/android/appkiller/proguard.cfg",
204
+ "lib/cukunity/drivers/android/appkiller/project.properties",
205
+ "lib/cukunity/drivers/android/appkiller/res/layout/main.xml",
206
+ "lib/cukunity/drivers/android/appkiller/res/values/strings.xml",
207
+ "lib/cukunity/drivers/android/appkiller/src/cukunity/appkiller/AppKiller.java",
208
+ "lib/cukunity/drivers/android/keyboard_input.rb",
209
+ "lib/cukunity/drivers/android/keycodes.rb",
210
+ "lib/cukunity/drivers/android/monkey_client.rb",
211
+ "lib/cukunity/drivers/android/process.rb",
212
+ "lib/cukunity/drivers/android/touch_input.rb",
213
+ "lib/cukunity/drivers/android/tunnel_client_methods.rb",
214
+ "lib/cukunity/drivers/android/unity_client.rb",
215
+ "lib/cukunity/drivers/android/utils.rb",
216
+ "lib/cukunity/drivers/iOS.rb",
217
+ "lib/cukunity/drivers/iOS/app.rb",
218
+ "lib/cukunity/drivers/iOS/keyboard_input.rb",
219
+ "lib/cukunity/drivers/iOS/process.rb",
220
+ "lib/cukunity/drivers/iOS/touch_input.rb",
221
+ "lib/cukunity/drivers/iOS/tunnel_client_methods.rb",
222
+ "lib/cukunity/drivers/iOS/uiautomation.rb",
223
+ "lib/cukunity/drivers/iOS/uiautomation_master.rb",
224
+ "lib/cukunity/drivers/iOS/uiautomation_slave.js",
225
+ "lib/cukunity/drivers/iOS/uiautomation_slave.rb",
226
+ "lib/cukunity/drivers/iOS/unity_client.rb",
227
+ "lib/cukunity/drivers/iOS/utils.rb",
228
+ "lib/cukunity/exceptions.rb",
229
+ "lib/cukunity/keyboard_input_methods.rb",
230
+ "lib/cukunity/request_line_response_client_methods.rb",
231
+ "lib/cukunity/tasks/cucumber.rake",
232
+ "lib/cukunity/touch_input_methods.rb",
233
+ "lib/cukunity/unity.rb",
234
+ "lib/cukunity/unity/client_methods.rb",
235
+ "lib/cukunity/unity/command_facade.rb",
236
+ "lib/cukunity/unity/component.rb",
237
+ "lib/cukunity/unity/gameobject.rb",
238
+ "lib/cukunity/unity/hint.rb",
239
+ "lib/cukunity/unity/json_container.rb",
240
+ "lib/cukunity/unity/level.rb",
241
+ "lib/cukunity/unity/scene.rb",
242
+ "lib/cukunity/unity/screen.rb",
243
+ "lib/cukunity/unity/screen_hint_methods.rb",
244
+ "lib/cukunity/unity/text_hint_methods.rb",
245
+ "lib/cukunity/utils.rb"
246
+ ]
247
+ s.homepage = "http://github.com/imkira/cukunity"
248
+ s.licenses = ["MIT"]
249
+ s.require_paths = ["lib"]
250
+ s.rubygems_version = "1.8.11"
251
+ s.summary = "cukunity is an automation/testing framework that simplifies BDD testing of Unity 3D games."
252
+
253
+ if s.respond_to? :specification_version then
254
+ s.specification_version = 3
255
+
256
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
257
+ s.add_runtime_dependency(%q<json>, [">= 1.6.5"])
258
+ s.add_runtime_dependency(%q<term-ansicolor>, [">= 1.0.6"])
259
+ s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
260
+ s.add_development_dependency(%q<yard>, ["~> 0.7"])
261
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
262
+ s.add_development_dependency(%q<cucumber>, [">= 0"])
263
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
264
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
265
+ s.add_development_dependency(%q<reek>, ["~> 1.2.8"])
266
+ s.add_development_dependency(%q<roodi>, ["~> 2.1.0"])
267
+ s.add_runtime_dependency(%q<json>, [">= 1.6.5"])
268
+ s.add_runtime_dependency(%q<term-ansicolor>, [">= 1.0.6"])
269
+ else
270
+ s.add_dependency(%q<json>, [">= 1.6.5"])
271
+ s.add_dependency(%q<term-ansicolor>, [">= 1.0.6"])
272
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
273
+ s.add_dependency(%q<yard>, ["~> 0.7"])
274
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
275
+ s.add_dependency(%q<cucumber>, [">= 0"])
276
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
277
+ s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
278
+ s.add_dependency(%q<reek>, ["~> 1.2.8"])
279
+ s.add_dependency(%q<roodi>, ["~> 2.1.0"])
280
+ s.add_dependency(%q<json>, [">= 1.6.5"])
281
+ s.add_dependency(%q<term-ansicolor>, [">= 1.0.6"])
282
+ end
283
+ else
284
+ s.add_dependency(%q<json>, [">= 1.6.5"])
285
+ s.add_dependency(%q<term-ansicolor>, [">= 1.0.6"])
286
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
287
+ s.add_dependency(%q<yard>, ["~> 0.7"])
288
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
289
+ s.add_dependency(%q<cucumber>, [">= 0"])
290
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
291
+ s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
292
+ s.add_dependency(%q<reek>, ["~> 1.2.8"])
293
+ s.add_dependency(%q<roodi>, ["~> 2.1.0"])
294
+ s.add_dependency(%q<json>, [">= 1.6.5"])
295
+ s.add_dependency(%q<term-ansicolor>, [">= 1.0.6"])
296
+ end
297
+ end
298
+