zombie-chaser 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/History.txt +22 -0
  2. data/README.txt +57 -47
  3. data/Rakefile +26 -24
  4. data/bin/zombie-chaser +77 -79
  5. data/lib/{chaser.rb → zombie-chaser/chaser.rb} +392 -373
  6. data/lib/zombie-chaser/human.rb +312 -0
  7. data/{ui → lib/zombie-chaser}/icons/death.png +0 -0
  8. data/{ui → lib/zombie-chaser}/icons/robot.png +0 -0
  9. data/lib/zombie-chaser/interface.rb +153 -0
  10. data/{ui → lib/zombie-chaser}/sprites/robot-attacking.png +0 -0
  11. data/{ui → lib/zombie-chaser}/sprites/robot-dead.png +0 -0
  12. data/{ui → lib/zombie-chaser}/sprites/robot-dying.png +0 -0
  13. data/{ui → lib/zombie-chaser}/sprites/robot-idle.png +0 -0
  14. data/{ui → lib/zombie-chaser}/sprites/robot-moving.png +0 -0
  15. data/{ui → lib/zombie-chaser}/sprites/robot-turning.png +0 -0
  16. data/{ui → lib/zombie-chaser}/sprites/tank-attacking.png +0 -0
  17. data/{ui → lib/zombie-chaser}/sprites/tank-dead.png +0 -0
  18. data/{ui → lib/zombie-chaser}/sprites/tank-idle.png +0 -0
  19. data/{ui → lib/zombie-chaser}/sprites/tank-moving.png +0 -0
  20. data/{ui → lib/zombie-chaser}/sprites/tank-turning.png +0 -0
  21. data/{ui → lib/zombie-chaser}/sprites/witch-attacking.png +0 -0
  22. data/{ui → lib/zombie-chaser}/sprites/witch-dead.png +0 -0
  23. data/{ui → lib/zombie-chaser}/sprites/witch-idle.png +0 -0
  24. data/{ui → lib/zombie-chaser}/sprites/witch-moving.png +0 -0
  25. data/{ui → lib/zombie-chaser}/sprites/witch-turning.png +0 -0
  26. data/{ui → lib/zombie-chaser}/sprites/zombie-attacking.png +0 -0
  27. data/{ui → lib/zombie-chaser}/sprites/zombie-dead.png +0 -0
  28. data/{ui → lib/zombie-chaser}/sprites/zombie-dying.png +0 -0
  29. data/{ui → lib/zombie-chaser}/sprites/zombie-idle.png +0 -0
  30. data/{ui → lib/zombie-chaser}/sprites/zombie-moving.png +0 -0
  31. data/{ui → lib/zombie-chaser}/sprites/zombie-turning.png +0 -0
  32. data/lib/zombie-chaser/test_unit_handler.rb +78 -0
  33. data/{ui → lib/zombie-chaser}/tiles/grass.png +0 -0
  34. data/{ui → lib/zombie-chaser}/tiles/shrubbery.png +0 -0
  35. data/{ui → lib/zombie-chaser}/ui.rb +165 -127
  36. data/lib/{world.rb → zombie-chaser/world.rb} +105 -98
  37. data/lib/zombie-chaser/zombie_test_chaser.rb +139 -0
  38. data/test/fixtures/chased.rb +56 -56
  39. data/test/integration.rb +58 -0
  40. data/test/test_chaser.rb +150 -144
  41. data/test/test_unit.rb +2 -2
  42. data/test/test_zombie.rb +302 -108
  43. data/zombie-chaser.gemspec +88 -88
  44. metadata +40 -46
  45. data/lib/human.rb +0 -189
  46. data/lib/interface.rb +0 -86
  47. data/lib/test_unit_handler.rb +0 -43
  48. data/lib/zombie_test_chaser.rb +0 -133
data/test/test_unit.rb CHANGED
@@ -1,2 +1,2 @@
1
- require "test/test_chaser.rb"
2
- require "test/test_zombie.rb"
1
+ require "test_chaser.rb"
2
+ require "test_zombie.rb"
data/test/test_zombie.rb CHANGED
@@ -1,108 +1,302 @@
1
- $: << "lib"
2
-
3
- require "test/unit"
4
- require "world"
5
-
6
- module TestHumanHelper
7
- def assert_that_representations_include(expected_representation, human_results, failure_message)
8
- world = create_world(human_results)
9
- actual_representations = world.interface.representations
10
- assert actual_representations.include?(expected_representation), failure_message + "Expected #{expected_representation}, got #{actual_representations.inspect}"
11
- end
12
-
13
- def assert_that_representations_include_these_representations(expected_representations, human_results, zombies_results, failure_message)
14
- world = create_world(human_results, zombies_results)
15
- actual_representations = world.interface.representations
16
- expected_representations.each do |expected_representation|
17
- assert actual_representations.include?(expected_representation), failure_message + ": Expected #{expected_representation}, got #{actual_representations.inspect}"
18
- end
19
- end
20
-
21
- def create_world(human_results, zombies_results = [])
22
- world = World.new_using_results(human_results, zombies_results)
23
- world.run
24
- world
25
- end
26
- end
27
-
28
- class TestHuman < Test::Unit::TestCase
29
- include TestHumanHelper
30
-
31
- def test_human_single_success
32
- human_results = [:pass]
33
- failure_message = "Can't handle single success"
34
- assert_that_representations_include(".@", human_results, failure_message)
35
- end
36
-
37
- def test_human_single_failure
38
- human_results = [:failure]
39
- failure_message = "Can't handle single failure"
40
- assert_that_representations_include("+", human_results, failure_message)
41
- end
42
-
43
- def test_human_two_successes
44
- human_results = [:pass, :pass]
45
- expected_representations = ["@", ".@", "..@"]
46
- failure_message = "Needs to be able to do multiple steps"
47
- #This'll run the simulation three times. Optimize if neccessary (it isn't yet)
48
- expected_representations.each do |expected_representation|
49
- assert_that_representations_include(expected_representation, human_results, failure_message)
50
- end
51
- end
52
-
53
- def test_human_success_failure
54
- human_results = [:pass, :failure]
55
- expected_representation = ".+"
56
- failure_message = "Can't handle success and failure"
57
- assert_that_representations_include(expected_representation, human_results, failure_message)
58
- end
59
-
60
- def test_human_success_failure_success
61
- human_results = [:pass, :failure, :pass]
62
- expected_representation = ".+"
63
- failure_message = "Can't handle success and failure"
64
- assert_that_representations_include(expected_representation, human_results, failure_message)
65
- end
66
-
67
- def test_human_exploding
68
- human_results = [:pass, :failure]
69
- expected_representation = ".*"
70
- failure_message = "Doesn't represent the human exploding"
71
- assert_that_representations_include(expected_representation, human_results, failure_message)
72
- end
73
-
74
- end
75
-
76
- class TestZombie < Test::Unit::TestCase
77
- include TestHumanHelper
78
-
79
- def test_human_surviving_zombie_slaying
80
- human_results = [:pass, :pass]
81
- zombies_results = [[:failure]]
82
- expected_representations = ["..@", "*.@"]
83
- failure_message = "Can't represent a zombie slaying."
84
- assert_that_representations_include_these_representations(expected_representations, human_results, zombies_results, failure_message)
85
- end
86
-
87
- def test_human_surviving_zombie_slaying2
88
- human_results = [:pass, :pass, :pass]
89
- zombies_results = [[:pass, :failure]]
90
- expected_representations = ["...@", "Z..@", ".*.@"]
91
- failure_message = "Can't represent a zombie slaying."
92
- assert_that_representations_include_these_representations(expected_representations, human_results, zombies_results, failure_message)
93
- end
94
-
95
- end
96
-
97
- class TestConsoleInterface < Test::Unit::TestCase
98
- include TestHumanHelper
99
-
100
- def test_excessive_tests_dont_make_it_run_off_the_page
101
- human_results = [:pass] * 500
102
- zombies_results = [[:pass, :failure]]
103
- expected_representations = ["Z" + "." * 77 + "@"] #Having 80 characters in a line doesn't work
104
- failure_message = "Doesn't handle large number of tests properly"
105
- assert_that_representations_include_these_representations(expected_representations, human_results, zombies_results, failure_message)
106
- end
107
-
108
- end
1
+ require "test/unit"
2
+ require "zombie-chaser/world"
3
+ require "timeout"
4
+
5
+ module TestHumanHelper
6
+ def assert_that_representations_include(expected_representation, human_results, failure_message)
7
+ world = create_world(human_results)
8
+ actual_representations = world.interface.representations
9
+ assert actual_representations.include?(expected_representation), failure_message + "Expected #{expected_representation}, got #{actual_representations.inspect}"
10
+ end
11
+
12
+ def assert_that_representations_include_these_representations(expected_representations, human_results, zombies_results, failure_message)
13
+ world = create_world(human_results, zombies_results)
14
+ actual_representations = world.interface.representations
15
+ expected_representations.each do |expected_representation|
16
+ assert actual_representations.include?(expected_representation), failure_message + ": Expected #{expected_representation}, got #{actual_representations.inspect}"
17
+ end
18
+ end
19
+
20
+ def assert_adjusted_width_representations_include_representations(expected_representations, human_results, zombies_results, console_width, failure_message)
21
+ world = create_world_with_set_console_width(human_results, zombies_results, console_width)
22
+ actual_representations = world.interface.representations
23
+ expected_representations.each do |expected_representation|
24
+ assert actual_representations.include?(expected_representation), failure_message + ": Expected #{expected_representation}, got #{actual_representations.inspect}"
25
+ end
26
+ end
27
+
28
+ def assert_that_representations_do_not_include(unexpected_representation, human_results, zombies_results, failure_message)
29
+ world = create_world(human_results, zombies_results)
30
+ actual_representations = world.interface.representations
31
+ assert_equal false, actual_representations.include?(unexpected_representation), failure_message + ": Didn't expect #{unexpected_representation}, got #{actual_representations.inspect}"
32
+ end
33
+
34
+ def assert_that_representations_include_regexp_match(expected_regexp, human_results, zombies_results, failure_message)
35
+ world = create_world(human_results, zombies_results)
36
+ actual_representations = world.interface.representations
37
+ assert actual_representations.any?{|actual_representation| actual_representation =~ expected_regexp}, failure_message + ": Expected #{expected_regexp.inspect} would match something in #{actual_representations.inspect}"
38
+ end
39
+
40
+ def assert_that_representations_do_not_include_regexp_match(unexpected_regexp, human_results, zombies_results, failure_message)
41
+ world = create_world(human_results, zombies_results)
42
+ actual_representations = world.interface.representations
43
+ assert_equal false, actual_representations.any?{|actual_representation| puts actual_representation if actual_representation =~ unexpected_regexp; actual_representation =~ unexpected_regexp}, failure_message + ": Didn't expect #{unexpected_regexp.inspect} would match something in #{actual_representations.inspect}"
44
+ end
45
+
46
+ def assert_that_human_deadness_is(human_expected_to_die, human_results, zombies_results, failure_message)
47
+ world = create_world(human_results, zombies_results)
48
+ assert_equal human_expected_to_die, world.human_dead?, failure_message
49
+ end
50
+
51
+ def assert_that_counts_are(expected_counts, human_results, zombies_results, failure_message)
52
+ world = World.new_using_results(human_results, zombies_results)
53
+ actual_counts = Hash.new(0)
54
+ world.while_world_running do
55
+ assert world.run_human, "Human unexpectedly died"
56
+ zombies_results.size.times do
57
+ begin
58
+ # Chaser#validate returns true if chaser-proof, and false if mutations to it still pass its unit tests
59
+ # Hence the "not" in the next line
60
+ result = (not world.run_next_zombie)
61
+ rescue Timeout::Error
62
+ result = true
63
+ end
64
+ actual_counts[result] += 1
65
+ end
66
+ end
67
+ assert_equal expected_counts, actual_counts, failure_message
68
+ end
69
+
70
+ def assert_does_not_deadlock(human_results, zombies_results, failure_message)
71
+ assert_nothing_raised(failure_message) do
72
+ timeout(1) do
73
+ world = create_world(human_results, zombies_results)
74
+ end
75
+ end
76
+ end
77
+
78
+ def create_world(human_results, zombies_results = [])
79
+ world = World.new_using_results(human_results, zombies_results)
80
+ world.while_world_running do
81
+ human_survives = world.run_human
82
+ if human_survives
83
+ zombies_results.size.times do
84
+ begin
85
+ world.run_next_zombie
86
+ rescue Timeout::Error
87
+ #Don't worry about it
88
+ end
89
+ end
90
+ end
91
+ end
92
+ world
93
+ end
94
+ end
95
+
96
+ class TestHuman < Test::Unit::TestCase
97
+ include TestHumanHelper
98
+
99
+ def test_human_single_success
100
+ human_results = [:pass]
101
+ failure_message = "Can't handle single success"
102
+ assert_that_representations_include(".@", human_results, failure_message)
103
+ end
104
+
105
+ def test_human_single_failure
106
+ human_results = [:failure]
107
+ failure_message = "Can't handle single failure"
108
+ assert_that_representations_include("+", human_results, failure_message)
109
+ end
110
+
111
+ def test_human_two_successes
112
+ human_results = [:pass, :pass]
113
+ expected_representations = ["@", ".@", "..@"]
114
+ failure_message = "Needs to be able to do multiple steps"
115
+ #This'll run the simulation three times. Optimize if neccessary (it isn't yet)
116
+ expected_representations.each do |expected_representation|
117
+ assert_that_representations_include(expected_representation, human_results, failure_message)
118
+ end
119
+ end
120
+
121
+ def test_human_success_failure
122
+ human_results = [:pass, :failure]
123
+ expected_representation = ".+"
124
+ failure_message = "Can't handle success and failure"
125
+ assert_that_representations_include(expected_representation, human_results, failure_message)
126
+ end
127
+
128
+ def test_human_success_failure_success
129
+ human_results = [:pass, :failure, :pass]
130
+ expected_representation = ".+"
131
+ failure_message = "Can't handle success and failure"
132
+ assert_that_representations_include(expected_representation, human_results, failure_message)
133
+ end
134
+
135
+ def test_human_exploding
136
+ human_results = [:pass, :failure]
137
+ expected_representation = ".*"
138
+ failure_message = "Doesn't represent the human exploding"
139
+ assert_that_representations_include(expected_representation, human_results, failure_message)
140
+ end
141
+
142
+ end
143
+
144
+ class TestZombie < Test::Unit::TestCase
145
+ include TestHumanHelper
146
+
147
+ def test_human_surviving_zombie_slaying
148
+ human_results = [:pass, :pass]
149
+ zombies_results = [[:failure]]
150
+ expected_representations = ["..@", "*.@"]
151
+ failure_message = "Can't represent a zombie slaying."
152
+ assert_that_representations_include_these_representations(expected_representations, human_results, zombies_results, failure_message)
153
+ end
154
+
155
+ def test_human_surviving_zombie_slaying2
156
+ human_results = [:pass, :pass, :pass]
157
+ zombies_results = [[:pass, :failure]]
158
+ expected_representations = ["...@", "Z..@", ".*.@"]
159
+ failure_message = "Can't represent a zombie slaying."
160
+ assert_that_representations_include_these_representations(expected_representations, human_results, zombies_results, failure_message)
161
+ end
162
+
163
+ #Describes existing behaviour, but added to ensure a future commit works properly
164
+ def test_zombies_dont_appear_if_human_doesnt_survive_unit_tests
165
+ human_results = [:pass, :failure]
166
+ zombies_results = [[:pass, :failure]]
167
+ unexpected_representation = "Z+"
168
+ failure_message = "Doesn't stop after failed unmutated unit tests"
169
+ assert_that_representations_do_not_include(unexpected_representation, human_results, zombies_results, failure_message)
170
+ end
171
+
172
+ def test_corpse_littered_landscape
173
+ human_results = [:pass, :pass, :pass]
174
+ zombies_results = [[:pass, :failure],[:failure]]
175
+ expected_representations = ["++.@"]
176
+ failure_message = "Can't display a corpse littered landscape"
177
+ assert_that_representations_include_these_representations(expected_representations, human_results, zombies_results, failure_message)
178
+ end
179
+
180
+ def test_multiple_living_zombies_visible
181
+ human_results = [:pass] * 10
182
+ zombies_results = [[:pass]* 8 + [:failure]] * 5
183
+ expected_regexp = /ZZ/
184
+ failure_message = "Can't display multiple zombies at once"
185
+ assert_that_representations_include_regexp_match(expected_regexp, human_results, zombies_results, failure_message)
186
+ end
187
+
188
+ def test_timeouts_in_test_dont_cause_frozen_zombies
189
+ human_results = [:pass]
190
+ zombies_results = [[:timeout]]
191
+ failure_message = "Doesn't handle timeouts"
192
+ assert_does_not_deadlock(human_results, zombies_results, failure_message)
193
+ end
194
+ end
195
+
196
+ class TestConsoleInterface < Test::Unit::TestCase
197
+ include TestHumanHelper
198
+
199
+ #Put inside of this test case so that only things with this test case's teardown can use it
200
+ def create_world_with_set_console_width(human_results, zombies_results, width)
201
+ ConsoleInterface.width = width
202
+ world = create_world(human_results, zombies_results)
203
+ world
204
+ end
205
+
206
+ def test_excessive_tests_dont_make_it_run_off_the_page
207
+ human_results = [:pass] * 500
208
+ zombies_results = [[:pass, :failure]]
209
+ expected_representations = ["Z" + "." * 77 + "@"] #Having 80 characters in a line doesn't work
210
+ failure_message = "Doesn't handle large number of tests properly"
211
+ assert_that_representations_include_these_representations(expected_representations, human_results, zombies_results, failure_message)
212
+ end
213
+
214
+ def test_console_width_configurable
215
+ human_results = [:pass] * 500
216
+ zombies_results = [[:pass, :failure]]
217
+ console_width = 11
218
+ expected_representations = ["Z" + "." * 9 + "@"]
219
+ failure_message = "Doesn't allow console width to be configurable"
220
+ assert_adjusted_width_representations_include_representations(expected_representations, human_results, zombies_results, console_width, failure_message)
221
+ end
222
+
223
+ def test_zombies_do_not_trample_non_dead_zombies
224
+ human_results = [:pass, :pass]
225
+ zombies_results = [[:pass, :failure], [:pass, :pass]]
226
+ expected_representations = ["Z*@", "Z+@"]
227
+ failure_message = "Zombies are trampling on non-dead zombies"
228
+ assert_that_representations_include_these_representations(expected_representations, human_results, zombies_results, failure_message)
229
+ end
230
+
231
+ def dont_test_zombies_do_not_collide
232
+ human_results = [:pass] * 10
233
+ zombies_results = [[:pass] * 10, [:pass] * 10]
234
+ unexpected_regexp = /\A\.\.+Z\.+\@/ #Only one square with zombies, the second zombie should have appeared by now, and the human hasn't been eaten
235
+ failure_message = "Zombies are sharing the same square"
236
+ 100.times do |i|
237
+ assert_that_representations_do_not_include_regexp_match(unexpected_regexp, human_results, zombies_results, failure_message + "(attempt #{i})")
238
+ end
239
+ end
240
+
241
+ def test_multiple_successful_zombies_do_not_deadlock
242
+ human_results = [:pass] * 2
243
+ zombies_results = [[:pass] * 2] * 2
244
+ failure_message = "Multiple successful zombies deadlock (pardon the pun)"
245
+ assert_does_not_deadlock(human_results, zombies_results, failure_message)
246
+ end
247
+
248
+ #Confirming existing behaviour
249
+ def test_zombie_does_not_deadlock_when_console_position_adjusted
250
+ ConsoleInterface.width = 10
251
+ human_results = [:pass] * 25
252
+ zombies_results = [[:pass]*25]
253
+ failure_message = "A zombie that isn't changing squares because of width limitations deadlocks (pardon the pun)"
254
+ assert_does_not_deadlock(human_results, zombies_results, failure_message)
255
+ end
256
+
257
+ def teardown
258
+ ConsoleInterface.width = 79
259
+ end
260
+
261
+ end
262
+
263
+ class TestZombieHumanInteraction < Test::Unit::TestCase
264
+ include TestHumanHelper
265
+
266
+ def test_zombies_eat_human
267
+ human_results = [:pass, :pass]
268
+ zombies_results = [[:pass, :pass]]
269
+ human_expected_to_die = true
270
+ failure_message = "Human not eaten"
271
+ assert_that_human_deadness_is human_expected_to_die, human_results, zombies_results, failure_message
272
+ end
273
+ end
274
+
275
+ class TestResultsReporting < Test::Unit::TestCase
276
+ include TestHumanHelper
277
+
278
+ def test_killed_zombies_reported_as_success
279
+ human_results = [:pass]
280
+ zombies_results = [[:failure]]
281
+ expected_counts = {true=>1}
282
+ failure_message = "All zombies killed not regarded as all good"
283
+ assert_that_counts_are expected_counts, human_results, zombies_results, failure_message
284
+ end
285
+
286
+ def test_unkilled_zombies_reported_as_failure
287
+ human_results = [:pass]
288
+ zombies_results = [[:pass]]
289
+ expected_counts = {false => 1}
290
+ failure_message = "Unkilled zombie not regarded as a problem"
291
+ assert_that_counts_are expected_counts, human_results, zombies_results, failure_message
292
+ end
293
+
294
+ def test_timeouts_reported_as_success
295
+ human_results = [:pass]
296
+ zombies_results = [[:timeout]]
297
+ expected_counts = {true => 1}
298
+ failure_message = "Zombie causing timeout not regarded as all good"
299
+ assert_that_counts_are expected_counts, human_results, zombies_results, failure_message
300
+ end
301
+
302
+ end
@@ -1,88 +1,88 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{zombie-chaser}
8
- s.version = "0.0.3"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Andrew Grimm", "Ryan Davis", "Eric Hodel", "Kevin Clark"]
12
- s.date = %q{2009-12-13}
13
- s.default_executable = %q{zombie-chaser}
14
- s.description = %q{A zombie-themed graphic(al) user interface for mutation testing}
15
- s.email = %q{andrew.j.grimm@gmail.com}
16
- s.executables = ["zombie-chaser"]
17
- s.extra_rdoc_files = [
18
- "README.txt"
19
- ]
20
- s.files = [
21
- "README.txt",
22
- "Rakefile",
23
- "bin/zombie-chaser",
24
- "lib/chaser.rb",
25
- "lib/human.rb",
26
- "lib/interface.rb",
27
- "lib/test_unit_handler.rb",
28
- "lib/world.rb",
29
- "lib/zombie_test_chaser.rb",
30
- "test/fixtures/chased.rb",
31
- "test/test_chaser.rb",
32
- "test/test_unit.rb",
33
- "test/test_zombie.rb",
34
- "ui/icons/death.png",
35
- "ui/icons/robot.png",
36
- "ui/sprites/robot-attacking.png",
37
- "ui/sprites/robot-dead.png",
38
- "ui/sprites/robot-dying.png",
39
- "ui/sprites/robot-idle.png",
40
- "ui/sprites/robot-moving.png",
41
- "ui/sprites/robot-turning.png",
42
- "ui/sprites/tank-attacking.png",
43
- "ui/sprites/tank-dead.png",
44
- "ui/sprites/tank-idle.png",
45
- "ui/sprites/tank-moving.png",
46
- "ui/sprites/tank-turning.png",
47
- "ui/sprites/witch-attacking.png",
48
- "ui/sprites/witch-dead.png",
49
- "ui/sprites/witch-idle.png",
50
- "ui/sprites/witch-moving.png",
51
- "ui/sprites/witch-turning.png",
52
- "ui/sprites/zombie-attacking.png",
53
- "ui/sprites/zombie-dead.png",
54
- "ui/sprites/zombie-dying.png",
55
- "ui/sprites/zombie-idle.png",
56
- "ui/sprites/zombie-moving.png",
57
- "ui/sprites/zombie-turning.png",
58
- "ui/tiles/grass.png",
59
- "ui/tiles/shrubbery.png",
60
- "ui/ui.rb",
61
- "zombie-chaser.gemspec"
62
- ]
63
- s.homepage = %q{http://andrewjgrimm.wordpress.com/2009/11/08/declare-war-on-everything-with-chaser/}
64
- s.rdoc_options = ["--charset=UTF-8"]
65
- s.require_paths = ["lib"]
66
- s.rubygems_version = %q{1.3.5}
67
- s.summary = %q{Lightweight mutation testing ... with ZOMBIES!!!}
68
- s.test_files = [
69
- "test/fixtures/chased.rb",
70
- "test/test_chaser.rb",
71
- "test/test_unit.rb",
72
- "test/test_zombie.rb"
73
- ]
74
-
75
- if s.respond_to? :specification_version then
76
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
77
- s.specification_version = 3
78
-
79
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
80
- s.add_runtime_dependency(%q<gosu>, [">= 0"])
81
- else
82
- s.add_dependency(%q<gosu>, [">= 0"])
83
- end
84
- else
85
- s.add_dependency(%q<gosu>, [">= 0"])
86
- end
87
- end
88
-
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{zombie-chaser}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Andrew Grimm", "Ryan Davis", "Eric Hodel", "Kevin Clark"]
12
+ s.date = %q{2010-04-11}
13
+ s.default_executable = %q{zombie-chaser}
14
+ s.description = %q{A zombie-themed graphic(al) user interface for mutation testing}
15
+ s.email = %q{andrew.j.grimm@gmail.com}
16
+ s.executables = ["zombie-chaser"]
17
+ s.extra_rdoc_files = [
18
+ "README.txt"
19
+ ]
20
+ s.files = [
21
+ "History.txt",
22
+ "README.txt",
23
+ "Rakefile",
24
+ "bin/zombie-chaser",
25
+ "lib/zombie-chaser/chaser.rb",
26
+ "lib/zombie-chaser/human.rb",
27
+ "lib/zombie-chaser/icons/death.png",
28
+ "lib/zombie-chaser/icons/robot.png",
29
+ "lib/zombie-chaser/interface.rb",
30
+ "lib/zombie-chaser/sprites/robot-attacking.png",
31
+ "lib/zombie-chaser/sprites/robot-dead.png",
32
+ "lib/zombie-chaser/sprites/robot-dying.png",
33
+ "lib/zombie-chaser/sprites/robot-idle.png",
34
+ "lib/zombie-chaser/sprites/robot-moving.png",
35
+ "lib/zombie-chaser/sprites/robot-turning.png",
36
+ "lib/zombie-chaser/sprites/tank-attacking.png",
37
+ "lib/zombie-chaser/sprites/tank-dead.png",
38
+ "lib/zombie-chaser/sprites/tank-idle.png",
39
+ "lib/zombie-chaser/sprites/tank-moving.png",
40
+ "lib/zombie-chaser/sprites/tank-turning.png",
41
+ "lib/zombie-chaser/sprites/witch-attacking.png",
42
+ "lib/zombie-chaser/sprites/witch-dead.png",
43
+ "lib/zombie-chaser/sprites/witch-idle.png",
44
+ "lib/zombie-chaser/sprites/witch-moving.png",
45
+ "lib/zombie-chaser/sprites/witch-turning.png",
46
+ "lib/zombie-chaser/sprites/zombie-attacking.png",
47
+ "lib/zombie-chaser/sprites/zombie-dead.png",
48
+ "lib/zombie-chaser/sprites/zombie-dying.png",
49
+ "lib/zombie-chaser/sprites/zombie-idle.png",
50
+ "lib/zombie-chaser/sprites/zombie-moving.png",
51
+ "lib/zombie-chaser/sprites/zombie-turning.png",
52
+ "lib/zombie-chaser/test_unit_handler.rb",
53
+ "lib/zombie-chaser/tiles/grass.png",
54
+ "lib/zombie-chaser/tiles/shrubbery.png",
55
+ "lib/zombie-chaser/ui.rb",
56
+ "lib/zombie-chaser/world.rb",
57
+ "lib/zombie-chaser/zombie_test_chaser.rb",
58
+ "test/fixtures/chased.rb",
59
+ "test/integration.rb",
60
+ "test/test_chaser.rb",
61
+ "test/test_unit.rb",
62
+ "test/test_zombie.rb",
63
+ "zombie-chaser.gemspec"
64
+ ]
65
+ s.homepage = %q{http://andrewjgrimm.wordpress.com/2009/11/08/declare-war-on-everything-with-chaser/}
66
+ s.rdoc_options = ["--charset=UTF-8"]
67
+ s.require_paths = ["lib"]
68
+ s.rubygems_version = %q{1.3.5}
69
+ s.summary = %q{Lightweight mutation testing ... with ZOMBIES!!!}
70
+ s.test_files = [
71
+ "test/fixtures/chased.rb",
72
+ "test/integration.rb",
73
+ "test/test_chaser.rb",
74
+ "test/test_unit.rb",
75
+ "test/test_zombie.rb"
76
+ ]
77
+
78
+ if s.respond_to? :specification_version then
79
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
80
+ s.specification_version = 3
81
+
82
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
83
+ else
84
+ end
85
+ else
86
+ end
87
+ end
88
+