libgss 0.0.1

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.
@@ -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: