rb-scpt 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/bin/rb-scpt-1.0.1.gem +0 -0
  3. data/extconf.rb +12 -12
  4. data/rb-scpt.gemspec +10 -10
  5. data/sample/AB_export_vcard.rb +16 -16
  6. data/sample/AB_list_people_with_emails.rb +4 -4
  7. data/sample/Add_iCal_event.rb +12 -12
  8. data/sample/Create_daily_iCal_todos.rb +28 -28
  9. data/sample/Export_Address_Book_phone_numbers.rb +52 -52
  10. data/sample/Hello_world.rb +10 -10
  11. data/sample/List_iTunes_playlist_names.rb +3 -3
  12. data/sample/Make_Mail_message.rb +24 -24
  13. data/sample/Open_file_in_TextEdit.rb +5 -5
  14. data/sample/Organize_Mail_messages.rb +46 -46
  15. data/sample/Print_folder_tree.rb +5 -5
  16. data/sample/Select_all_HTML_files.rb +6 -6
  17. data/sample/Set_iChat_status.rb +12 -12
  18. data/sample/Simple_Finder_GUI_Scripting.rb +6 -6
  19. data/sample/Stagger_Finder_windows.rb +9 -9
  20. data/sample/TextEdit_demo.rb +71 -71
  21. data/sample/iTunes_top40_to_html.rb +28 -30
  22. data/src/SendThreadSafe.c +293 -293
  23. data/src/SendThreadSafe.h +108 -108
  24. data/src/lib/_aem/aemreference.rb +997 -998
  25. data/src/lib/_aem/codecs.rb +609 -610
  26. data/src/lib/_aem/connect.rb +197 -197
  27. data/src/lib/_aem/encodingsupport.rb +67 -67
  28. data/src/lib/_aem/findapp.rb +75 -75
  29. data/src/lib/_aem/mactypes.rb +241 -242
  30. data/src/lib/_aem/send.rb +268 -268
  31. data/src/lib/_aem/typewrappers.rb +52 -52
  32. data/src/lib/_appscript/defaultterminology.rb +266 -266
  33. data/src/lib/_appscript/referencerenderer.rb +230 -233
  34. data/src/lib/_appscript/reservedkeywords.rb +106 -106
  35. data/src/lib/_appscript/safeobject.rb +125 -125
  36. data/src/lib/_appscript/terminology.rb +448 -449
  37. data/src/lib/aem.rb +238 -238
  38. data/src/lib/kae.rb +1487 -1487
  39. data/src/lib/osax.rb +647 -647
  40. data/src/lib/rb-scpt.rb +1065 -1065
  41. data/src/rbae.c +595 -595
  42. data/test/test_aemreference.rb +104 -107
  43. data/test/test_appscriptcommands.rb +131 -134
  44. data/test/test_appscriptreference.rb +96 -99
  45. data/test/test_codecs.rb +166 -168
  46. data/test/test_findapp.rb +13 -16
  47. data/test/test_mactypes.rb +70 -72
  48. data/test/test_osax.rb +46 -48
  49. data/test/testall.sh +4 -4
  50. metadata +8 -7
@@ -1,7 +1,5 @@
1
1
  #!/usr/bin/ruby -w
2
2
 
3
- begin; require 'rubygems'; rescue LoadError; end
4
-
5
3
  require 'test/unit'
6
4
  require "_aem/aemreference"
7
5
  require "_aem/typewrappers"
@@ -10,109 +8,108 @@ require "_aem/codecs"
10
8
 
11
9
  class TC_AEMReferences < Test::Unit::TestCase
12
10
 
13
- def test_reference_forms
14
- [
15
- [AEMReference::App.property('ctxt'), 'AEM.app.property("ctxt")', nil],
16
-
17
- [AEMReference::App.elements('docu'), 'AEM.app.elements("docu")', nil],
18
-
19
- [AEMReference::App.elements('docu').by_index(1),
20
- 'AEM.app.elements("docu").by_index(1)', nil],
21
- [AEMReference::App.elements('docu').by_name('foo'),
22
- 'AEM.app.elements("docu").by_name("foo")', nil],
23
- [AEMReference::App.elements('docu').by_id(300),
24
- 'AEM.app.elements("docu").by_id(300)', nil],
25
-
26
- [AEMReference::App.elements('docu').next('docu'),
27
- 'AEM.app.elements("docu").next("docu")', nil],
28
- [AEMReference::App.elements('docu').previous('docu'),
29
- 'AEM.app.elements("docu").previous("docu")', nil],
30
-
31
- [AEMReference::App.elements('docu').first, 'AEM.app.elements("docu").first', nil],
32
- [AEMReference::App.elements('docu').middle, 'AEM.app.elements("docu").middle', nil],
33
- [AEMReference::App.elements('docu').last, 'AEM.app.elements("docu").last', nil],
34
- [AEMReference::App.elements('docu').any, 'AEM.app.elements("docu").any', nil],
35
-
36
- [AEMReference::Con.elements("docu").by_index(3), 'AEM.con.elements("docu").by_index(3)', nil],
37
-
38
- [AEMReference::App.elements('docu').by_range(
39
- AEMReference::Con.elements('docu').by_index(3),
40
- AEMReference::Con.elements('docu').by_name('foo')),
41
- 'AEM.app.elements("docu").by_range(' +
42
- 'AEM.con.elements("docu").by_index(3), ' +
43
- 'AEM.con.elements("docu").by_name("foo"))', nil],
44
-
45
- [AEMReference::App.elements('docu').by_range(1, 'foo'),
46
- 'AEM.app.elements("docu").by_range(1, "foo")',
47
- AEMReference::App.elements("docu").by_range(
48
- AEMReference::Con.elements("docu").by_index(1),
49
- AEMReference::Con.elements("docu").by_name("foo"))],
50
-
51
- [AEMReference::Its.property('name').eq('foo').and(AEMReference::Its.elements('cwor').eq([])),
52
- 'AEM.its.property("name").eq("foo").and(AEM.its.elements("cwor").eq([]))', nil],
53
-
54
- [AEMReference::Its.elements('cwor').ne([]),
55
- 'AEM.its.elements("cwor").ne([])',
56
- AEMReference::Its.elements("cwor").eq([]).not], # i.e. there isn't a KAENotEqual operator, so not-equal tests are actually packed as an equal test followed by not test
57
-
58
- [AEMReference::Its.elements('cwor').eq(nil), 'AEM.its.elements("cwor").eq(nil)', nil],
59
- [AEMReference::Its.elements('cwor').property('leng').gt(0),
60
- 'AEM.its.elements("cwor").property("leng").gt(0)', nil],
61
- [AEMReference::Its.elements('cwor').le(''), 'AEM.its.elements("cwor").le("")', nil],
62
- [AEMReference::Its.elements('cwor').begins_with('foo').not,
63
- 'AEM.its.elements("cwor").begins_with("foo").not', nil],
64
-
65
-
66
- [AEMReference::Its.elements('cwor').contains('foo'), 'AEM.its.elements("cwor").contains("foo")', nil],
67
- [AEMReference::Its.elements('cwor').is_in('foo'), 'AEM.its.elements("cwor").is_in("foo")', nil],
68
-
69
- [AEMReference::App.elements('docu').by_filter(AEMReference::Its.property('size').ge(42)),
70
- 'AEM.app.elements("docu").by_filter(AEM.its.property("size").ge(42))', nil],
71
-
72
- [AEMReference::App.elements('docu').by_index(1).property('ctxt') \
73
- .elements('cpar').elements('cha ').by_range(
74
- AEMReference::Con.elements('cha ').by_index(3),
75
- AEMReference::Con.elements('cha ').by_index(55)
76
- ).next('cha ').after,
77
- 'AEM.app.elements("docu").by_index(1).property("ctxt").elements("cpar").elements("cha ")' +
78
- '.by_range(AEM.con.elements("cha ").by_index(3), AEM.con.elements("cha ").by_index(55))' +
79
- '.next("cha ").after', nil],
80
-
81
- [AEMReference::Its.property('pnam').ne('foo').and(AEMReference::Its.elements('cfol').eq([])).not,
82
- 'AEM.its.property("pnam").ne("foo").and(AEM.its.elements("cfol").eq([])).not',
83
- AEMReference::Its.property('pnam').eq('foo').not.and(AEMReference::Its.elements('cfol').eq([])).not],
84
-
85
- [AEMReference::App.elements('docu').beginning, 'AEM.app.elements("docu").beginning', nil],
86
- [AEMReference::App.elements('docu').end, 'AEM.app.elements("docu").end', nil],
87
- [AEMReference::App.elements('docu').by_index(3).before, 'AEM.app.elements("docu").by_index(3).before', nil],
88
- [AEMReference::App.elements('docu').by_name('foo').after, 'AEM.app.elements("docu").by_name("foo").after', nil],
89
-
90
- ].each do |val, res, unpacked_version|
91
- begin
92
- assert_equal(res, val.to_s)
93
- d = DefaultCodecs.pack(val)
94
- val = unpacked_version ? unpacked_version : val
95
- val2 = DefaultCodecs.unpack(d)
96
- assert_equal(val, val2)
97
- val2 = DefaultCodecs.unpack(d)
98
- assert_block { val.eql?(val2) }
99
- val2 = DefaultCodecs.unpack(d)
100
- assert_equal(val2, val)
101
- val2 = DefaultCodecs.unpack(d)
102
- assert_block { val2.eql?(val) }
103
- rescue
104
- puts 'EXPECTED: ' + res
105
- raise
106
- end
107
- end
108
- assert_not_equal(AEMReference::App.property('ctxt').property('ctxt'), AEMReference::Con.property('ctxt').property('ctxt'))
109
- assert_not_equal(AEMReference::App.property('foob').property('ctxt'), AEMReference::App.property('ctxt').property('ctxt'))
110
- assert_not_equal(AEMReference::App.elements('ctxt').property('ctxt'), AEMReference::App.property('ctxt').property('ctxt'))
111
- assert_not_equal(AEMReference::App.elements('ctxt').property('ctxt'), 333)
112
- assert_not_equal(333, AEMReference::App.property('ctxt').property('ctxt'))
113
- # # by-filter references do basic type checking to ensure an its-based reference is given
114
- assert_raises(TypeError) { AEMReference::App.elements('docu').by_filter(1) }
115
-
116
- end
117
- end
11
+ def test_reference_forms
12
+ [
13
+ [AEMReference::App.property('ctxt'), 'AEM.app.property("ctxt")', nil],
14
+
15
+ [AEMReference::App.elements('docu'), 'AEM.app.elements("docu")', nil],
16
+
17
+ [AEMReference::App.elements('docu').by_index(1),
18
+ 'AEM.app.elements("docu").by_index(1)', nil],
19
+ [AEMReference::App.elements('docu').by_name('foo'),
20
+ 'AEM.app.elements("docu").by_name("foo")', nil],
21
+ [AEMReference::App.elements('docu').by_id(300),
22
+ 'AEM.app.elements("docu").by_id(300)', nil],
23
+
24
+ [AEMReference::App.elements('docu').next('docu'),
25
+ 'AEM.app.elements("docu").next("docu")', nil],
26
+ [AEMReference::App.elements('docu').previous('docu'),
27
+ 'AEM.app.elements("docu").previous("docu")', nil],
28
+
29
+ [AEMReference::App.elements('docu').first, 'AEM.app.elements("docu").first', nil],
30
+ [AEMReference::App.elements('docu').middle, 'AEM.app.elements("docu").middle', nil],
31
+ [AEMReference::App.elements('docu').last, 'AEM.app.elements("docu").last', nil],
32
+ [AEMReference::App.elements('docu').any, 'AEM.app.elements("docu").any', nil],
33
+
34
+ [AEMReference::Con.elements("docu").by_index(3), 'AEM.con.elements("docu").by_index(3)', nil],
35
+
36
+ [AEMReference::App.elements('docu').by_range(
37
+ AEMReference::Con.elements('docu').by_index(3),
38
+ AEMReference::Con.elements('docu').by_name('foo')),
39
+ 'AEM.app.elements("docu").by_range(' +
40
+ 'AEM.con.elements("docu").by_index(3), ' +
41
+ 'AEM.con.elements("docu").by_name("foo"))', nil],
42
+
43
+ [AEMReference::App.elements('docu').by_range(1, 'foo'),
44
+ 'AEM.app.elements("docu").by_range(1, "foo")',
45
+ AEMReference::App.elements("docu").by_range(
46
+ AEMReference::Con.elements("docu").by_index(1),
47
+ AEMReference::Con.elements("docu").by_name("foo"))],
48
+
49
+ [AEMReference::Its.property('name').eq('foo').and(AEMReference::Its.elements('cwor').eq([])),
50
+ 'AEM.its.property("name").eq("foo").and(AEM.its.elements("cwor").eq([]))', nil],
118
51
 
52
+ [AEMReference::Its.elements('cwor').ne([]),
53
+ 'AEM.its.elements("cwor").ne([])',
54
+ AEMReference::Its.elements("cwor").eq([]).not], # i.e. there isn't a KAENotEqual operator, so not-equal tests are actually packed as an equal test followed by not test
55
+
56
+ [AEMReference::Its.elements('cwor').eq(nil), 'AEM.its.elements("cwor").eq(nil)', nil],
57
+ [AEMReference::Its.elements('cwor').property('leng').gt(0),
58
+ 'AEM.its.elements("cwor").property("leng").gt(0)', nil],
59
+ [AEMReference::Its.elements('cwor').le(''), 'AEM.its.elements("cwor").le("")', nil],
60
+ [AEMReference::Its.elements('cwor').begins_with('foo').not,
61
+ 'AEM.its.elements("cwor").begins_with("foo").not', nil],
62
+
63
+
64
+ [AEMReference::Its.elements('cwor').contains('foo'), 'AEM.its.elements("cwor").contains("foo")', nil],
65
+ [AEMReference::Its.elements('cwor').is_in('foo'), 'AEM.its.elements("cwor").is_in("foo")', nil],
66
+
67
+ [AEMReference::App.elements('docu').by_filter(AEMReference::Its.property('size').ge(42)),
68
+ 'AEM.app.elements("docu").by_filter(AEM.its.property("size").ge(42))', nil],
69
+
70
+ [AEMReference::App.elements('docu').by_index(1).property('ctxt') \
71
+ .elements('cpar').elements('cha ').by_range(
72
+ AEMReference::Con.elements('cha ').by_index(3),
73
+ AEMReference::Con.elements('cha ').by_index(55)
74
+ ).next('cha ').after,
75
+ 'AEM.app.elements("docu").by_index(1).property("ctxt").elements("cpar").elements("cha ")' +
76
+ '.by_range(AEM.con.elements("cha ").by_index(3), AEM.con.elements("cha ").by_index(55))' +
77
+ '.next("cha ").after', nil],
78
+
79
+ [AEMReference::Its.property('pnam').ne('foo').and(AEMReference::Its.elements('cfol').eq([])).not,
80
+ 'AEM.its.property("pnam").ne("foo").and(AEM.its.elements("cfol").eq([])).not',
81
+ AEMReference::Its.property('pnam').eq('foo').not.and(AEMReference::Its.elements('cfol').eq([])).not],
82
+
83
+ [AEMReference::App.elements('docu').beginning, 'AEM.app.elements("docu").beginning', nil],
84
+ [AEMReference::App.elements('docu').end, 'AEM.app.elements("docu").end', nil],
85
+ [AEMReference::App.elements('docu').by_index(3).before, 'AEM.app.elements("docu").by_index(3).before', nil],
86
+ [AEMReference::App.elements('docu').by_name('foo').after, 'AEM.app.elements("docu").by_name("foo").after', nil],
87
+
88
+ ].each do |val, res, unpacked_version|
89
+ begin
90
+ assert_equal(res, val.to_s)
91
+ d = DefaultCodecs.pack(val)
92
+ val = unpacked_version ? unpacked_version : val
93
+ val2 = DefaultCodecs.unpack(d)
94
+ assert_equal(val, val2)
95
+ val2 = DefaultCodecs.unpack(d)
96
+ assert_block { val.eql?(val2) }
97
+ val2 = DefaultCodecs.unpack(d)
98
+ assert_equal(val2, val)
99
+ val2 = DefaultCodecs.unpack(d)
100
+ assert_block { val2.eql?(val) }
101
+ rescue
102
+ puts 'EXPECTED: ' + res
103
+ raise
104
+ end
105
+ end
106
+ assert_not_equal(AEMReference::App.property('ctxt').property('ctxt'), AEMReference::Con.property('ctxt').property('ctxt'))
107
+ assert_not_equal(AEMReference::App.property('foob').property('ctxt'), AEMReference::App.property('ctxt').property('ctxt'))
108
+ assert_not_equal(AEMReference::App.elements('ctxt').property('ctxt'), AEMReference::App.property('ctxt').property('ctxt'))
109
+ assert_not_equal(AEMReference::App.elements('ctxt').property('ctxt'), 333)
110
+ assert_not_equal(333, AEMReference::App.property('ctxt').property('ctxt'))
111
+ # # by-filter references do basic type checking to ensure an its-based reference is given
112
+ assert_raises(TypeError) { AEMReference::App.elements('docu').by_filter(1) }
113
+
114
+ end
115
+ end
@@ -1,6 +1,4 @@
1
- #!/usr/bin/ruby -w
2
-
3
- begin; require 'rubygems'; rescue LoadError; end
1
+ #!/usr/local/bin/ruby -w
4
2
 
5
3
  require 'test/unit'
6
4
  require 'rb-scpt'
@@ -13,140 +11,139 @@ require 'rb-scpt'
13
11
 
14
12
  class TC_AppscriptNewApp < Test::Unit::TestCase
15
13
 
16
- def test_by_name
17
- [
18
- '/Applications/TextEdit.app',
19
- 'Finder.app',
20
- 'System Events'
21
- ].each do |name|
22
- a = Appscript.app(name)
23
- assert_not_nil(a)
24
- assert_instance_of(Appscript::Application, a)
25
- assert_instance_of(Appscript::Reference, a.name)
26
- end
27
- assert_equal('app("/Applications/TextEdit.app")', Appscript.app('TextEdit').to_s)
28
- assert_equal('app("/Applications/TextEdit.app")', Appscript.app.by_name('TextEdit').to_s)
29
-
30
- assert_raises(Appscript::ApplicationNotFoundError) { Appscript.app('/non-existent/app') }
31
- assert_raises(Appscript::ApplicationNotFoundError) { Appscript.app('non-existent.app') }
32
- end
33
-
34
- def test_by_id
35
- [
36
- 'com.apple.textedit',
37
- 'com.apple.finder',
38
- ].each do |name|
39
- a = Appscript.app.by_id(name)
40
- assert_not_nil(a)
41
- assert_instance_of(Appscript::Application, a)
42
- assert_instance_of(Appscript::Reference, a.name)
43
- end
44
- assert_equal('app("/Applications/TextEdit.app")', Appscript.app.by_id('com.apple.textedit').to_s)
45
-
46
- assert_raises(Appscript::ApplicationNotFoundError) { Appscript.app.by_id('non.existent.app') }
47
- end
48
-
49
- def test_by_creator
50
- a = Appscript.app.by_creator('ttxt')
51
- assert_instance_of(Appscript::Reference, a.name)
52
- assert_equal('app("/Applications/TextEdit.app")', a.to_s)
53
- assert_raises(Appscript::ApplicationNotFoundError) { Appscript.app.by_id('!@$o') }
54
- end
55
-
56
- def test_by_pid
57
- pid = `top -l1 | grep Finder | awk '{ print $1 }'`.to_i # note: this line will return a bad result if more than one user is logged in
58
- a = Appscript.app.by_pid(pid)
59
- assert_instance_of(Appscript::Reference, a.name)
60
- assert_equal("app.by_pid(#{pid})", a.to_s)
61
- assert_equal('Finder', a.name.get)
62
- end
63
-
64
- def test_by_aem_app
65
- a = Appscript.app.by_aem_app(AEM::Application.by_path('/Applications/TextEdit.app'))
66
- assert_instance_of(Appscript::Reference, a.name)
67
- assert_equal('app.by_aem_app(AEM::Application.by_path("/Applications/TextEdit.app"))', a.to_s)
68
- end
14
+ def test_by_name
15
+ [
16
+ '/Applications/TextEdit.app',
17
+ 'Finder.app',
18
+ 'System Events'
19
+ ].each do |name|
20
+ a = Appscript.app(name)
21
+ assert_not_nil(a)
22
+ assert_instance_of(Appscript::Application, a)
23
+ assert_instance_of(Appscript::Reference, a.name)
24
+ end
25
+ assert_equal('app("/Applications/TextEdit.app")', Appscript.app('TextEdit').to_s)
26
+ assert_equal('app("/Applications/TextEdit.app")', Appscript.app.by_name('TextEdit').to_s)
27
+
28
+ assert_raises(Appscript::ApplicationNotFoundError) { Appscript.app('/non-existent/app') }
29
+ assert_raises(Appscript::ApplicationNotFoundError) { Appscript.app('non-existent.app') }
30
+ end
31
+
32
+ def test_by_id
33
+ [
34
+ 'com.apple.textedit',
35
+ 'com.apple.finder',
36
+ ].each do |name|
37
+ a = Appscript.app.by_id(name)
38
+ assert_not_nil(a)
39
+ assert_instance_of(Appscript::Application, a)
40
+ assert_instance_of(Appscript::Reference, a.name)
41
+ end
42
+ assert_equal('app("/Applications/TextEdit.app")', Appscript.app.by_id('com.apple.textedit').to_s)
43
+
44
+ assert_raises(Appscript::ApplicationNotFoundError) { Appscript.app.by_id('non.existent.app') }
45
+ end
46
+
47
+ def test_by_creator
48
+ a = Appscript.app.by_creator('ttxt')
49
+ assert_instance_of(Appscript::Reference, a.name)
50
+ assert_equal('app("/Applications/TextEdit.app")', a.to_s)
51
+ assert_raises(Appscript::ApplicationNotFoundError) { Appscript.app.by_id('!@$o') }
52
+ end
53
+
54
+ def test_by_pid
55
+ pid = `top -l1 | grep Finder | awk '{ print $1 }'`.to_i # note: this line will return a bad result if more than one user is logged in
56
+ a = Appscript.app.by_pid(pid)
57
+ assert_instance_of(Appscript::Reference, a.name)
58
+ assert_equal("app.by_pid(#{pid})", a.to_s)
59
+ assert_equal('Finder', a.name.get)
60
+ end
61
+
62
+ def test_by_aem_app
63
+ a = Appscript.app.by_aem_app(AEM::Application.by_path('/Applications/TextEdit.app'))
64
+ assert_instance_of(Appscript::Reference, a.name)
65
+ assert_equal('app.by_aem_app(AEM::Application.by_path("/Applications/TextEdit.app"))', a.to_s)
66
+ end
69
67
  end
70
68
 
71
69
 
72
70
  class TC_AppscriptCommands < Test::Unit::TestCase
73
71
 
74
- def setup
75
- @te = Appscript.app('TextEdit')
76
- @f = Appscript.app('Finder')
77
- end
78
-
79
- def test_commands_1
80
- assert_equal('TextEdit', @te.name.get)
81
- d = @te.make(:new=>:document, :with_properties=>{:text=>'test test_commands'})
82
- assert_instance_of(Appscript::Reference, d)
83
- d.text.end.make(:new=>:word, :with_data=>' test2')
84
- assert_equal('test test_commands test2', d.text.get)
85
- assert_instance_of(String,
86
- d.text.get(:ignore=>[:diacriticals, :punctuation, :whitespace, :expansion], :timeout=>10))
87
- assert_nil(d.get(:wait_reply=>false))
88
-
89
-
90
- # test Ruby 1.9+ String Encoding support
91
- version, sub_version = RUBY_VERSION.split('.').collect {|n| n.to_i} [0, 2]
92
- if version >= 1 and sub_version >= 9
93
-
94
- print "(check Encoding support)"
95
- s = "\302\251 M. Lef\303\250vre"
96
- s.force_encoding('utf-8')
97
- d.text.set(s)
98
- assert_equal(s, d.text.get)
99
-
100
- @te.AS_app_data.use_ascii_8bit
101
- end
102
-
103
- d.text.set("\302\251 M. Lef\303\250vre")
104
- assert_equal("\302\251 M. Lef\303\250vre", d.text.get)
105
-
106
- d.close(:saving=>:no)
107
- end
108
-
109
- def test_commands_2
110
- d = @te.make(:new=>:document, :at=>@te.documents.end)
111
-
112
- @te.set(d.text, :to=> 'test1')
113
- assert_equal('test1', d.text.get)
114
-
115
- @te.set(d.text, :to=> 'test2')
116
- @te.make(:new=>:word, :at=>Appscript.app.documents[1].paragraphs.end, :with_data=>' test3')
117
- assert_equal('test2 test3', d.text.get)
118
-
119
- d.close(:saving=>:no)
120
-
121
- assert_raises(Appscript::CommandError) { @te.documents[10000].get }
122
-
123
- assert_instance_of(Fixnum, @te.documents.count)
124
- assert_equal(@te.documents.count, @te.count(:each=>:document))
125
- end
126
-
127
- def test_commands_3
128
- assert_equal('Finder', @f.name.get)
129
- val = @f.home.folders['Desktop'].get(:result_type=>:alias)
130
- assert_instance_of(MacTypes::Alias, val)
131
- assert_equal(val, @f.desktop.get(:result_type=>:alias))
132
- assert_instance_of(Array, @f.disks.get)
133
-
134
- r = @f.home.get
135
- f = r.get(:result_type=>:file_ref)
136
- assert_equal(r, @f.items[f].get)
137
-
138
- assert_equal(@f.home.items.get, @f.home.items.get)
139
- assert_not_equal(@f.disks['non-existent'], @f.disks[1].get)
140
- end
141
-
142
- def test_command_error
143
- begin
144
- @f.items[10000].get
145
- rescue Appscript::CommandError => e
146
- assert_equal(-1728, e.to_i)
147
- assert_equal("CommandError\n\t\tOSERROR: -1728\n\t\tMESSAGE: Can't get reference.\n\t\tOFFENDING OBJECT: app(\"/System/Library/CoreServices/Finder.app\").items[10000]\n\t\tCOMMAND: app(\"/System/Library/CoreServices/Finder.app\").items[10000].get()\n", e.to_s)
148
- assert_instance_of(AEM::EventError, e.real_error)
149
- end
150
- end
151
- end
72
+ def setup
73
+ @te = Appscript.app('TextEdit')
74
+ @f = Appscript.app('Finder')
75
+ end
76
+
77
+ def test_commands_1
78
+ assert_equal('TextEdit', @te.name.get)
79
+ d = @te.make(:new=>:document, :with_properties=>{:text=>'test test_commands'})
80
+ assert_instance_of(Appscript::Reference, d)
81
+ d.text.end.make(:new=>:word, :with_data=>' test2')
82
+ assert_equal('test test_commands test2', d.text.get)
83
+ assert_instance_of(String,
84
+ d.text.get(:ignore=>[:diacriticals, :punctuation, :whitespace, :expansion], :timeout=>10))
85
+ assert_nil(d.get(:wait_reply=>false))
86
+
87
+
88
+ # test Ruby 1.9+ String Encoding support
89
+ version, sub_version = RUBY_VERSION.split('.').collect {|n| n.to_i} [0, 2]
90
+ if version >= 1 and sub_version >= 9
91
+
92
+ print "(check Encoding support)"
93
+ s = "\302\251 M. Lef\303\250vre"
94
+ s.force_encoding('utf-8')
95
+ d.text.set(s)
96
+ assert_equal(s, d.text.get)
97
+
98
+ @te.AS_app_data.use_ascii_8bit
99
+ end
152
100
 
101
+ d.text.set("\302\251 M. Lef\303\250vre")
102
+ assert_equal("\302\251 M. Lef\303\250vre", d.text.get)
103
+
104
+ d.close(:saving=>:no)
105
+ end
106
+
107
+ def test_commands_2
108
+ d = @te.make(:new=>:document, :at=>@te.documents.end)
109
+
110
+ @te.set(d.text, :to=> 'test1')
111
+ assert_equal('test1', d.text.get)
112
+
113
+ @te.set(d.text, :to=> 'test2')
114
+ @te.make(:new=>:word, :at=>Appscript.app.documents[1].paragraphs.end, :with_data=>' test3')
115
+ assert_equal('test2 test3', d.text.get)
116
+
117
+ d.close(:saving=>:no)
118
+
119
+ assert_raises(Appscript::CommandError) { @te.documents[10000].get }
120
+
121
+ assert_instance_of(Fixnum, @te.documents.count)
122
+ assert_equal(@te.documents.count, @te.count(:each=>:document))
123
+ end
124
+
125
+ def test_commands_3
126
+ assert_equal('Finder', @f.name.get)
127
+ val = @f.home.folders['Desktop'].get(:result_type=>:alias)
128
+ assert_instance_of(MacTypes::Alias, val)
129
+ assert_equal(val, @f.desktop.get(:result_type=>:alias))
130
+ assert_instance_of(Array, @f.disks.get)
131
+
132
+ r = @f.home.get
133
+ f = r.get(:result_type=>:file_ref)
134
+ assert_equal(r, @f.items[f].get)
135
+
136
+ assert_equal(@f.home.items.get, @f.home.items.get)
137
+ assert_not_equal(@f.disks['non-existent'], @f.disks[1].get)
138
+ end
139
+
140
+ def test_command_error
141
+ begin
142
+ @f.items[10000].get
143
+ rescue Appscript::CommandError => e
144
+ assert_equal(-1728, e.to_i)
145
+ assert_equal("CommandError\n\t\tOSERROR: -1728\n\t\tMESSAGE: Can't get reference.\n\t\tOFFENDING OBJECT: app(\"/System/Library/CoreServices/Finder.app\").items[10000]\n\t\tCOMMAND: app(\"/System/Library/CoreServices/Finder.app\").items[10000].get()\n", e.to_s)
146
+ assert_instance_of(AEM::EventError, e.real_error)
147
+ end
148
+ end
149
+ end