libgss 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,70 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Libgss::ActionRequest do
5
+
6
+ let(:network) do
7
+ network = Libgss::Network.new("http://localhost:3000")
8
+ network.player_id = "1000001"
9
+ network
10
+ end
11
+
12
+ let(:request) do
13
+ network.login
14
+ network.new_action_request
15
+ end
16
+
17
+ describe "#get_by_probability" do
18
+
19
+ shared_examples_for "Libgss::ActionRequest#get_by_probability" do |value, conditions, result|
20
+ it "#{value.inspect} with #{conditions.inspect} returns #{result.inspect}" do
21
+ callback_called = false
22
+ request.get_by_probability("Composition1", value, conditions)
23
+ request.send_request do |outputs|
24
+ callback_called = true
25
+ outputs.length.should == 1
26
+ obj = outputs.first["result"]
27
+ # AppSeedで定義されているデータの確認
28
+ obj.should == result
29
+ end
30
+ callback_called.should == true
31
+ end
32
+ end
33
+
34
+ it_should_behave_like "Libgss::ActionRequest#get_by_probability", 10002, nil, 60
35
+ it_should_behave_like "Libgss::ActionRequest#get_by_probability", 20007, nil, 20
36
+
37
+ context "with conditions" do
38
+ it_should_behave_like "Libgss::ActionRequest#get_by_probability", 20007, {"element" => { "20002" => 1, "20006" => 1 } }, 20
39
+ it_should_behave_like "Libgss::ActionRequest#get_by_probability", 20007, {"element" => { "20002" => 1, "20006" => 2 } }, nil
40
+
41
+ it_should_behave_like "Libgss::ActionRequest#get_by_probability", {"20002" => 2}, {"element" => { "20002" => 1, "20006" => 1 } }, 80
42
+ it_should_behave_like "Libgss::ActionRequest#get_by_probability", {"20002" => 2}, {"element" => { "20002" => 1, "20006" => 2 } }, nil
43
+ end
44
+ end
45
+
46
+ describe "#dice" do
47
+ it do
48
+ results = []
49
+ 10.times do
50
+ request.dice("Composition1", {"element" => { "20002" => 1, "20006" => 1 } })
51
+ request.send_request do |outputs|
52
+ r = outputs.first["result"]
53
+ case r
54
+ when 20007, { "20002" => 2 } then # この2つの値以外はないはず
55
+ results << r
56
+ else
57
+ raise "Unknown result #{r.inspect}"
58
+ end
59
+ end
60
+ end
61
+ # エーテルZ、ポーションA 2個
62
+ ether_z, potion_a = results.partition{|r| r == 20007}
63
+ ether_z.length.should >= 0
64
+ ether_z.length.should <= 4
65
+ potion_a.length.should >= 6
66
+ potion_a.length.should <= 10
67
+
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,62 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Libgss::ActionRequest do
5
+
6
+ let(:network) do
7
+ network = Libgss::Network.new("http://localhost:3000")
8
+ network.player_id = "1000001"
9
+ network.login
10
+ network
11
+ end
12
+
13
+ let(:request) do
14
+ network.new_action_request
15
+ end
16
+
17
+
18
+ describe "ruby_stored_script#execute" do
19
+ before do
20
+ request_fixture_load("01_basic")
21
+ # HP満タンなので、減らす
22
+ req1 = network.new_action_request
23
+ req1.get_by_game_data
24
+ req1.send_request # コールバックなしでもOK
25
+
26
+ req1.outputs.length.should == 1
27
+ game_data = req1.outputs.first["result"]
28
+ new_content_attrs = {"hp" => 10} # 5ポイント減らす
29
+ game_data["content"].update(new_content_attrs)
30
+ #
31
+ req2 = network.new_action_request
32
+ req2.update("GameData", game_data)
33
+ req2.send_request
34
+ req2.outputs.first["result"].should == "OK"
35
+ end
36
+
37
+
38
+ it "valid" do
39
+ callback_called = false
40
+ request.execute("ItemRubyStoredScript", "use_item", {"item_cd" => "20001"})
41
+ request.send_request do |outputs|
42
+ callback_called = true
43
+ outputs.length.should == 1
44
+ outputs.first["result"].should == "recovery hp 5points"
45
+ end
46
+ callback_called.should == true
47
+ end
48
+
49
+ it "invalid args" do
50
+ pending "どう振る舞うべきか検討"
51
+ callback_called = false
52
+ request.execute("ItemRubyStoredScript", "use_item", {}) # 引数の指定なし
53
+ request.send_request do |outputs|
54
+ callback_called = true
55
+ outputs.length.should == 1
56
+ outputs.first["result"].should == "recovery hp 5points"
57
+ end
58
+ callback_called.should == true
59
+ end
60
+ end
61
+
62
+ end
@@ -0,0 +1,49 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Libgss::ActionRequest do
5
+
6
+ let(:network) do
7
+ network = Libgss::Network.new("http://localhost:3000")
8
+ network.player_id = "1000001"
9
+ network
10
+ end
11
+
12
+ let(:request) do
13
+ network.login
14
+ network.new_action_request
15
+ end
16
+
17
+
18
+ describe "#get_by_schedule" do
19
+ shared_examples_for "Libgss::ActionRequest#get_by_schedule" do |input, output, conditions|
20
+ it do
21
+ callback_called = false
22
+ request.get_by_schedule("ShopSchedule", input, conditions)
23
+ request.send_request do |outputs|
24
+ callback_called = true
25
+ outputs.length.should == 1
26
+ outputs.first["result"].should == output
27
+ end
28
+ callback_called.should == true
29
+ end
30
+ end
31
+
32
+ it_should_behave_like "Libgss::ActionRequest#get_by_schedule", Time.parse("2012/07/09 00:00:00+09:00").to_i, "ShopMenu1", nil
33
+ it_should_behave_like "Libgss::ActionRequest#get_by_schedule", Time.parse("2012/07/10 11:59:59+09:00").to_i, "ShopMenu1", nil
34
+ it_should_behave_like "Libgss::ActionRequest#get_by_schedule", Time.parse("2012/07/10 12:00:00+09:00").to_i, "ShopMenu2", nil
35
+ it_should_behave_like "Libgss::ActionRequest#get_by_schedule", Time.parse("2012/07/15 12:00:00+09:00").to_i, "ShopMenu2", nil
36
+ it_should_behave_like "Libgss::ActionRequest#get_by_schedule", Time.parse("2012/07/20 12:59:59+09:00").to_i, "ShopMenu2", nil
37
+ it_should_behave_like "Libgss::ActionRequest#get_by_schedule", Time.parse("2012/07/20 13:00:00+09:00").to_i, "ShopMenu2", nil # 整数範囲テーブルと違って末尾にも含まれる
38
+ it_should_behave_like "Libgss::ActionRequest#get_by_schedule", Time.parse("2012/07/20 13:00:01+09:00").to_i, "ShopMenu1", nil
39
+
40
+ cond = {"value$ne" => "ShopMenu2" }
41
+ it_should_behave_like "Libgss::ActionRequest#get_by_schedule", Time.parse("2012/07/09 00:00:00+09:00").to_i, "ShopMenu1", cond
42
+ it_should_behave_like "Libgss::ActionRequest#get_by_schedule", Time.parse("2012/07/10 11:59:59+09:00").to_i, "ShopMenu1", cond
43
+ it_should_behave_like "Libgss::ActionRequest#get_by_schedule", Time.parse("2012/07/10 12:00:00+09:00").to_i, "ShopMenu1", cond
44
+ it_should_behave_like "Libgss::ActionRequest#get_by_schedule", Time.parse("2012/07/15 12:00:00+09:00").to_i, "ShopMenu1", cond
45
+ it_should_behave_like "Libgss::ActionRequest#get_by_schedule", Time.parse("2012/07/20 12:59:59+09:00").to_i, "ShopMenu1", cond
46
+ it_should_behave_like "Libgss::ActionRequest#get_by_schedule", Time.parse("2012/07/20 13:00:00+09:00").to_i, "ShopMenu1", cond
47
+ end
48
+
49
+ end
@@ -0,0 +1,33 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe "Libgss::AssetRequest" do
5
+ before(:all) do
6
+ request_fixture_load("01_basic")
7
+ end
8
+
9
+ let(:network) do
10
+ network = Libgss::Network.new("http://localhost:3000")
11
+ network.player_id = "1000001"
12
+ network.public_asset_url_prefix = "http://localhost:3000/a/"
13
+ network.login
14
+ network
15
+ end
16
+
17
+ describe "public asset" do
18
+ it "valid" do
19
+ req = network.new_public_asset_request("Default.png")
20
+ req.send_request
21
+ req.response_data.should == IO.binread(File.expand_path("../../public_assets/Default.png", __FILE__))
22
+ end
23
+ end
24
+
25
+ describe "protected asset" do
26
+ it "valid" do
27
+ req = network.new_protected_asset_request("Icon.png")
28
+ req.send_request
29
+ req.response_data.should == IO.binread(File.expand_path("../../protected_assets/Icon.png", __FILE__))
30
+ end
31
+ end
32
+
33
+ end
@@ -0,0 +1,75 @@
1
+ require 'spec_helper'
2
+
3
+ describe Libgss::Network do
4
+
5
+ let(:network) do
6
+ network = Libgss::Network.new("http://localhost:3000")
7
+ network.player_id = "1000001"
8
+ network
9
+ end
10
+
11
+ describe "#login" do
12
+ context "success" do
13
+ shared_examples_for "Libgss::Network#login success" do |block|
14
+ before(&block)
15
+
16
+ it do
17
+ network.auth_token.should == nil
18
+ network.signature_key.should == nil
19
+ res = network.login
20
+ network.auth_token.should_not == nil
21
+ network.signature_key.should_not == nil
22
+ res.should == true
23
+ end
24
+ end
25
+
26
+ it_should_behave_like "Libgss::Network#login success", Proc.new{ network.player_id = "1000001" }
27
+ it_should_behave_like "Libgss::Network#login success", Proc.new{ network.player_id = "unregistered" }
28
+ end
29
+
30
+ context "failure" do
31
+ shared_examples_for "Libgss::Network#login failure" do
32
+ it do
33
+ network.auth_token.should == nil
34
+ network.signature_key.should == nil
35
+ res = network.login
36
+ network.auth_token.should == nil
37
+ network.signature_key.should == nil
38
+ res.should == false
39
+ end
40
+ end
41
+
42
+ [300, 400, 500].map{|n| (1..10).map{|i| n + i} }.flatten.each do |status_code|
43
+ context "status_code is #{status_code}" do
44
+ before do
45
+ res = mock(:reponse)
46
+ res.should_receive(:status).and_return(status_code)
47
+ HTTPClient.any_instance.should_receive(:post).and_return(res)
48
+ end
49
+ it_should_behave_like "Libgss::Network#login failure"
50
+ end
51
+ end
52
+
53
+ context "JSON parse Error" do
54
+ before do
55
+ res = mock(:reponse)
56
+ res.stub(:status).and_return(200)
57
+ res.should_receive(:content).and_return("invalid JSON format string")
58
+ HTTPClient.any_instance.should_receive(:post).and_return(res)
59
+ end
60
+
61
+ it_should_behave_like "Libgss::Network#login failure"
62
+ end
63
+
64
+ end
65
+
66
+ end
67
+
68
+ describe "#new_action_request" do
69
+
70
+ let(:req){ network.new_action_request }
71
+ subject{ req }
72
+ its(:status){ should == Libgss::ActionRequest::STATUS_PREPARING }
73
+ end
74
+
75
+ end
Binary file
Binary file
@@ -0,0 +1,9 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'libgss'
3
+
4
+ # see https://github.com/tengine/fontana/pull/3
5
+ require 'httpclient'
6
+ def request_fixture_load(fixture_name)
7
+ c = HTTPClient.new
8
+ c.post("http://localhost:3000/libgss_test/fixture_loadings/#{fixture_name}.json", "_method" => "put")
9
+ end
metadata ADDED
@@ -0,0 +1,161 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: libgss
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - akima
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-05-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: httpclient
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: json
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: network library for Groovenauts GSS
84
+ email:
85
+ - t-akima@groovenauts.jp
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - .gitignore
91
+ - .rspec
92
+ - .travis.yml
93
+ - Gemfile
94
+ - Gemfile.lock
95
+ - LICENSE.txt
96
+ - README.md
97
+ - Rakefile
98
+ - lib/libgss.rb
99
+ - lib/libgss/action.rb
100
+ - lib/libgss/action_request.rb
101
+ - lib/libgss/asset_request.rb
102
+ - lib/libgss/network.rb
103
+ - lib/libgss/outputs.rb
104
+ - lib/libgss/version.rb
105
+ - libgss.gemspec
106
+ - spec/libgss/action_request_spec.rb
107
+ - spec/libgss/actions/dictionary_spec.rb
108
+ - spec/libgss/actions/friendship_spec.rb
109
+ - spec/libgss/actions/game_data_spec.rb
110
+ - spec/libgss/actions/int_range_spec.rb
111
+ - spec/libgss/actions/log_spec.rb
112
+ - spec/libgss/actions/master_spec.rb
113
+ - spec/libgss/actions/probability_spec.rb
114
+ - spec/libgss/actions/ruby_stored_script_spec.rb
115
+ - spec/libgss/actions/schedule_spec.rb
116
+ - spec/libgss/asset_request_spec.rb
117
+ - spec/libgss/network_spec.rb
118
+ - spec/protected_assets/Icon.png
119
+ - spec/public_assets/Default.png
120
+ - spec/spec_helper.rb
121
+ homepage: http://www.groovenauts.jp/service/#gss
122
+ licenses:
123
+ - MIT
124
+ metadata: {}
125
+ post_install_message:
126
+ rdoc_options: []
127
+ require_paths:
128
+ - lib
129
+ required_ruby_version: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ required_rubygems_version: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ requirements: []
140
+ rubyforge_project:
141
+ rubygems_version: 2.0.3
142
+ signing_key:
143
+ specification_version: 4
144
+ summary: network library for Groovenauts GSS
145
+ test_files:
146
+ - spec/libgss/action_request_spec.rb
147
+ - spec/libgss/actions/dictionary_spec.rb
148
+ - spec/libgss/actions/friendship_spec.rb
149
+ - spec/libgss/actions/game_data_spec.rb
150
+ - spec/libgss/actions/int_range_spec.rb
151
+ - spec/libgss/actions/log_spec.rb
152
+ - spec/libgss/actions/master_spec.rb
153
+ - spec/libgss/actions/probability_spec.rb
154
+ - spec/libgss/actions/ruby_stored_script_spec.rb
155
+ - spec/libgss/actions/schedule_spec.rb
156
+ - spec/libgss/asset_request_spec.rb
157
+ - spec/libgss/network_spec.rb
158
+ - spec/protected_assets/Icon.png
159
+ - spec/public_assets/Default.png
160
+ - spec/spec_helper.rb
161
+ has_rdoc: