zombie-chaser 0.0.3 → 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 (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
+