sleipnir-api 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 (42) hide show
  1. data/History.txt +3 -0
  2. data/License.txt +20 -0
  3. data/Manifest.txt +41 -0
  4. data/README.txt +56 -0
  5. data/Rakefile +201 -0
  6. data/TODO.txt +11 -0
  7. data/examples/reload.rb +18 -0
  8. data/helper/helper.rb +3 -0
  9. data/helper/rake.rb +58 -0
  10. data/helper/rake_sh_filter.rb +23 -0
  11. data/helper/util.rb +19 -0
  12. data/lib/sleipnir_api.rb +177 -0
  13. data/lib/sleipnir_api/dialog.rb +155 -0
  14. data/lib/sleipnir_api/key_state.rb +49 -0
  15. data/lib/sleipnir_api/output.rb +319 -0
  16. data/lib/sleipnir_api/process.rb +69 -0
  17. data/lib/sleipnir_api/profile.rb +332 -0
  18. data/lib/sleipnir_api/registry.rb +30 -0
  19. data/lib/sleipnir_api/security.rb +263 -0
  20. data/lib/sleipnir_api/sleipnir.rb +489 -0
  21. data/lib/sleipnir_api/tab.rb +359 -0
  22. data/lib/sleipnir_api/util.rb +16 -0
  23. data/lib/sleipnir_api/version.rb +9 -0
  24. data/lib/sleipnir_api/win32api.rb +17 -0
  25. data/scripts/rdoc_filter.rb +74 -0
  26. data/setup.rb +1585 -0
  27. data/spec/matchers/path_eql.rb +41 -0
  28. data/spec/sleipnir_api/dialog_mock_spec.rb +99 -0
  29. data/spec/sleipnir_api/key_state_mock_spec.rb +72 -0
  30. data/spec/sleipnir_api/output_spec.rb +242 -0
  31. data/spec/sleipnir_api/profile_mock_spec.rb +128 -0
  32. data/spec/sleipnir_api/registry_spec.rb +13 -0
  33. data/spec/sleipnir_api/security_mock_spec.rb +82 -0
  34. data/spec/sleipnir_api/security_spec.rb +129 -0
  35. data/spec/sleipnir_api/sleipnir_mock_spec.rb +70 -0
  36. data/spec/sleipnir_api/sleipnir_spec.rb +295 -0
  37. data/spec/sleipnir_api/tab_mock_spec.rb +98 -0
  38. data/spec/sleipnir_api/tab_spec.rb +105 -0
  39. data/spec/sleipnir_api_spec.rb +17 -0
  40. data/spec/spec.opts +0 -0
  41. data/spec/spec_helper.rb +8 -0
  42. metadata +91 -0
@@ -0,0 +1,128 @@
1
+ require File.join(File.dirname(__FILE__), "../spec_helper.rb")
2
+
3
+ describe SleipnirAPI::Profile do
4
+
5
+ before(:all) do
6
+ @pnir = SleipnirAPI.connect
7
+ @profile = @pnir.profile
8
+ @user_path = @pnir.user_path
9
+ @api = @pnir.instance_variable_get(:@api)
10
+ end
11
+
12
+ after(:all) do
13
+ @pnir.instance_variable_set(:@api, @api)
14
+ end
15
+
16
+ before do
17
+ @mock = mock("Sleipnir.API")
18
+ @pnir.instance_variable_set(:@api, @mock)
19
+ end
20
+
21
+
22
+ # get string
23
+
24
+ it "#get_string should send GetProfileString" do
25
+ @mock.should_receive(:GetProfileString).with("section", "key", nil)
26
+ @profile.get_string("section", "key")
27
+ end
28
+
29
+ it "#get_string(:default) should send GetProfileString" do
30
+ @mock.should_receive(:GetProfileString).with("section", "key", "default value")
31
+ @profile.get_string("section", "key", :default => "default value")
32
+ end
33
+
34
+ it "#get_string(:cipher) should send GetProfileStringCipher" do
35
+ @mock.should_receive(:GetProfileStringCipher).with("section", "key", nil)
36
+ @profile.get_string("section", "key", :cipher => true)
37
+ end
38
+
39
+ it "#get_string(:cipher, :default) should send GetProfileStringCipher" do
40
+ @mock.should_receive(:GetProfileStringCipher).with("section", "key", "default value")
41
+ @profile.get_string("section", "key", :cipher => true, :default => "default value")
42
+ end
43
+
44
+ it "#get_string(:ini) should send GetProfileStringEx" do
45
+ @mock.should_receive(:UserPath).and_return(@user_path)
46
+ @mock.should_receive(:GetProfileStringEx).with(
47
+ "section", "key", nil, File.expand_path("foo.ini", @user_path))
48
+ @profile.get_string("section", "key", :ini => "foo.ini")
49
+ end
50
+
51
+ it "#get_string(:ini, :default) should send GetProfileStringEx" do
52
+ @mock.should_receive(:UserPath).and_return(@user_path)
53
+ @mock.should_receive(:GetProfileStringEx).with(
54
+ "section", "key", "default value", "c:/foo.ini")
55
+ @profile.get_string("section", "key", :ini => "c:/foo.ini", :default => "default value")
56
+ end
57
+
58
+
59
+ # get int
60
+
61
+ it "#get_int should send GetProfileInt" do
62
+ @mock.should_receive(:GetProfileInt).with("section", "key", nil)
63
+ @profile.get_int("section", "key")
64
+ end
65
+
66
+ it "#get_int(:default) should send GetProfileInt" do
67
+ @mock.should_receive(:GetProfileInt).with("section", "key", "default value")
68
+ @profile.get_int("section", "key", :default => "default value")
69
+ end
70
+
71
+ it "#get_int(:cipher) should send GetProfileIntCipher" do
72
+ @mock.should_receive(:GetProfileIntCipher).with("section", "key", nil)
73
+ @profile.get_int("section", "key", :cipher => true)
74
+ end
75
+
76
+ it "#get_int(:cipher, :default) should send GetProfileIntCipher" do
77
+ @mock.should_receive(:GetProfileIntCipher).with("section", "key", 123)
78
+ @profile.get_int("section", "key", :cipher => true, :default => 123)
79
+ end
80
+
81
+ it "#get_int(:ini) should send GetProfileIntEx" do
82
+ @mock.should_receive(:UserPath).and_return(@user_path)
83
+ @mock.should_receive(:GetProfileIntEx).with(
84
+ "section", "key", nil, File.expand_path("foo.ini", @user_path))
85
+ @profile.get_int("section", "key", :ini => "foo.ini")
86
+ end
87
+
88
+ it "#get_int(:ini, :default) should send GetProfileIntEx" do
89
+ @mock.should_receive(:UserPath).and_return(@user_path)
90
+ @mock.should_receive(:GetProfileIntEx).with(
91
+ "section", "key", 123, "c:/foo.ini")
92
+ @profile.get_int("section", "key", :ini => "c:/foo.ini", :default => 123)
93
+ end
94
+
95
+
96
+
97
+ # write string
98
+
99
+ it "#write_int should send WriteProfileString" do
100
+ @mock.should_receive(:WriteProfileString).with("section", "key", "data")
101
+ @profile.write_string("section", "key", "data")
102
+ end
103
+
104
+ it "#write_int(:cipher) should send WriteProfileStringCipher" do
105
+ @mock.should_receive(:WriteProfileStringCipher).with("section", "key", "data")
106
+ @profile.write_string("section", "key", "data", :cipher => true)
107
+ end
108
+
109
+ # write int
110
+
111
+ it "#write_int should send WriteProfileInt" do
112
+ @mock.should_receive(:WriteProfileInt).with("section", "key", 123)
113
+ @profile.write_int("section", "key", 123)
114
+ end
115
+
116
+ it "#write_int(:cipher) should send WriteProfileIntCipher" do
117
+ @mock.should_receive(:WriteProfileIntCipher).with("section", "key", 123)
118
+ @profile.write_int("section", "key", 123, :cipher => true)
119
+ end
120
+
121
+
122
+ # delete
123
+ it "#delete should send DeleteProfileKey" do
124
+ @mock.should_receive(:DeleteProfileKey).with("section", "key")
125
+ @profile.delete("section", "key")
126
+ end
127
+
128
+ end
@@ -0,0 +1,13 @@
1
+ require File.join(File.dirname(__FILE__), "../spec_helper.rb")
2
+
3
+ describe SleipnirAPI::Registry do
4
+ it "#clsid should return HKCL\\Sleipnir.API\\CLSID" do
5
+ SleipnirAPI::Registry.clsid.should match(/\{[0-9a-fA-F-]+\}/)
6
+ end
7
+
8
+ it "#local_server should return sleipnir.exe path" do
9
+ path = SleipnirAPI::Registry.local_server
10
+ File.basename(path).downcase.should eql("sleipnir.exe")
11
+ File.exist?(path).should be_true
12
+ end
13
+ end
@@ -0,0 +1,82 @@
1
+ require File.join(File.dirname(__FILE__), "../spec_helper.rb")
2
+
3
+ describe SleipnirAPI::Security do
4
+
5
+ before(:all) do
6
+ @pnir = SleipnirAPI.connect
7
+ @blank = @pnir.new_tab
8
+ @security = @blank.security
9
+ @api = @pnir.instance_variable_get(:@api)
10
+ end
11
+
12
+ after(:all) do
13
+ @pnir.instance_variable_set(:@api, @api)
14
+ @blank.close
15
+ end
16
+
17
+ before do
18
+ @mock = mock("Sleipnir.API")
19
+ @pnir.instance_variable_set(:@api, @mock)
20
+ end
21
+
22
+
23
+ it "#enable?(:javascript) should send IsXXXEnabled" do
24
+ @mock.should_receive(:IsJavaScriptEnabled).with(@blank.id)
25
+ @security.enable?(:javascript)
26
+ end
27
+
28
+ it "#enable?(:java) should send IsXXXEnabled" do
29
+ @mock.should_receive(:IsJavaEnabled).with(@blank.id)
30
+ @security.enable?(:java)
31
+ end
32
+
33
+ it "#enable?(:run_activex) should send IsXXXEnabled" do
34
+ @mock.should_receive(:IsRunActiveXEnabled).with(@blank.id)
35
+ @security.enable?(:run_activex)
36
+ end
37
+
38
+ it "#enable?(:download_activex) should send IsXXXEnabled" do
39
+ @mock.should_receive(:IsDownloadActiveXEnabled).with(@blank.id)
40
+ @security.enable?(:download_activex)
41
+ end
42
+
43
+ it "#enable?(:picture) should send IsXXXEnabled" do
44
+ @mock.should_receive(:IsPictureEnabled).with(@blank.id)
45
+ @security.enable?(:picture)
46
+ end
47
+
48
+ it "#enable?(:sound) should send IsXXXEnabled" do
49
+ @mock.should_receive(:IsSoundEnabled).with(@blank.id)
50
+ @security.enable?(:sound)
51
+ end
52
+
53
+ it "#enable?(:video) should send IsXXXEnabled" do
54
+ @mock.should_receive(:IsVideoEnabled).with(@blank.id)
55
+ @security.enable?(:video)
56
+ end
57
+
58
+ it "#enable? can take String" do
59
+ @mock.should_receive(:IsVideoEnabled).with(@blank.id)
60
+ @security.enable?("video")
61
+ end
62
+
63
+ it "#set_security should send SetSecurity" do
64
+ @mock.should_receive(:IsJavaScriptEnabled).with(@blank.id)
65
+ @mock.should_receive(:IsJavaEnabled).with(@blank.id)
66
+ @mock.should_receive(:IsRunActiveXEnabled).with(@blank.id)
67
+ @mock.should_receive(:IsDownloadActiveXEnabled).with(@blank.id)
68
+ @mock.should_receive(:IsPictureEnabled).with(@blank.id)
69
+ @mock.should_receive(:IsSoundEnabled).with(@blank.id)
70
+ @mock.should_receive(:IsVideoEnabled).with(@blank.id)
71
+ @mock.should_receive(:SetSecurity).with(@blank.id, true, false, false, false, false, false, false)
72
+ @security.set_security(
73
+ :javascript => true,
74
+ :java => false,
75
+ :run_activex => false,
76
+ :download_activex => false,
77
+ :picture => false,
78
+ :sound => false,
79
+ :video => false)
80
+ end
81
+
82
+ end
@@ -0,0 +1,129 @@
1
+ require File.join(File.dirname(__FILE__), "../spec_helper.rb")
2
+
3
+ describe SleipnirAPI::Security do
4
+
5
+ before(:all) do
6
+ @pnir = SleipnirAPI.connect
7
+ end
8
+
9
+ before do
10
+ @blank = @pnir.new_tab
11
+ @security = @blank.security
12
+ @security.set_security(
13
+ :javascript => true,
14
+ :java => false,
15
+ :run_activex => true,
16
+ :download_activex => false,
17
+ :picture => true,
18
+ :sound => false,
19
+ :video => true)
20
+ end
21
+
22
+ after do
23
+ @blank.close
24
+ end
25
+
26
+
27
+ it "is Enumerable" do
28
+ @security.should respond_to(:each)
29
+ @security.should be_kind_of(Enumerable)
30
+ end
31
+
32
+ it "#each should enumerate all security config" do
33
+ configs = []
34
+ @security.each do |e|
35
+ e.should be_an_instance_of(SleipnirAPI::Security::Config)
36
+ configs << e
37
+ end
38
+
39
+ configs.size.should == 7
40
+ configs.should == [
41
+ @security.javascript,
42
+ @security.java,
43
+ @security.run_activex,
44
+ @security.download_activex,
45
+ @security.picture,
46
+ @security.sound,
47
+ @security.video,
48
+ ]
49
+ end
50
+
51
+ it "#keys should return all security name." do
52
+ @security.keys.should == [:javascript, :java, :run_activex, :download_activex, :picture, :sound, :video]
53
+ end
54
+
55
+ it "#get_security should return properly." do
56
+ @security.get_security.should == {
57
+ :javascript => true,
58
+ :java => false,
59
+ :run_activex => true,
60
+ :download_activex => false,
61
+ :picture => true,
62
+ :sound => false,
63
+ :video => true,
64
+ }
65
+ end
66
+
67
+ it "#set_security should update security config" do
68
+ def @security.select_enable
69
+ select{|e| e.enable? }.map{|e| e.name }
70
+ end
71
+
72
+ @security.each{|e| e.disable! }
73
+ @security.select_enable.should be_empty
74
+
75
+ @security.update(:javascript => true)
76
+ @security.select_enable.should == [:javascript]
77
+
78
+ @security.update(:java => true, :run_activex => true)
79
+ @security.select_enable.should == [:javascript, :java, :run_activex]
80
+
81
+ @security.update(:picture => true, :sound => true, :video => true)
82
+ @security.select_enable.should == [:javascript, :java, :run_activex, :picture, :sound, :video]
83
+
84
+ @security.update(:javascript => false, :run_activex => false, :download_activex => true)
85
+ @security.select_enable.should == [:java, :download_activex, :picture, :sound, :video]
86
+
87
+ end
88
+
89
+ it "#enable? should return properly." do
90
+ @security.enable?(:javascript).should be_true
91
+ @security.enable?(:java).should be_false
92
+ @security.enable?(:run_activex).should be_true
93
+ @security.enable?(:download_activex).should be_false
94
+ @security.enable?(:picture).should be_true
95
+ @security.enable?(:sound).should be_false
96
+ @security.enable?(:video).should be_true
97
+ end
98
+
99
+ it "#disable? should return properly." do
100
+ @security.disable?(:javascript).should be_false
101
+ @security.disable?(:java).should be_true
102
+ @security.disable?(:run_activex).should be_false
103
+ @security.disable?(:download_activex).should be_true
104
+ @security.disable?(:picture).should be_false
105
+ @security.disable?(:sound).should be_true
106
+ @security.disable?(:video).should be_false
107
+ end
108
+
109
+ it "#<security> should return Security::Config." do
110
+ @security.javascript.should be_an_instance_of(SleipnirAPI::Security::Config)
111
+ @security.java.should be_an_instance_of(SleipnirAPI::Security::Config)
112
+ @security.run_activex.should be_an_instance_of(SleipnirAPI::Security::Config)
113
+ @security.download_activex.should be_an_instance_of(SleipnirAPI::Security::Config)
114
+ @security.picture.should be_an_instance_of(SleipnirAPI::Security::Config)
115
+ @security.sound.should be_an_instance_of(SleipnirAPI::Security::Config)
116
+ @security.video.should be_an_instance_of(SleipnirAPI::Security::Config)
117
+ end
118
+
119
+ it "#[:<security>] should return Security::Config." do
120
+ @security[:javascript].should equal?(@security.javascript)
121
+ @security[:java].should equal?(@security.java)
122
+ @security[:run_activex].should equal?(@security.run_activex)
123
+ @security[:download_activex].should equal?(@security.download_activex)
124
+ @security[:picture].should equal?(@security.picture)
125
+ @security[:sound].should equal?(@security.sound)
126
+ @security[:video].should equal?(@security.video)
127
+ end
128
+
129
+ end
@@ -0,0 +1,70 @@
1
+ require File.join(File.dirname(__FILE__), "../spec_helper.rb")
2
+
3
+ describe SleipnirAPI::Sleipnir, "(with mock)" do
4
+
5
+ before(:all) do
6
+ @pnir = SleipnirAPI.connect
7
+ @api = @pnir.instance_variable_get(:@api)
8
+ end
9
+
10
+ after(:all) do
11
+ @pnir.instance_variable_set(:@api, @api)
12
+ end
13
+
14
+ before do
15
+ @mock = mock("Sleipnir.API")
16
+ @pnir.instance_variable_set(:@api, @mock)
17
+ end
18
+
19
+
20
+ it "#result should send Result" do
21
+ @mock.should_receive(:Result).with(no_args())
22
+ @pnir.result
23
+ end
24
+
25
+ it "#app_path should send AppPath" do
26
+ @mock.should_receive(:AppPath).with(no_args())
27
+ @pnir.app_path
28
+ end
29
+
30
+ it "#script_path should send ScriptPath" do
31
+ @mock.should_receive(:ScriptPath).with(no_args())
32
+ @pnir.script_path
33
+ end
34
+
35
+ it "#resource_path should send ResourcePath" do
36
+ @mock.should_receive(:ResourcePath).with(no_args())
37
+ @pnir.resource_path
38
+ end
39
+
40
+ it "#user_path should send UserPath" do
41
+ @mock.should_receive(:UserPath).with(no_args())
42
+ @pnir.user_path
43
+ end
44
+
45
+ it "#save_favorite should send SaveFavorite" do
46
+ @mock.should_receive(:SaveFavorite).with("c:/foo.sfv")
47
+ @pnir.save_favorite("c:/foo.sfv")
48
+ end
49
+
50
+ it "#save_closed_url should send SaveClosedURL" do
51
+ @mock.should_receive(:SaveClosedURL).with(no_args())
52
+ @pnir.save_closed_url
53
+ end
54
+
55
+ it "#reload_closed_url should send ReloadClosedURL" do
56
+ @mock.should_receive(:ReloadClosedURL).with(no_args())
57
+ @pnir.reload_closed_url
58
+ end
59
+
60
+ it "#add_search_bar_history should send AddSearchBarHistory" do
61
+ @mock.should_receive(:AddSearchBarHistory).with(no_args())
62
+ @pnir.add_search_bar_history
63
+ end
64
+
65
+ it "#exec_command_history should send ExecCommand" do
66
+ @mock.should_receive(:ExecCommand).with(123)
67
+ @pnir.exec_command(123)
68
+ end
69
+
70
+ end
@@ -0,0 +1,295 @@
1
+ require File.join(File.dirname(__FILE__), "../spec_helper.rb")
2
+
3
+ describe SleipnirAPI::Sleipnir, "(with blank page)" do
4
+
5
+ before(:all) do
6
+ @pnir = SleipnirAPI.connect
7
+
8
+ @xxxx = @pnir.open("about:xxxx", true)
9
+ @test = @pnir.open("about:test", true)
10
+ sleep(0.1) while @test.busy?
11
+ sleep(0.1) while @xxxx.busy?
12
+ end
13
+
14
+ after(:all) do
15
+ @test.close
16
+ @xxxx.close
17
+ end
18
+
19
+
20
+ it "is Enumerable" do
21
+ @pnir.should respond_to(:each)
22
+ @pnir.should be_kind_of(Enumerable)
23
+ end
24
+
25
+ it "include Dialog/KeyState" do
26
+ @pnir.should be_kind_of(SleipnirAPI::Dialog)
27
+ @pnir.should be_kind_of(SleipnirAPI::KeyState)
28
+ end
29
+
30
+ it "#api should return WIN32OLE" do
31
+ @pnir.should be_an_instance_of(SleipnirAPI::Sleipnir)
32
+ @pnir.api.should be_an_instance_of(WIN32OLE)
33
+ end
34
+
35
+ it "#handle, #version should return properly." do
36
+ @pnir.handle.should be_a_kind_of(Integer)
37
+ @pnir.version.should be_a_kind_of(Integer)
38
+ end
39
+
40
+ it "#address_bar_string can set/get AddressBar" do
41
+ saved = @pnir.address_bar_string
42
+ begin
43
+ @pnir.address_bar_string = "http://foobar"
44
+ @pnir.address_bar_string.should eql("http://foobar")
45
+ @pnir.address_bar_string = "file://c:/barbaz"
46
+ @pnir.address_bar_string.should eql("file://c:/barbaz")
47
+ ensure
48
+ @pnir.address_bar_string = saved
49
+ end
50
+ end
51
+
52
+ it "#search_bar_string can set/get SearchBar" do
53
+ saved = @pnir.search_bar_string
54
+ begin
55
+ @pnir.search_bar_string = "foobar"
56
+ @pnir.search_bar_string.should eql("foobar")
57
+ @pnir.search_bar_string = "barbaz"
58
+ @pnir.search_bar_string.should eql("barbaz")
59
+ ensure
60
+ @pnir.search_bar_string = saved
61
+ end
62
+ end
63
+
64
+ it "#favorite_file can set/get FaviriteFile" do
65
+ next if @pnir.v2?
66
+
67
+ saved = @pnir.favorite_file
68
+ begin
69
+ @pnir.favorite_file = "foobar"
70
+ @pnir.favorite_file.should eql(@pnir.user_path + "foobar")
71
+ @pnir.favorite_file = "c:\\barbaz"
72
+ @pnir.favorite_file.should eql("c:\\barbaz")
73
+ ensure
74
+ @pnir.favorite_file = saved
75
+ end
76
+ end
77
+
78
+ it "#user_agent can set/get UserAgent" do
79
+ next if @pnir.v2?
80
+
81
+ saved = @pnir.user_agent
82
+ begin
83
+ @pnir.user_agent = "foobar"
84
+ @pnir.user_agent.should eql("foobar")
85
+ @pnir.user_agent = "barbaz"
86
+ @pnir.user_agent.should eql("barbaz")
87
+ ensure
88
+ @pnir.user_agent = saved
89
+ end
90
+ end
91
+
92
+ it "#app_path should return exe directory" do
93
+ File.exist?(File.join(@pnir.app_path, "sleipnir.exe")).should be_true
94
+ end
95
+
96
+ it "#script_path should return script directory" do
97
+ File.exist?(@pnir.script_path).should be_true
98
+ end
99
+
100
+ it "#resource_path should return resouce directory" do
101
+ File.exist?(@pnir.resource_path).should be_true
102
+ end
103
+
104
+ it "#user_path should return user directory" do
105
+ File.exist?(@pnir.user_path).should be_true
106
+ end
107
+
108
+
109
+ it "#new_tab() should create new active blank tab" do
110
+ t = @pnir.new_tab
111
+ begin
112
+ t.should be_an_instance_of(SleipnirAPI::Tab)
113
+ t.location.href.should eql("about:blank")
114
+ t.should be_active
115
+ ensure
116
+ t.close
117
+ end
118
+ end
119
+
120
+ it "#new_tab take url argument" do
121
+ t = @pnir.new_tab("about:new_tab1")
122
+ begin
123
+ t.location.href.should eql("about:new_tab1")
124
+ t.should be_active
125
+ ensure
126
+ t.close
127
+ end
128
+ end
129
+
130
+ it "#new_tab take active flag" do
131
+ t = @pnir.new_tab("about:new_tab2", false)
132
+ sleep(0.1) while t.busy?
133
+ begin
134
+ t.should_not be_active
135
+ ensure
136
+ t.close
137
+ end
138
+ end
139
+
140
+ it "#open should create new active tab with specified url" do
141
+ t = @pnir.open("about:open1")
142
+ begin
143
+ t.should be_an_instance_of(SleipnirAPI::Tab)
144
+ t.location.href.should eql("about:open1")
145
+ t.should be_active
146
+ ensure
147
+ t.close
148
+ end
149
+ end
150
+
151
+
152
+ it "#open should take active flag" do
153
+ t = @pnir.open("about:open2", false)
154
+ sleep(0.1) while t.busy?
155
+ begin
156
+ t.should_not be_active
157
+ ensure
158
+ t.close
159
+ end
160
+ end
161
+
162
+ it "#count should return # of documents" do
163
+ now = @pnir.count
164
+ new = @pnir.new_tab("about:count", true)
165
+ begin
166
+ @pnir.count.should == (now + 1)
167
+ ensure
168
+ new.close
169
+ end
170
+ end
171
+
172
+
173
+ it "#tab should return SleipnirAPI::Tab" do
174
+ t = @pnir.tab(@test.index)
175
+ t.should be_an_instance_of(SleipnirAPI::Tab)
176
+ t.should == @test
177
+ end
178
+
179
+ it "#tab should return nil if index is out of range" do
180
+ @pnir.tab(-1).should be_nil
181
+ @pnir.tab(@test.index + 1).should be_nil
182
+ end
183
+
184
+ it "#tabs should return all tab" do
185
+ @pnir.tabs.size.should == @pnir.count
186
+ @pnir.tabs.last.should == @test
187
+ end
188
+
189
+ it "#each should enumerate all tab" do
190
+ tabs = []
191
+ @pnir.each do |tab|
192
+ tab.should be_an_instance_of(SleipnirAPI::Tab)
193
+ tabs << tab
194
+ end
195
+ @pnir.tabs.should == tabs
196
+ end
197
+
198
+ it "#active_index return properly" do
199
+ @pnir.active_index.should == @test.index
200
+ end
201
+
202
+ it "#active_tab return properly" do
203
+ @pnir.active_tab.should == @test
204
+ end
205
+
206
+ it "#active_document return properly" do
207
+ doc = @pnir.active_document
208
+ doc.should be_an_instance_of(WIN32OLE)
209
+ doc.location.href.should eql("about:test")
210
+ end
211
+
212
+ it "#document should return WIN32OLE" do
213
+ doc = @pnir.document(@test.index)
214
+ doc.should be_an_instance_of(WIN32OLE)
215
+ doc.ole_obj_help.name.should == "DispHTMLDocument"
216
+ doc.location.href.should == "about:test"
217
+ end
218
+
219
+ it "#document should return nil if index is out of range" do
220
+ @pnir.document(-1).should be_nil
221
+ @pnir.document(@test.index + 1).should be_nil
222
+ end
223
+
224
+ it "#documents should return all documents" do
225
+ docs = @pnir.documents
226
+ docs.size.should == @pnir.count
227
+ docs.last.location.href.should eql("about:test")
228
+ end
229
+
230
+ it "#each_document should enumerate all documents" do
231
+ docs = []
232
+ @pnir.each_document do |doc|
233
+ doc.should be_an_instance_of(WIN32OLE)
234
+ doc.ole_obj_help.name.should == "DispHTMLDocument"
235
+ docs << doc
236
+ end
237
+ docs.size.should == @pnir.count
238
+ end
239
+
240
+ it "#get_url_tab should return SleipnirAPI::Tab" do
241
+ t = @pnir.get_url_tab("about:test")
242
+ t.should == @test
243
+
244
+ t = @pnir.get_url_tab("about:no_such_tab_aqwsedrftgyhjuikol")
245
+ t.should be_nil
246
+ end
247
+
248
+ it "#switch_to_tab(url) should switch active tab" do
249
+ t = @pnir.open("about:switch_to_tab", false)
250
+ begin
251
+ @test.should be_active
252
+ t2 = @pnir.switch_to_tab("about:switch_to_tab")
253
+ t2.should == t2
254
+ t2.should be_active
255
+ @test.should_not be_active
256
+ ensure
257
+ t.close
258
+ end
259
+ end
260
+
261
+ it "#switch_to_tab(url) should activate 1st tab" do
262
+ t = @pnir.open("about:switch_to_tab2", true)
263
+ sleep(0.1) while t.busy?
264
+ begin
265
+ t.should be_active
266
+ @test.should_not be_active
267
+
268
+ # test2 = @pnir.switch_to_tab("about:test")
269
+ # test2.should == @test
270
+
271
+ # t.should_not be_active
272
+ # @test.should be_active
273
+ ensure
274
+ t.close
275
+ end
276
+ end
277
+
278
+ it "#switch_to_tab(SleipnirAPI::Tab) should switch active tab" do
279
+ t = @pnir.open("about:switch_to_tab3", true)
280
+ sleep(0.1) while t.busy?
281
+ begin
282
+ t.should be_active
283
+ @test.should_not be_active
284
+
285
+ # test2 = @pnir.switch_to_tab(@test)
286
+ # test2.should == @test
287
+ #
288
+ # t.should_not be_active
289
+ # @test.should be_active
290
+ ensure
291
+ t.close
292
+ end
293
+ end
294
+
295
+ end