hearthstone 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +43 -0
  6. data/Rakefile +2 -0
  7. data/bin/hearthstone-recorder +7 -0
  8. data/hearthstone.gemspec +28 -0
  9. data/lib/hearthstone.rb +7 -0
  10. data/lib/hearthstone/commands/recorder_command.rb +86 -0
  11. data/lib/hearthstone/log.rb +7 -0
  12. data/lib/hearthstone/log/configurator.rb +41 -0
  13. data/lib/hearthstone/log/data.rb +1 -0
  14. data/lib/hearthstone/log/data/game.rb +74 -0
  15. data/lib/hearthstone/log/data/game_player.rb +25 -0
  16. data/lib/hearthstone/log/data/game_turn.rb +32 -0
  17. data/lib/hearthstone/log/game_logger.rb +128 -0
  18. data/lib/hearthstone/log/parser.rb +276 -0
  19. data/lib/hearthstone/models.rb +3 -0
  20. data/lib/hearthstone/models/AllSetsAllLanguages.json +1 -0
  21. data/lib/hearthstone/models/card.rb +20 -0
  22. data/lib/hearthstone/models/card_store.rb +50 -0
  23. data/lib/hearthstone/models/entity.rb +67 -0
  24. data/lib/hearthstone/models/game.rb +151 -0
  25. data/lib/hearthstone/models/game_loader.rb +52 -0
  26. data/lib/hearthstone/models/player.rb +37 -0
  27. data/lib/hearthstone/version.rb +3 -0
  28. data/spec/fixtures/completed.config +8 -0
  29. data/spec/fixtures/empty_config.config +0 -0
  30. data/spec/fixtures/game1.json +2433 -0
  31. data/spec/fixtures/gamelog1.json +1585 -0
  32. data/spec/fixtures/gamelog1.log +25508 -0
  33. data/spec/fixtures/gamelog2.log +85357 -0
  34. data/spec/hearthstone/log/configurator_spec.rb +61 -0
  35. data/spec/hearthstone/log/game_logger_spec.rb +57 -0
  36. data/spec/hearthstone/log/parser_spec.rb +185 -0
  37. data/spec/hearthstone/models/card_store_spec.rb +16 -0
  38. data/spec/hearthstone/models/game_loader_spec.rb +153 -0
  39. data/spec/hearthstone/models/game_spec.rb +157 -0
  40. metadata +179 -0
@@ -0,0 +1,157 @@
1
+ require_relative "../../../lib/hearthstone/models"
2
+
3
+ describe Hearthstone::Models::Game do
4
+ let(:game) { Hearthstone::Models::Game.new }
5
+
6
+ context "#add_player" do
7
+ it "adds players into game" do
8
+ game.add_player(id: 2, name: "siuying", first_player: true, hero_id: 36, hero_card_id: "HERO_05", hero_power_id: 37, hero_power_card_id: "DS1h_292")
9
+ game.add_player(id: 1, name: "화이트베리", first_player: false, hero_id: 4, hero_card_id: "HERO_04", hero_power_id: 5, hero_power_card_id: "CS2_101")
10
+
11
+ player1 = game.player_with_id(1)
12
+ expect(player1.name).to eq("화이트베리")
13
+
14
+ player2 = game.player_with_id(2)
15
+ expect(player2.name).to eq("siuying")
16
+ end
17
+ end
18
+
19
+ context "#open_card" do
20
+ it "adds card into game" do
21
+ game.open_card(id: 5, card_id: "CS2_101")
22
+
23
+ entity = game.entity_with_id(5)
24
+ expect(entity.card).to_not be_nil
25
+ expect(entity.card.name).to eq("Reinforce")
26
+ end
27
+ end
28
+
29
+ context "#card_revealed" do
30
+ it "shows card from game" do
31
+ game.open_card(id: 34, card_id: "")
32
+ entity = game.entity_with_id(34)
33
+ expect(entity.card).to be_nil
34
+
35
+ game.card_revealed(id: 34, card_id: "FP1_020")
36
+ entity = game.entity_with_id(34)
37
+ expect(entity.card).to_not be_nil
38
+ expect(entity.card.name).to eq("Avenge")
39
+ end
40
+ end
41
+
42
+ context "Game Started" do
43
+ before(:each) do
44
+ game.add_player(id: 2, name: "siuying", first_player: true, hero_id: 36, hero_card_id: "HERO_05", hero_power_id: 37, hero_power_card_id: "DS1h_292")
45
+ game.add_player(id: 1, name: "화이트베리", first_player: false, hero_id: 4, hero_card_id: "HERO_04", hero_power_id: 5, hero_power_card_id: "CS2_101")
46
+ end
47
+
48
+ context "#card_added_to_deck" do
49
+ it "adds card into player deck" do
50
+ game.card_added_to_deck(player_id: 1, id: 7, card_id: "")
51
+
52
+ entity = game.entity_with_id(7)
53
+ expect(entity).to_not be_nil
54
+ expect(entity.card).to be_nil # not yet know the card
55
+
56
+ player = game.player_with_id(1)
57
+ expect(player).to_not be_nil
58
+ expect(player.deck).to include(entity)
59
+ end
60
+ end
61
+
62
+ context "#card_received" do
63
+ it "adds card into player hand" do
64
+ player = game.player_with_id(2)
65
+
66
+ game.card_added_to_deck(player_id: 2, id: 58, card_id: "")
67
+ expect(player).to_not be_nil
68
+ expect(player.hand).to be_empty
69
+ expect(player.deck).to_not be_empty
70
+
71
+ game.card_received(player_id: 2, id: 58, card_id: "EX1_556")
72
+
73
+ entity = game.entity_with_id(58)
74
+ expect(entity).to_not be_nil
75
+ expect(entity.card).to eq(game.card_with_card_id("EX1_556"))
76
+ expect(player.hand).to include(entity)
77
+ expect(player.deck).to be_empty
78
+ end
79
+ end
80
+
81
+ context "#card_drawn" do
82
+ it "adds card into player hands" do
83
+ player = game.player_with_id(2)
84
+
85
+ expect(player).to_not be_nil
86
+ expect(player.hand).to be_empty
87
+
88
+ game.card_drawn(player_id: 2, id: 58, card_id: "EX1_556")
89
+ entity = game.entity_with_id(58)
90
+ expect(entity).to_not be_nil
91
+ expect(entity.card).to eq(game.card_with_card_id("EX1_556"))
92
+ expect(player.hand).to include(entity)
93
+ end
94
+ end
95
+
96
+ context "#card_attached" do
97
+ it "adds effect to a card" do
98
+ player = game.player_with_id(2)
99
+ game.open_card(id: 69, card_id: "FP1_028e")
100
+ game.open_card(id: 57, card_id: "FP1_028")
101
+
102
+ target = game.entity_with_id(57)
103
+ attachment = game.entity_with_id(69)
104
+ game.card_attached(attachment_id: attachment.id, target_id: target.id)
105
+
106
+ expect(target.attachments).to include(attachment)
107
+ end
108
+ end
109
+
110
+ context "#apply_damage" do
111
+ it "apply damage to a card" do
112
+ player = game.player_with_id(2)
113
+ game.open_card(id: 57, card_id: "FP1_028")
114
+
115
+ target = game.entity_with_id(57)
116
+ game.apply_damage(id: 57, amount: 2)
117
+
118
+ expect(target.damaged).to eq(2)
119
+ end
120
+ end
121
+
122
+ context "#card_played" do
123
+ it "move cards in play" do
124
+ player = game.player_with_id(2)
125
+ game.open_card(id: 57, card_id: "FP1_028")
126
+
127
+ target = game.entity_with_id(57)
128
+ game.card_played(player_id: 2, id: 57, card_id: "FP1_028")
129
+ expect(player.play).to include(target)
130
+ end
131
+ end
132
+
133
+ context "#card_destroyed" do
134
+ it "move cards to graveyard" do
135
+ player = game.player_with_id(2)
136
+ game.open_card(id: 57, card_id: "FP1_028")
137
+
138
+ target = game.entity_with_id(57)
139
+ game.card_destroyed(player_id: 2, id: 57)
140
+ expect(player.graveyard).to include(target)
141
+ end
142
+ end
143
+
144
+ context "#card_put_in_play" do
145
+ it "put cards in play" do
146
+ player = game.player_with_id(2)
147
+
148
+ game.card_put_in_play(player_id: 2, id: 78, card_id: "GVG_103")
149
+ target = game.entity_with_id(78)
150
+ expect(target).to_not be_nil
151
+ expect(target.card.id).to eq("GVG_103")
152
+ expect(player.play).to include(target)
153
+ end
154
+ end
155
+ end
156
+
157
+ end
metadata ADDED
@@ -0,0 +1,179 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hearthstone
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Francis Chong
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-14 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.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.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: '3.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
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: claide
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.7'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.7'
83
+ - !ruby/object:Gem::Dependency
84
+ name: file-tail
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.0'
97
+ description: Utlities for Hearthstone. First, a game recorder.
98
+ email:
99
+ - francis@ignition.hk
100
+ executables:
101
+ - hearthstone-recorder
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - ".gitignore"
106
+ - Gemfile
107
+ - LICENSE.txt
108
+ - README.md
109
+ - Rakefile
110
+ - bin/hearthstone-recorder
111
+ - hearthstone.gemspec
112
+ - lib/hearthstone.rb
113
+ - lib/hearthstone/commands/recorder_command.rb
114
+ - lib/hearthstone/log.rb
115
+ - lib/hearthstone/log/configurator.rb
116
+ - lib/hearthstone/log/data.rb
117
+ - lib/hearthstone/log/data/game.rb
118
+ - lib/hearthstone/log/data/game_player.rb
119
+ - lib/hearthstone/log/data/game_turn.rb
120
+ - lib/hearthstone/log/game_logger.rb
121
+ - lib/hearthstone/log/parser.rb
122
+ - lib/hearthstone/models.rb
123
+ - lib/hearthstone/models/AllSetsAllLanguages.json
124
+ - lib/hearthstone/models/card.rb
125
+ - lib/hearthstone/models/card_store.rb
126
+ - lib/hearthstone/models/entity.rb
127
+ - lib/hearthstone/models/game.rb
128
+ - lib/hearthstone/models/game_loader.rb
129
+ - lib/hearthstone/models/player.rb
130
+ - lib/hearthstone/version.rb
131
+ - spec/fixtures/completed.config
132
+ - spec/fixtures/empty_config.config
133
+ - spec/fixtures/game1.json
134
+ - spec/fixtures/gamelog1.json
135
+ - spec/fixtures/gamelog1.log
136
+ - spec/fixtures/gamelog2.log
137
+ - spec/hearthstone/log/configurator_spec.rb
138
+ - spec/hearthstone/log/game_logger_spec.rb
139
+ - spec/hearthstone/log/parser_spec.rb
140
+ - spec/hearthstone/models/card_store_spec.rb
141
+ - spec/hearthstone/models/game_loader_spec.rb
142
+ - spec/hearthstone/models/game_spec.rb
143
+ homepage: https://github.com/siuying/hearthstone
144
+ licenses:
145
+ - MIT
146
+ metadata: {}
147
+ post_install_message:
148
+ rdoc_options: []
149
+ require_paths:
150
+ - lib
151
+ required_ruby_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ required_rubygems_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ requirements: []
162
+ rubyforge_project:
163
+ rubygems_version: 2.2.2
164
+ signing_key:
165
+ specification_version: 4
166
+ summary: Utlities for Hearthstone.
167
+ test_files:
168
+ - spec/fixtures/completed.config
169
+ - spec/fixtures/empty_config.config
170
+ - spec/fixtures/game1.json
171
+ - spec/fixtures/gamelog1.json
172
+ - spec/fixtures/gamelog1.log
173
+ - spec/fixtures/gamelog2.log
174
+ - spec/hearthstone/log/configurator_spec.rb
175
+ - spec/hearthstone/log/game_logger_spec.rb
176
+ - spec/hearthstone/log/parser_spec.rb
177
+ - spec/hearthstone/models/card_store_spec.rb
178
+ - spec/hearthstone/models/game_loader_spec.rb
179
+ - spec/hearthstone/models/game_spec.rb