motion-accessibility 3.2.1 → 3.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/project/inspector.rb +3 -2
- data/lib/project/test.rb +73 -17
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e64727e1de692d10abb796a40266e58a754ecfc
|
4
|
+
data.tar.gz: 08d0987f4677c22bbb4dd790cc6d76dfea53cdfa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30b3227b842bb63e39ef1aa1cb937c90075b76cf454c155e241d420c020d3b726e943ae46a7b42962f3af78833c06f8e84d2ee67b10323594fd3faad061496be
|
7
|
+
data.tar.gz: c69492392cf2101a301a2cb360b9d7f18d29ab14ca32796f65e884b5275d3e7116d0254d89a4652de513ad8e898b6a4bafd8be716690e1b2223735759a5318cb
|
data/lib/project/inspector.rb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
module Accessibility
|
4
4
|
|
5
5
|
def self.inspect(obj)
|
6
|
+
return self.inspect(obj.get) if obj.is_a?(RubyMotionQuery::RMQ)
|
6
7
|
displayed=[]
|
7
8
|
if obj.class==Accessibility::Element
|
8
9
|
attributes=A11y::Element_Attributes.dup
|
@@ -56,10 +57,10 @@ end
|
|
56
57
|
end
|
57
58
|
|
58
59
|
def self.inspect_accessibility_traits(obj)
|
59
|
-
return obj.
|
60
|
+
return obj.accessibilityTraits if obj.accessibilityTraits>Accessibility::Traits.values.max
|
60
61
|
traits=[]
|
61
62
|
Accessibility::Traits.each do |trait, bitmask|
|
62
|
-
if obj.
|
63
|
+
if obj.accessibilityTraits&bitmask>0
|
63
64
|
name=trait.gsub(/_/,' ').capitalize
|
64
65
|
traits<<name
|
65
66
|
end
|
data/lib/project/test.rb
CHANGED
@@ -80,7 +80,7 @@ quiet: false,
|
|
80
80
|
},
|
81
81
|
UINavigationBar: {
|
82
82
|
accessibility_label: nil,
|
83
|
-
accessibility_traits:
|
83
|
+
accessibility_traits: :nonstandard,
|
84
84
|
accessibility_elements_hidden: false,
|
85
85
|
should_group_accessibility_children: true,
|
86
86
|
accessibility_identifier: [String, "You must set the accessibility_identifier to the title of the view. You can set the title of the view controller or of the navigation item."],
|
@@ -151,12 +151,12 @@ quiet: false,
|
|
151
151
|
},
|
152
152
|
UISwitch: {
|
153
153
|
accessibility_label: nil,
|
154
|
-
accessibility_traits:
|
154
|
+
accessibility_traits: :nonstandard,
|
155
155
|
accessibility_value: [String, "You must set the accessibility_value to \"1\" or \"0\""]
|
156
156
|
},
|
157
157
|
UITabBar: {
|
158
158
|
accessibility_label: nil,
|
159
|
-
accessibility_traits:
|
159
|
+
accessibility_traits: :nonstandard,
|
160
160
|
should_group_accessibility_children: true,
|
161
161
|
is_accessibility_element: false,
|
162
162
|
options: {
|
@@ -166,7 +166,7 @@ quiet: false,
|
|
166
166
|
},
|
167
167
|
UITabBarButton: {
|
168
168
|
accessibility_label: [String, "You must set the title of this button. You can se tthe title of the UITabBarItem."],
|
169
|
-
accessibility_traits:
|
169
|
+
accessibility_traits: :nonstandard,
|
170
170
|
},
|
171
171
|
UITabBarController: {
|
172
172
|
accessibility_label: nil,
|
@@ -177,10 +177,10 @@ quiet: false,
|
|
177
177
|
}
|
178
178
|
},
|
179
179
|
UITableView: {
|
180
|
-
accessibility_label:
|
181
|
-
accessibility_traits:
|
180
|
+
accessibility_label: ->(t){table_label(t)},
|
181
|
+
accessibility_traits: :nonstandard,
|
182
182
|
should_group_accessibility_children: true,
|
183
|
-
is_accessibility_element:
|
183
|
+
is_accessibility_element: ->(t){ table_is_element(t)}
|
184
184
|
},
|
185
185
|
UITableViewCell: {
|
186
186
|
accessibility_label: :ignore,
|
@@ -200,7 +200,7 @@ quiet: false,
|
|
200
200
|
},
|
201
201
|
UITableTextAccessibilityElement: {
|
202
202
|
accessibility_label: [String, "Set the accessibility_label to the text of the view."],
|
203
|
-
accessibility_traits:
|
203
|
+
accessibility_traits: :ignore,
|
204
204
|
accessibility_value: String,
|
205
205
|
},
|
206
206
|
UITableViewHeaderFooterView: {
|
@@ -208,19 +208,19 @@ quiet: false,
|
|
208
208
|
},
|
209
209
|
UITextField: {
|
210
210
|
accessibility_label: nil,
|
211
|
-
accessibility_traits:
|
211
|
+
accessibility_traits: :nonstandard,
|
212
212
|
accessibility_value: [:something, "You must set the text of the textfield."],
|
213
213
|
is_accessibility_element: false
|
214
214
|
},
|
215
215
|
UIAccessibilityTextFieldElement: {
|
216
216
|
accessibility_label: nil,
|
217
|
-
accessibility_traits:
|
217
|
+
accessibility_traits: :nonstandard,
|
218
218
|
accessibility_value: [:something, "You must set the text of the textfield."],
|
219
219
|
is_accessibility_element: true
|
220
220
|
},
|
221
221
|
UIToolbar: {
|
222
222
|
accessibility_label: nil,
|
223
|
-
accessibility_traits:
|
223
|
+
accessibility_traits: :nonstandard,
|
224
224
|
should_group_accessibility_children: true,
|
225
225
|
is_accessibility_element:false,
|
226
226
|
options: {
|
@@ -260,6 +260,13 @@ quiet: false,
|
|
260
260
|
options: {
|
261
261
|
test: :window
|
262
262
|
}
|
263
|
+
},
|
264
|
+
:"RubyMotionQuery::App" => {
|
265
|
+
accessibility_label: nil,
|
266
|
+
is_accessibility_element: false,
|
267
|
+
options: {
|
268
|
+
test: :rmq_app
|
269
|
+
}
|
263
270
|
}
|
264
271
|
}
|
265
272
|
|
@@ -288,16 +295,17 @@ if UIDevice.currentDevice.systemVersion.to_f>=8.0
|
|
288
295
|
options: {recurse: false}
|
289
296
|
}
|
290
297
|
Tests[:UITableView] = {
|
291
|
-
accessibility_label:
|
292
|
-
accessibility_traits:
|
298
|
+
accessibility_label: ->(t){table_label(t)},
|
299
|
+
accessibility_traits: :nonstandard,
|
293
300
|
should_group_accessibility_children: true,
|
294
|
-
is_accessibility_element:
|
301
|
+
is_accessibility_element: ->(t){table_is_element(t)}
|
295
302
|
}
|
296
303
|
Tests[:UITableViewCell] = {
|
297
304
|
accessibility_label: :ignore,
|
298
305
|
accessibility_value: :ignore,
|
299
306
|
should_group_accessibility_children: true,
|
300
307
|
is_accessibility_element: false,
|
308
|
+
accessibility_elements_hidden: :ignore,
|
301
309
|
options: {
|
302
310
|
recurse: false,
|
303
311
|
test: :tableViewCell
|
@@ -372,6 +380,36 @@ controller.viewControllers.each {|c| result=result&&self.run_tests(c)}
|
|
372
380
|
result
|
373
381
|
end
|
374
382
|
|
383
|
+
def self.table_is_element(table)
|
384
|
+
if table.empty?
|
385
|
+
unless table.accessibility_element?
|
386
|
+
A11y::Test::Log.add(Path, "You must set is_accessibility_element to true for an empty table.")
|
387
|
+
return false
|
388
|
+
end
|
389
|
+
else
|
390
|
+
if table.accessibility_element?
|
391
|
+
A11y::Test::Log.add(Path, "You must set is_accessibility_element to false for a table with data.")
|
392
|
+
return false
|
393
|
+
end
|
394
|
+
end
|
395
|
+
true
|
396
|
+
end
|
397
|
+
|
398
|
+
def self.table_label(table)
|
399
|
+
if table.empty?
|
400
|
+
unless table.accessibility_label.is_a?(String)
|
401
|
+
A11y::Test::Log.add(Path, "You must set the accessibility label to what you want VoiceOver to say instead of an empty table.")
|
402
|
+
return false
|
403
|
+
end
|
404
|
+
else
|
405
|
+
unless table.accessibility_label.nil?
|
406
|
+
A11y::Test::Log.add(Path, "You must set the accessibility label to nil.")
|
407
|
+
return false
|
408
|
+
end
|
409
|
+
end
|
410
|
+
true
|
411
|
+
end
|
412
|
+
|
375
413
|
def self.tableViewCell(cell)
|
376
414
|
return true if cell.accessibility_label||cell.textLabel.text
|
377
415
|
A11y::Test::Log.add(Path, "Please set the accessibility_label of the UITableViewCell. You can do this by setting the textLabel.text property.")
|
@@ -386,8 +424,13 @@ result
|
|
386
424
|
self.run_tests(window.rootViewController)
|
387
425
|
end
|
388
426
|
|
427
|
+
def self.rmq_app(app)
|
428
|
+
self.run_tests(app.window)
|
429
|
+
end
|
430
|
+
|
389
431
|
def self.find_tests(obj)
|
390
432
|
return Tests[obj] if obj.kind_of?(Symbol)
|
433
|
+
return Tests[obj.to_s.to_sym] if obj.is_a?(Class)
|
391
434
|
obj_tests=A11y::Test::Tests[:NSObject].clone
|
392
435
|
cl=obj.class
|
393
436
|
class_name=cl.to_s.to_sym
|
@@ -412,6 +455,7 @@ obj_tests
|
|
412
455
|
return true if expected==:ignore
|
413
456
|
value=obj.send(attribute) if obj.respond_to?(attribute)
|
414
457
|
return value if expected==:something
|
458
|
+
return nonstandard(value) if expected==:nonstandard
|
415
459
|
result=true
|
416
460
|
if expected.class==Class
|
417
461
|
if value.class!=expected
|
@@ -419,10 +463,9 @@ if value.class!=expected
|
|
419
463
|
message||="#{attribute} must have an object of type #{expected} instead of #{value}"
|
420
464
|
end
|
421
465
|
elsif expected.kind_of?(Proc)
|
422
|
-
r=expected.call(
|
466
|
+
r=expected.call(obj)
|
423
467
|
unless r
|
424
468
|
result=false
|
425
|
-
message||="The test function for #{attribute} failed."
|
426
469
|
end
|
427
470
|
else
|
428
471
|
unless expected==value
|
@@ -430,13 +473,14 @@ result=false
|
|
430
473
|
message||="#{attribute} must have the value \"#{expected}\" instead of \"#{value}\""
|
431
474
|
end
|
432
475
|
end
|
433
|
-
A11y::Test::Log.add(Path, message)
|
476
|
+
A11y::Test::Log.add(Path, message) if message&&!result
|
434
477
|
puts "Testing #{attribute}... #{result}" if Data[:debug]
|
435
478
|
result
|
436
479
|
end
|
437
480
|
|
438
481
|
def self.run_tests(obj)
|
439
482
|
puts "Entering run_tests: #{obj.inspect}" if Data[:debug]
|
483
|
+
return self.run_tests(obj.get) if defined?(RubyMotionQuery::RMQ)&&obj.is_a?(RubyMotionQuery::RMQ)
|
440
484
|
if Data[:depth]==0
|
441
485
|
A11y::Test::Log::Events.clear
|
442
486
|
Path.clear
|
@@ -510,3 +554,15 @@ result
|
|
510
554
|
|
511
555
|
end
|
512
556
|
|
557
|
+
class UITableView
|
558
|
+
|
559
|
+
def empty?
|
560
|
+
cells=0
|
561
|
+
numberOfSections.times do |section|
|
562
|
+
cells+=numberOfRowsInSection(section)
|
563
|
+
end
|
564
|
+
cells==0
|
565
|
+
end
|
566
|
+
|
567
|
+
end
|
568
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: motion-accessibility
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Austin Seraphin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|