minecraft 0.3.2 → 0.3.3

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.
data/CHANGES.md CHANGED
@@ -1,3 +1,11 @@
1
+ 0.3.3 (2011-09-03)
2
+ ------------------
3
+
4
+ * Refactored tests.
5
+ * Word wrapped more commands (should be all long outputs now).
6
+ * Source file reading bug fixed.
7
+ * Fixed an `all` style command bug.
8
+
1
9
  0.3.2 (2011-08-31)
2
10
  ------------------
3
11
 
@@ -143,7 +143,7 @@ module Minecraft
143
143
  @server.puts "say Disco ends."
144
144
  @disco = false
145
145
  else
146
- @server.puts "say #{user} has requested disco, s/he likely can't actually dance."
146
+ say("#{user} has requested disco, s/he likely can't actually dance.")
147
147
  @disco = true
148
148
  end
149
149
  end
@@ -157,10 +157,10 @@ module Minecraft
157
157
  def dnd(user)
158
158
  user.downcase!
159
159
  if @userdnd.include? user
160
- @server.puts "say #{user} is ready to be disturbed. *cough*"
160
+ say("#{user} is ready to be disturbed. *cough*")
161
161
  @userdnd.reject! { |u| u == user }
162
162
  else
163
- @server.puts "say #{user} does not wish to be disturbed."
163
+ say("#{user} does not wish to be disturbed.")
164
164
  @userdnd << user
165
165
  end
166
166
  end
@@ -173,7 +173,7 @@ module Minecraft
173
173
  # disturb("basicxman", "mike_n_7")
174
174
  # @note ops: op
175
175
  def disturb(user, target_user)
176
- @server.puts "say #{target_user} is being disturbed by #{user}!"
176
+ say("#{target_user} is being disturbed by #{user}!")
177
177
  @userdnd.reject! { |u| u == target_user.downcase }
178
178
  end
179
179
 
@@ -182,7 +182,7 @@ module Minecraft
182
182
  # @param [String] user The requesting user.
183
183
  # @example
184
184
  # printdnd()
185
- # @note: ops: op
185
+ # @note ops: op
186
186
  def printdnd()
187
187
  @server.puts "say #{@userdnd.join(", ")}"
188
188
  end
@@ -201,7 +201,7 @@ module Minecraft
201
201
  target_user = target_user.downcase
202
202
  num_points = num_points.to_i
203
203
  if user.downcase == target_user
204
- @server.puts "say Did you just try to give yourself points? Sure, minus twenty."
204
+ say("Did you just try to give yourself points? Sure, minus twenty.")
205
205
  @userpoints[target_user] ||= 0
206
206
  @userpoints[target_user] -= 20
207
207
  return
@@ -214,7 +214,7 @@ module Minecraft
214
214
  num_points = [num_points, cap_points(user)].min
215
215
  @userpoints[target_user] ||= 0
216
216
  @userpoints[target_user] += num_points
217
- @server.puts "say #{user} has given #{target_user} #{num_points} points for a total of #{@userpoints[target_user]}."
217
+ say("#{user} has given #{target_user} #{num_points} points for a total of #{@userpoints[target_user]}.")
218
218
  end
219
219
 
220
220
  # Checks a users points or displays the leaderboard.
@@ -262,14 +262,14 @@ module Minecraft
262
262
  return @server.puts "say No user #{target_user} exists." unless @users.include? target_user
263
263
  return vote(user) if target_user.nil?
264
264
  unless submit_vote(user, target_user)
265
- @kickvotes[target_user] = {
265
+ @userkickvotes[target_user] = {
266
266
  :tally => kick_influence(user),
267
267
  :votes => [user],
268
268
  :start => Time.now
269
269
  }
270
270
  @last_kick_vote = target_user
271
- @server.puts "say A kickvote has been initiated for #{target_user}."
272
- @server.puts "say To vote enter !kickvote #{target_user}."
271
+ say("A kickvote has been initiated for #{target_user}.")
272
+ say("To vote enter !kickvote #{target_user}.")
273
273
  end
274
274
  end
275
275
 
@@ -293,11 +293,11 @@ module Minecraft
293
293
  # cancelvote("basicxman", "blizzard4U")
294
294
  # @note ops: op
295
295
  def cancelvote(user, target_user)
296
- if @kickvotes.has_key? target_user
297
- @kickvotes.delete(target_user)
298
- @server.puts "say #{user} has cancelled the kickvote on #{target_user}."
296
+ if @userkickvotes.has_key? target_user
297
+ @userkickvotes.delete(target_user)
298
+ say("#{user} has cancelled the kickvote on #{target_user}.")
299
299
  else
300
- @server.puts "say There is no kickvote against #{target_user} dummy."
300
+ say("There is no kickvote against #{target_user} dummy.")
301
301
  end
302
302
  end
303
303
 
@@ -308,8 +308,8 @@ module Minecraft
308
308
  # kickvotes("basicxman")
309
309
  # @note ops: op
310
310
  def kickvotes(user)
311
- @kickvotes.each do |target_user, data|
312
- @server.puts "say #{target_user}: #{data[:tally]} #{data[:votes].map { |u| u[0] + u[-1] }.join(", ")}"
311
+ @userkickvotes.each do |target_user, data|
312
+ say("#{target_user}: #{data[:tally]} #{data[:votes]}")
313
313
  end
314
314
  end
315
315
 
@@ -323,7 +323,7 @@ module Minecraft
323
323
  def roulette(user)
324
324
  users = @users + [user] * 3
325
325
  picked_user = users.sample
326
- @server.puts "say #{user} has requested a roulette kick, s/he has a higher chance of being kicked."
326
+ say("#{user} has requested a roulette kick, s/he has a higher chance of being kicked.")
327
327
  @server.puts "kick #{picked_user}"
328
328
  end
329
329
 
@@ -450,11 +450,9 @@ module Minecraft
450
450
  # @note ops: op
451
451
  def property(user, key = nil)
452
452
  if key.nil?
453
- (@server_properties.length / 3.0).ceil.times do |n|
454
- @server.puts "say #{@server_properties.keys[n * 3, 3].join(", ")}"
455
- end
453
+ say(@server_properties.keys.join(", "))
456
454
  else
457
- @server.puts "say #{key} is currently #{@server_properties[key]}" if @server_properties.include? key
455
+ say ("#{key} is currently #{@server_properties[key]}") if @server_properties.include? key
458
456
  end
459
457
  end
460
458
 
@@ -472,9 +470,9 @@ module Minecraft
472
470
  target_user ||= user
473
471
  unless @users.include? target_user
474
472
  if @userlog.has_key? target_user
475
- @server.puts "say #{target_user} has #{format_uptime(@userlog[target_user])} minutes of logged time."
473
+ say("#{target_user} has #{format_uptime(@userlog[target_user])} minutes of logged time.")
476
474
  else
477
- @server.puts "say #{target_user} Does not exist."
475
+ say("#{target_user} Does not exist.")
478
476
  end
479
477
  return
480
478
  end
@@ -483,7 +481,7 @@ module Minecraft
483
481
  if @userlog.has_key? target_user
484
482
  total = " Out of a total of #{format_uptime(@userlog[target_user] + time_spent)} minutes."
485
483
  end
486
- @server.puts "say #{target_user} has been online for #{format_uptime(time_spent)} minutes.#{total}"
484
+ say("#{target_user} has been online for #{format_uptime(time_spent)} minutes.#{total}")
487
485
  end
488
486
 
489
487
  # Will print the server rules to all connected players.
@@ -492,7 +490,7 @@ module Minecraft
492
490
  # rules()
493
491
  # @note ops: none
494
492
  def rules()
495
- @server.puts "say #{@rules}"
493
+ say(@rules)
496
494
  end
497
495
 
498
496
  # Lists the currently connecting players, noting which is the requesting
@@ -514,7 +512,7 @@ module Minecraft
514
512
  s + "#{", " unless s.empty?}#{pre}#{u}#{suf}"
515
513
  end
516
514
 
517
- @server.puts "say #{l}"
515
+ say(l)
518
516
  end
519
517
 
520
518
  # Adds a timer to the requesting users timers, the item and frequency in
@@ -534,7 +532,7 @@ module Minecraft
534
532
  return @server.puts "say Timer was not added." if item.nil?
535
533
  @timers[user] ||= {}
536
534
  @timers[user][item] = duration
537
- @server.puts "say Timer added for #{user}. Giving item id #{item} every #{duration} seconds."
535
+ say("Timer added for #{user}. Giving item id #{item} every #{duration} seconds.")
538
536
  end
539
537
 
540
538
  # Deletes a timer from the requesting user.
@@ -594,17 +592,17 @@ module Minecraft
594
592
  def s(user, *args)
595
593
  shortcut_name = args.slice! 0
596
594
  if args.length == 0
597
- unless @shortcuts.has_key? user and @shortcuts[user].has_key? shortcut_name
595
+ unless @usershortcuts.has_key? user and @usershortcuts[user].has_key? shortcut_name
598
596
  return kit(user, shortcut_name) if KITS.include? shortcut_name.to_sym
599
- @server.puts "say #{shortcut_name} is not a valid shortcut for #{user}."
597
+ return say("#{shortcut_name} is not a valid shortcut for #{user}.")
600
598
  end
601
- return call_command(user, @shortcuts[user][shortcut_name].first, *@shortcuts[user][shortcut_name][1..-1]) if args.length == 0
599
+ return call_command(user, @usershortcuts[user][shortcut_name].first, *@usershortcuts[user][shortcut_name][1..-1]) if args.length == 0
602
600
  end
603
601
 
604
602
  command_string = args
605
- @shortcuts[user] ||= {}
606
- @shortcuts[user][shortcut_name] = command_string
607
- @server.puts "say Shortcut labelled #{shortcut_name} for #{user} has been added."
603
+ @usershortcuts[user] ||= {}
604
+ @usershortcuts[user][shortcut_name] = command_string
605
+ say("Shortcut labelled #{shortcut_name} for #{user} has been added.")
608
606
  end
609
607
 
610
608
  # Prints the requested users shortcuts.
@@ -614,8 +612,8 @@ module Minecraft
614
612
  # shortcuts("basicxman")
615
613
  # @note ops: hop
616
614
  def shortcuts(user)
617
- labels = @shortcuts[user].keys.join(", ") if @shortcuts.has_key? user
618
- @server.puts "say Shortcuts for #{user}: #{labels}."
615
+ labels = @usershortcuts[user].keys.join(", ") if @usershortcuts.has_key? user
616
+ say("Shortcuts for #{user}: #{labels}.")
619
617
  end
620
618
 
621
619
  # Prints the available commands for the user.
@@ -734,6 +732,14 @@ module Minecraft
734
732
  end
735
733
  end
736
734
 
735
+ # Validates a kit group, if the kit cannot be found it executes the
736
+ # !kitlist command.
737
+ def validate_kit(group = "")
738
+ return true if KITS.include? group.to_sym
739
+ @server.puts "say #{group} is not a valid kit."
740
+ kitlist
741
+ end
742
+
737
743
  private
738
744
 
739
745
  # Prints the command signature options for a specified command.
@@ -789,14 +795,6 @@ module Minecraft
789
795
  end
790
796
  end
791
797
 
792
- # Validates a kit group, if the kit cannot be found it executes the
793
- # !kitlist command.
794
- def validate_kit(group = "")
795
- return true if KITS.include? group.to_sym
796
- @server.puts "say #{group} is not a valid kit."
797
- kitlist
798
- end
799
-
800
798
  # Changes the time of day.
801
799
  #
802
800
  # @param [String] time The time of day to change it to.
@@ -816,10 +814,10 @@ module Minecraft
816
814
  # @example
817
815
  # check_kickvote("blizzard4U")
818
816
  def check_kickvote(user)
819
- if @kickvotes[user][:tally] >= @vote_threshold
817
+ if @userkickvotes[user][:tally] >= @vote_threshold
820
818
  @server.puts "say Enough votes have been given to kick #{user}."
821
819
  @server.puts "kick #{user}"
822
- @kickvotes.delete(user)
820
+ @userkickvotes.delete(user)
823
821
  end
824
822
  end
825
823
 
@@ -837,10 +835,10 @@ module Minecraft
837
835
 
838
836
  # Checks to see if any kickvotes are expired.
839
837
  def expire_kickvotes
840
- @kickvotes.each do |target_user, data|
838
+ @userkickvotes.each do |target_user, data|
841
839
  if Time.now > data[:start] + @vote_expiration
842
840
  @server.puts "say The kickvote for #{target_user} has expired."
843
- @kickvotes.delete(target_user)
841
+ @userkickvotes.delete(target_user)
844
842
  end
845
843
  end
846
844
  end
@@ -854,12 +852,12 @@ module Minecraft
854
852
  # submit_vote("basicxman", "blizzard4U")
855
853
  def submit_vote(user, target_user)
856
854
  return unless @users.include? target_user
857
- if @kickvotes.has_key? target_user
858
- if @kickvotes[target_user][:votes].include? user
855
+ if @userkickvotes.has_key? target_user
856
+ if @userkickvotes[target_user][:votes].include? user
859
857
  @server.puts "say You have already voted."
860
858
  else
861
- @kickvotes[target_user][:votes] << user
862
- @kickvotes[target_user][:tally] += kick_influence(user)
859
+ @userkickvotes[target_user][:votes] << user
860
+ @userkickvotes[target_user][:tally] += kick_influence(user)
863
861
  check_kickvote(target_user)
864
862
  end
865
863
  return true
@@ -13,9 +13,9 @@ module Minecraft
13
13
  def initialize(server, opts)
14
14
  @ops = File.readlines("ops.txt").map { |s| s.chomp } if File.exists? "ops.txt"
15
15
  get_json :hops, []
16
- get_json :uptime
16
+ get_json :useruptime
17
17
  get_json :timers
18
- get_json :shortcuts
18
+ get_json :usershortcuts
19
19
  get_json :userlog
20
20
  get_json :userpoints
21
21
  get_json :userdnd, []
@@ -26,7 +26,7 @@ module Minecraft
26
26
  @counter = 0
27
27
  @logon_time = {}
28
28
  @server = server
29
- @kickvotes = {}
29
+ @userkickvotes = {}
30
30
  @last_kick_vote = nil
31
31
  load_server_properties
32
32
 
@@ -40,19 +40,19 @@ module Minecraft
40
40
  # Initialize the set of commands.
41
41
  @commands = {}
42
42
  commands = Minecraft::Commands.public_instance_methods
43
- @command_info = File.read(method(commands.first).source_location.first).split("\n")
43
+ @command_info = File.read(method(commands.first).source_location.first).split(/$/)
44
44
  @enums = [ :ops ]
45
45
  commands.each do |sym|
46
46
  next if sym.to_s.end_with? "all"
47
- meth = method(sym)
47
+ meth = method(sym)
48
48
  src_b, src_e = get_comment_range(meth.source_location.last)
49
49
 
50
50
  @commands[sym] = {
51
51
  :help => "",
52
- :ops => :none,
53
52
  :params => meth.parameters
54
53
  }
55
54
  parse_comments(src_b, src_e, sym)
55
+ @commands.delete sym if @commands[sym][:ops].nil?
56
56
  end
57
57
  end
58
58
 
@@ -105,7 +105,7 @@ module Minecraft
105
105
  # Save instance variables to their respective JSON files.
106
106
  def save
107
107
  save_file :timers
108
- save_file :shortcuts
108
+ save_file :usershortcuts
109
109
  save_file :hops
110
110
  save_file :userpoints
111
111
  save_file :userdnd
@@ -176,7 +176,7 @@ module Minecraft
176
176
  return unless send("validate_" + root.to_s, *args)
177
177
  end
178
178
 
179
- is_all = @commands[root][:all] if is_all
179
+ is_all = !@commands[root][:all].nil? if is_all
180
180
  rest_param = @commands[root][:params].count { |a| a.first == :rest }
181
181
  reg_params = @commands[root][:params].count { |a| a.last != :user }
182
182
 
@@ -213,15 +213,15 @@ module Minecraft
213
213
  params = @commands[command.to_sym][:params][1..-1].map { |a| [a[0], a[1].to_s.gsub("_", " ")] }
214
214
  return unless args.length < reg_params
215
215
 
216
- return @server.puts "say Expected at least one argument." if rest_param == 1
216
+ return say("Expected at least one argument.") if rest_param == 1
217
217
  req_params = params.count { |a| a.first == :req }
218
218
  if args.length < req_params
219
219
  args.length.times { params.slice! 0 }
220
220
  if params.length == 1
221
- return @server.puts "say Expected the argument '#{params[0][1]}'"
221
+ return say("Expected the argument '#{params[0][1]}'")
222
222
  else
223
223
  temp = params.map { |a| "'#{a[1]}'" }
224
- return @server.pust "say Expected additional arguments, #{temp.join(", ")}"
224
+ return say("Expected additional arguments, #{temp.join(", ")}")
225
225
  end
226
226
  end
227
227
  end
@@ -411,7 +411,7 @@ module Minecraft
411
411
  time_spent = calculate_uptime(user)
412
412
  @userlog[user] ||= 0
413
413
  @userlog[user] += time_spent
414
- @server.puts "say #{user} spent #{format_uptime(time_spent)} minutes in the server, totalling to #{format_uptime(@userlog[user])}."
414
+ say("#{user} spent #{format_uptime(time_spent)} minutes in the server, totalling to #{format_uptime(@userlog[user])}.")
415
415
  save_file :userlog
416
416
  end
417
417
 
@@ -475,7 +475,7 @@ module Minecraft
475
475
  # @return [Boolean] Returns true if the user is an op.
476
476
  def validate_ops(user, command, message = true)
477
477
  return true if is_op? user.downcase
478
- @server.puts "say #{user} is not an op, cannot use !#{command}." if message
478
+ say("#{user} is not an op, cannot use !#{command}.") if message
479
479
  end
480
480
 
481
481
  # Check if a user has half op privileges and print a privilege error if not.
@@ -485,7 +485,7 @@ module Minecraft
485
485
  # @return [Boolean] Returns true if the user is an op.
486
486
  def validate_hops(user, command, message = true)
487
487
  return true if is_hop? user.downcase
488
- @server.puts "say #{user} is not a half-op, cannot use !#{command}." if message
488
+ say("#{user} is not a half-op, cannot use !#{command}.") if message
489
489
  end
490
490
 
491
491
  # An error message for invalid commands.
@@ -1,5 +1,5 @@
1
1
  # Global Minecraft module.
2
2
  module Minecraft
3
3
  # Yay, keep these versions coming!
4
- VERSION = "0.3.2"
4
+ VERSION = "0.3.3"
5
5
  end
@@ -82,46 +82,42 @@ eof
82
82
  end
83
83
 
84
84
  sandbox_test "give command should give kits for wools" do
85
- @ext = Minecraft::Extensions.new(StringIO.new, {})
86
- @ext.hops = ["basicxman"]
87
- @ext.call_command("basicxman", "give", "lightgray", "2m")
88
- t = @ext.server.string.gsub("\n", " ")
89
- assert_match "give basicxman 35 64", t
90
- assert_match "give basicxman 351", t
85
+ ext :hops => ["basicxman"]
86
+ call "basicxman give lightgray 2m"
87
+ assert_match "give basicxman 35 64", output_line
88
+ assert_match "give basicxman 351", output_line
91
89
  end
92
90
 
93
91
  # User points system testing.
94
92
  sandbox_test "should give a user points" do
95
- @ext = Minecraft::Extensions.new(StringIO.new, {})
96
- @ext.users = ["basicxman", "mike_n_7", "blizzard4U", "Ian_zers"]
97
- @ext.ops = ["basicxman"]
98
- @ext.hops = ["mike_n_7"]
99
- @ext.call_command("basicxman", "points", "Ian_zers", "1001")
93
+ ext :ops => ["basicxman"], :hops => ["mike_n_7"], :users => ["blizzard4U", "Ian_zers"]
94
+ call "basicxman points Ian_zers 1001"
100
95
  assert_equal 1000, @ext.userpoints["ian_zers"]
101
- @ext.call_command("mike_n_7", "points", "Ian_zers", "501")
96
+
97
+ call "mike_n_7 points Ian_zers 501"
102
98
  assert_equal 1500, @ext.userpoints["ian_zers"]
103
- @ext.call_command("blizzard4U", "points", "Ian_zers", "2")
99
+
100
+ call "blizzard4U points Ian_zers 2"
104
101
  assert_equal 1501, @ext.userpoints["ian_zers"]
105
102
  end
106
103
 
107
104
  sandbox_test "should not a let a user give herself points" do
108
- @ext = Minecraft::Extensions.new(StringIO.new, {})
109
- @ext.users = ["basicxman"]
105
+ ext :users => ["basicxman"]
110
106
  @ext.userpoints = { "basicxman" => 0 }
111
- @ext.call_command("basicxman", "points", "basicxman")
107
+ call "basicxman points basicxman"
112
108
  assert @ext.userpoints["basicxman"] < 0
113
109
  end
114
110
 
115
111
  sandbox_test "should print a users points" do
116
- @ext = Minecraft::Extensions.new(StringIO.new, {})
112
+ ext :users => ["basicxman"]
117
113
  @ext.userpoints = { "basicxman" => 50 }
118
- @ext.call_command("basicxman", "board")
119
- assert_match "basicxman", @ext.server.string
120
- assert_match "50", @ext.server.string
114
+ call "basicxman board"
115
+ assert_match "basicxman", output
116
+ assert_match "50", output
121
117
  end
122
118
 
123
119
  sandbox_test "should print a leaderboard" do
124
- @ext = Minecraft::Extensions.new(StringIO.new, {})
120
+ ext
125
121
  @ext.userpoints = {
126
122
  "basicxman" => 150,
127
123
  "mike_n_7" => 150,
@@ -131,7 +127,7 @@ eof
131
127
  "someguy" => 10
132
128
  }
133
129
  @ext.board("basicxman")
134
- leaderboard = @ext.server.string.split("\n")
130
+ leaderboard = output_lines
135
131
  assert_match "150", leaderboard[0]
136
132
  assert_match "150", leaderboard[1]
137
133
  assert_match "Ian_zers", leaderboard[2]
@@ -141,247 +137,207 @@ eof
141
137
 
142
138
  # Kickvote testing.
143
139
  sandbox_test "should initiate a kickvote against a user" do
144
- @ext = Minecraft::Extensions.new(StringIO.new, {})
145
- @ext.users = ["basicxman", "mike_n_7", "blizzard4U", "Ian_zers"]
146
- @ext.ops = ["basicxman"]
147
- @ext.hops = ["mike_n_7"]
148
- @ext.call_command("basicxman", "kickvote", "blizzard4U")
149
- assert_equal 3, @ext.kickvotes["blizzard4U"][:tally]
140
+ ext :ops => ["basicxman"], :hops => ["mike_n_7"], :users => ["blizzard4U", "Ian_zers"]
141
+ call "basicxman kickvote blizzard4U"
142
+ assert_equal 3, @ext.userkickvotes["blizzard4U"][:tally]
150
143
  assert_equal "blizzard4U", @ext.last_kick_vote
151
144
  end
152
145
 
153
146
  sandbox_test "should expire a kickvote against a user" do
154
- @ext = Minecraft::Extensions.new(StringIO.new, {})
155
- @ext.users = ["basicxman", "blizzard4U"]
156
- @ext.call_command("basicxman", "kickvote", "blizzard4U")
147
+ ext :users => ["basicxman", "blizzard4U"]
148
+ call "basicxman kickvote blizzard4U"
157
149
  @ext.counter = 9
158
- @ext.kickvotes["blizzard4U"][:start] = Time.now - 300
150
+ @ext.userkickvotes["blizzard4U"][:start] = Time.now - 300
159
151
  @ext.periodic
160
- assert_match "expire", @ext.server.string
152
+ assert_match "expire", output
161
153
  end
162
154
 
163
155
  sandbox_test "should add the correct number of votes per user type" do
164
- @ext = Minecraft::Extensions.new(StringIO.new, {})
165
- @ext.users = ["basicxman", "mike_n_7", "blizzard4U", "Ian_zers"]
166
- @ext.ops = ["basicxman"]
167
- @ext.hops = ["mike_n_7"]
156
+ ext :ops => ["basicxman"], :hops => ["mike_n_7"], :users => ["blizzard4U", "Ian_zers"]
168
157
  @ext.vote_threshold = 7
169
- @ext.call_command("Ian_zers", "kickvote", "blizzard4U")
170
- assert_equal 1, @ext.kickvotes["blizzard4U"][:tally]
171
- @ext.call_command("mike_n_7", "vote")
172
- assert_equal 3, @ext.kickvotes["blizzard4U"][:tally]
173
- @ext.call_command("basicxman", "vote")
174
- assert_equal 6, @ext.kickvotes["blizzard4U"][:tally]
158
+ call "Ian_zers kickvote blizzard4U"
159
+ assert_equal 1, @ext.userkickvotes["blizzard4U"][:tally]
160
+
161
+ call "mike_n_7 vote"
162
+ assert_equal 3, @ext.userkickvotes["blizzard4U"][:tally]
163
+
164
+ call "basicxman vote"
165
+ assert_equal 6, @ext.userkickvotes["blizzard4U"][:tally]
175
166
  end
176
167
 
177
168
  sandbox_test "should kick a user who has enough votes" do
178
- @ext = Minecraft::Extensions.new(StringIO.new, {})
179
- @ext.users = ["basicxman", "mike_n_7", "blizzard4U", "Ian_zers"]
180
- @ext.ops = ["basicxman"]
181
- @ext.hops = ["mike_n_7"]
182
- @ext.call_command("basicxman", "kickvote", "Ian_zers")
183
- @ext.call_command("mike_n_7", "vote")
184
- assert_match "kick Ian_zers", @ext.server.string
169
+ ext :ops => ["basicxman"], :hops => ["mike_n_7"], :users => ["blizzard4U", "Ian_zers"]
170
+ call "basicxman kickvote Ian_zers"
171
+ call "mike_n_7 vote"
172
+ assert_match "kick Ian_zers", output
185
173
  end
186
174
 
187
175
  # Timer test.
188
176
  sandbox_test "should not add a timer if the item does not exist" do
189
- @ext = Minecraft::Extensions.new(StringIO.new, {})
190
- @ext.hops = ["basicxman"]
191
- @ext.call_command("basicxman", "addtimer", "foo")
177
+ ext :hops => ["basicxman"]
178
+ call "basicxman addtimer foo"
192
179
  assert_nil @ext.timers["basicxman"]
193
- assert_match "not added", @ext.server.string
180
+ assert_match "not added", output
194
181
  end
195
182
 
196
183
  # Stop timer test.
197
184
  sandbox_test "should stop all timers" do
198
- @ext = Minecraft::Extensions.new(StringIO.new, {})
199
- @ext.users = ["basicxman"]
200
- @ext.hops = ["basicxman"]
201
- @ext.call_command("basicxman", "addtimer", "cobblestone")
202
- @ext.call_command("basicxman", "addtimer", "arrow")
203
- @ext.server.string = ""
204
- @ext.call_command("basicxman", "stop")
185
+ ext :hops => ["basicxman"]
186
+ call "basicxman addtimer cobblestone"
187
+ call "basicxman addtimer arrow"
188
+ clear
189
+
190
+ call "basicxman stop"
205
191
  assert_nil @ext.timers["basicxman"]
206
- assert_match "stopped", @ext.server.string
192
+ assert_match "stopped", output
207
193
  end
208
194
 
209
195
  # Time commands.
210
196
  sandbox_test "should change time with time commands" do
211
- @ext = Minecraft::Extensions.new(StringIO.new, {})
212
- @ext.ops = ["basicxman"]
197
+ ext :ops => ["basicxman"]
213
198
  %w( morning evening night dawn dusk day ).each do |time|
214
- @ext.call_command("basicxman", time)
215
- assert_match "time set #{Minecraft::Data::TIME[time.to_sym]}", @ext.server.string
216
- @ext.server.string = ""
199
+ call "basicxman #{time}"
200
+ assert_match "time set #{Minecraft::Data::TIME[time.to_sym]}", output
201
+ clear
217
202
  end
218
203
  end
219
204
 
220
205
  # Half op privileges and !list.
221
206
  sandbox_test "should revoke and add half op privileges" do
222
- @ext = Minecraft::Extensions.new(StringIO.new, {})
223
- @ext.users = ["basicxman", "blizzard4U", "mike_n_7"]
224
- @ext.ops = ["basicxman"]
225
- @ext.call_command("basicxman", "hop", "blizzard4U")
226
- @ext.call_command("basicxman", "hop", "mike_n_7")
227
- @ext.call_command("basicxman", "dehop", "blizzard4U")
228
- @ext.call_command("basicxman", "list")
229
- assert_match "[@basicxman], blizzard4U, %mike_n_7", @ext.server.string.split("\n").last
207
+ ext :ops => ["basicxman"], :users => ["blizzard4U", "mike_n_7"]
208
+ call "basicxman hop blizzard4U"
209
+ call "basicxman hop mike_n_7"
210
+ call "basicxman dehop blizzard4U"
211
+ call "basicxman list"
212
+ assert_match "[@basicxman], blizzard4U, %mike_n_7", output_lines.last
230
213
  end
231
214
 
232
215
  # Help command.
233
216
  sandbox_test "should display help contents for regular users" do
234
- @ext = Minecraft::Extensions.new(StringIO.new, {})
235
- @ext.users = ["blizzard4U"]
236
- @ext.call_command("blizzard4U", "help")
237
- t = @ext.server.string.gsub("\n", "").gsub("say", "").gsub(" ", "")
217
+ ext :users => ["blizzard4U"]
218
+ call "blizzard4U help"
219
+ t = output_line.gsub("say", "")
238
220
  assert_match "rules", t
239
221
  assert_match "list", t
240
222
  refute_match "give", t
241
223
  end
242
224
 
243
225
  sandbox_test "should display help contents for half ops" do
244
- @ext = Minecraft::Extensions.new(StringIO.new, {})
245
- @ext.users = ["mike_n_7"]
246
- @ext.hops = ["mike_n_7"]
247
- @ext.call_command("mike_n_7", "help")
248
- t = @ext.server.string.gsub("\n", "").gsub("say", "").gsub(" ", "")
226
+ ext :hops => ["mike_n_7"]
227
+ call "mike_n_7 help"
228
+ t = output_line.gsub("say", "")
249
229
  assert_match "rules", t
250
230
  assert_match "give", t
251
231
  refute_match "morning", t
252
232
  end
253
233
 
254
234
  sandbox_test "should display help contents for ops" do
255
- @ext = Minecraft::Extensions.new(StringIO.new, {})
256
- @ext.users = ["basicxman"]
257
- @ext.ops = ["basicxman"]
258
- @ext.call_command("basicxman", "help")
259
- t = @ext.server.string.gsub("\n", "").gsub("say", "").gsub(" ", "")
235
+ ext :ops => ["basicxman"]
236
+ call "basicxman help"
237
+ t = output_line.gsub("say", "")
260
238
  assert_match "rules", t
261
239
  assert_match "give", t
262
240
  assert_match "morning", t
263
241
  end
264
242
 
265
243
  sandbox_test "should display help contents for a specific command" do
266
- @ext = Minecraft::Extensions.new(StringIO.new, {})
267
- @ext.users = ["basicxman"]
268
- @ext.call_command("basicxman", "help", "hop")
269
- assert_match "privileges to the target user", @ext.server.string.gsub("\n", "")
244
+ ext :users => ["basicxman"]
245
+ call "basicxman help hop"
246
+ assert_match "privileges to the target user", output_line
270
247
  end
271
248
 
272
249
  sandbox_test "should display command syntaxes" do
273
- @ext = Minecraft::Extensions.new(StringIO.new, {})
274
- @ext.ops = ["basicxman"]
250
+ ext :ops => ["basicxman"]
275
251
 
276
252
  # opt
277
- @ext.server.string = ""
278
- @ext.call_command("basicxman", "help", "warptime")
279
- t = @ext.server.string.split("\n")
280
- assert_equal "say !warptime", t[0]
281
- assert_equal "say !warptime 'time change'", t[1]
253
+ clear
254
+ call "basicxman help warptime"
255
+ assert_equal "say !warptime", output_lines[0]
256
+ assert_equal "say !warptime 'time change'", output_lines[1]
282
257
 
283
258
  # rest
284
- @ext.server.string = ""
285
- @ext.call_command("basicxman", "help", "welcome")
286
- t = @ext.server.string.split("\n")
287
- assert_equal "say !welcome 'arguments', '...'", t[0]
259
+ clear
260
+ call "basicxman help welcome"
261
+ assert_equal "say !welcome 'arguments', '...'", output_lines[0]
288
262
 
289
263
  # req, rest
290
- @ext.server.string = ""
291
- @ext.call_command("basicxman", "help", "memo")
292
- t = @ext.server.string.split("\n")
293
- assert_equal "say !memo 'target user', 'arguments', '...'", t[0]
264
+ clear
265
+ call "basicxman help memo"
266
+ assert_equal "say !memo 'target user', 'arguments', '...'", output_lines[0]
294
267
 
295
268
  # req
296
- @ext.server.string = ""
297
- @ext.call_command("basicxman", "help", "disturb")
298
- t = @ext.server.string.split("\n")
299
- assert_equal "say !disturb 'target user'", t[0]
269
+ clear
270
+ call "basicxman help disturb"
271
+ assert_equal "say !disturb 'target user'", output_lines[0]
300
272
 
301
273
  # req, opt
302
- @ext.server.string = ""
303
- @ext.call_command("basicxman", "help", "points")
304
- t = @ext.server.string.split("\n")
305
- assert_equal "say !points 'target user'", t[0]
306
- assert_equal "say !points 'target user', 'num points'", t[1]
274
+ clear
275
+ call "basicxman help points"
276
+ assert_equal "say !points 'target user'", output_lines[0]
277
+ assert_equal "say !points 'target user', 'num points'", output_lines[1]
307
278
  end
308
279
 
309
280
  # Do not disturb testing.
310
281
  sandbox_test "should not allow users in dnd to be teleported to" do
311
- @ext = Minecraft::Extensions.new(StringIO.new, {})
312
- @ext.users = ["basicxman", "mike_n_7"]
313
- @ext.hops = ["mike_n_7"]
314
- @ext.call_command("basicxman", "dnd")
282
+ ext :hops => ["mike_n_7"], :users => ["basicxman"]
283
+ call "basicxman dnd"
315
284
  assert_equal ["basicxman"], @ext.userdnd
316
- @ext.server.string = ""
317
- @ext.call_command("mike_n_7", "tp", "basicxman")
318
- assert_match "disturbed", @ext.server.string
319
- @ext.call_command("basicxman", "dnd")
285
+ clear
286
+ call "mike_n_7 tp basicxman"
287
+ assert_match "disturbed", output
288
+ call "basicxman dnd"
320
289
  assert_equal [], @ext.userdnd
321
290
  end
322
291
 
323
292
  sandbox_test "should allow ops to use the disturb command against users" do
324
- @ext = Minecraft::Extensions.new(StringIO.new, {})
325
- @ext.users = ["basicxman", "mike_n_7"]
326
- @ext.ops = ["basicxman"]
327
- @ext.call_command("mike_n_7", "dnd")
293
+ ext :ops => ["basicxman"], :users => ["mike_n_7"]
294
+ call "mike_n_7 dnd"
328
295
  assert_equal ["mike_n_7"], @ext.userdnd
329
- @ext.call_command("basicxman", "disturb", "mike_n_7")
296
+ call "basicxman disturb mike_n_7"
330
297
  assert_equal [], @ext.userdnd
331
298
  end
332
299
 
333
300
  # Disco.
334
301
  sandbox_test "should start the disco" do
335
- @ext = Minecraft::Extensions.new(StringIO.new, {})
336
- @ext.users = ["basicxman"]
337
- @ext.ops = ["basicxman"]
338
- @ext.call_command("basicxman", "disco")
339
- assert_match "disco", @ext.server.string
340
- @ext.server.string = ""
302
+ ext :ops => ["basicxman"]
303
+ call "basicxman disco"
304
+ assert_match "disco", output
305
+ clear
341
306
  12.times { @ext.periodic }
342
- assert_match "time set 0", @ext.server.string
343
- assert_match "time set 16000", @ext.server.string
307
+ assert_match "time set 0", output
308
+ assert_match "time set 16000", output
344
309
  end
345
310
 
346
311
  # Teleport all.
347
312
  sandbox_test "should teleport all users to an op" do
348
- @ext = Minecraft::Extensions.new(StringIO.new, {})
349
- @ext.users = ["basicxman", "mike_n_7", "blizzard4U", "Ian_zers"]
350
- @ext.ops = ["basicxman"]
351
- @ext.call_command("basicxman", "tpall")
352
- assert_match "mike_n_7", @ext.server.string
353
- assert_match "blizzard4U", @ext.server.string
354
- assert_match "Ian_zers", @ext.server.string
313
+ ext :ops => ["basicxman"], :users => ["mike_n_7", "blizzard4U", "Ian_zers"]
314
+ call "basicxman tpall"
315
+ assert_match "mike_n_7", output
316
+ assert_match "blizzard4U", output
317
+ assert_match "Ian_zers", output
355
318
  end
356
319
 
357
320
  # Welcome message runtime change test.
358
321
  sandbox_test "should change welcome message during runtime" do
359
- @ext = Minecraft::Extensions.new(StringIO.new, {})
360
- @ext.ops = ["basicxman"]
361
- @ext.call_command("basicxman", "welcome", "Foo bar.")
322
+ ext :ops => ["basicxman"]
323
+ call "basicxman welcome Foo bar."
362
324
  assert_equal "Foo bar.", @ext.welcome_message
363
325
 
364
- @ext.call_command("basicxman", "welcome", "+", "%")
326
+ call "basicxman welcome + %"
365
327
  assert_equal "Foo bar. %", @ext.welcome_message
366
- assert_match "basicxman", @ext.server.string
328
+ assert_match "basicxman", output
367
329
  end
368
330
 
369
331
  # Memos.
370
332
  sandbox_test "should allow users to set memos" do
371
- @ext = Minecraft::Extensions.new(StringIO.new, {})
372
- @ext.users = ["basicxman"]
373
- @ext.call_command("basicxman", "memo", "mike_n_7", "Hi")
333
+ ext :users => ["basicxman"]
334
+ call "basicxman memo mike_n_7 Hi"
374
335
  assert_equal ["basicxman", "Hi"], @ext.memos["mike_n_7"][0]
375
-
376
- #@ext.check_memos("mike_n_7")
377
- #assert_match "Hi", @ext.server.string
378
- #assert_equal 0, @ext.memos["mike_n_7"].length
379
336
  end
380
337
 
381
338
  sandbox_test "should add and print multiple memos" do
382
- @ext = Minecraft::Extensions.new(StringIO.new, {})
383
- @ext.users = ["basicxman"]
384
- 3.times { @ext.call_command("basicxman", "memo", "mike_n_7", "Hi") }
339
+ ext :users => ["basicxman"]
340
+ 3.times { call "basicxman memo mike_n_7 Hi" }
385
341
  assert_equal 3, @ext.memos["mike_n_7"].length
386
342
 
387
343
  @ext.check_memos("mike_n_7")
@@ -389,140 +345,154 @@ eof
389
345
  end
390
346
 
391
347
  sandbox_test "should only allow five memos per user" do
392
- @ext = Minecraft::Extensions.new(StringIO.new, {})
393
- @ext.users = ["basicxman"]
394
- 10.times { @ext.call_command("basicxman", "memo", "mike_n_7", "Hi") }
348
+ ext :users => ["basicxman"]
349
+ 10.times { call "basicxman memo mike_n_7 Hi" }
395
350
  assert_equal 5, @ext.memos["mike_n_7"].length
396
351
  end
397
352
 
398
353
  # Warping time.
399
354
  sandbox_test "should warp time" do
400
- @ext = Minecraft::Extensions.new(StringIO.new, {})
401
- @ext.ops = ["basicxman"]
402
- @ext.call_command("basicxman", "warptime", "100")
355
+ ext :ops => ["basicxman"]
356
+ call "basicxman warptime 100"
403
357
  40.times { @ext.periodic }
404
- assert_match "time add 100", @ext.server.string.gsub("\n", " ")
358
+ assert_match "time add 100", output_line
405
359
  end
406
360
 
407
361
  # Todo command tests.
408
362
  sandbox_test "should add, list and remove global todo items" do
409
- @ext = Minecraft::Extensions.new(StringIO.new, {})
410
- @ext.call_command("basicxman", "todo", "foo", "bar")
411
- @ext.call_command("basicxman", "todo", "bar")
412
- assert_match "Added", @ext.server.string
363
+ ext :users => ["basicxman"]
364
+ call "basicxman todo foo bar"
365
+ call "basicxman todo bar"
366
+ assert_match "Added", output
413
367
  assert_equal "foo bar", @ext.todo_items[0]
414
368
 
415
- @ext.call_command("basicxman", "todo")
416
- assert_match "1. foo bar", @ext.server.string.split("\n")[-2]
417
- assert_match "2. bar", @ext.server.string.split("\n")[-1]
369
+ call "basicxman todo"
370
+ assert_match "1. foo bar", output_lines[-2]
371
+ assert_match "2. bar", output_lines[-1]
418
372
 
419
- @ext.call_command("basicxman", "finished", "foo", "bar")
420
- @ext.call_command("basicxman", "finished", "1")
421
- assert_match "Hurray!", @ext.server.string
373
+ call "basicxman finished foo bar"
374
+ call "basicxman finished 1"
375
+ assert_match "Hurray!", output
422
376
  assert_equal 0, @ext.todo_items.length
423
377
 
424
- @ext.server.string = ""
425
- @ext.call_command("basicxman", "finished", "2")
426
- assert_match "not exist", @ext.server.string
427
- @ext.server.string = ""
428
- @ext.call_command("basicxman", "finished", "lolcats")
429
- assert_match "not exist", @ext.server.string
378
+ clear
379
+ call "basicxman finished 2"
380
+ assert_match "not exist", output
381
+ clear
382
+ call "basicxman finished lolcats"
383
+ assert_match "not exist", output
430
384
  end
431
385
 
432
386
  # Command history.
433
387
  sandbox_test "should keep track of command history and allow users to use previous commands" do
434
- @ext = Minecraft::Extensions.new(StringIO.new, {})
435
- @ext.ops = ["basicxman"]
388
+ ext :ops => ["basicxman"]
436
389
  @ext.command_history = {}
437
- @ext.call_command("basicxman", "dusk")
438
- @ext.call_command("basicxman", "dawn")
439
- @ext.server.string = ""
440
- @ext.call_command("basicxman", "last")
441
- @ext.call_command("basicxman", "last", "2")
390
+ call "basicxman dusk"
391
+ call "basicxman dawn"
392
+ clear
393
+ call "basicxman last"
394
+ call "basicxman last 2"
442
395
  @ext.info_command("2011-08-30 15:52:55 [INFO] <basicxman> !")
443
396
  @ext.info_command("2011-08-30 15:52:55 [INFO] <basicxman> !!")
444
- t = @ext.server.string.split("\n")
397
+ t = output_lines
445
398
  assert_match "time set 0", t[0]
446
399
  assert_match "time set 12000", t[1]
447
400
  assert_match "time set 0", t[2]
448
401
  assert_match "time set 12000", t[3]
449
402
 
450
- @ext.server.string = ""
451
- @ext.call_command("basicxman", "last", "3")
452
- assert_match "No command found", @ext.server.string
403
+ clear
404
+ call "basicxman last 3"
405
+ assert_match "No command found", output
453
406
  end
454
407
 
455
408
  sandbox_test "should print users command history" do
456
- @ext = Minecraft::Extensions.new(StringIO.new, {})
457
- @ext.ops = ["basicxman"]
458
- @ext.call_command("basicxman", "dawn")
459
- @ext.call_command("basicxman", "dusk")
460
- @ext.call_command("basicxman", "help", "list")
461
- @ext.call_command("basicxman", "give", "4", "64")
462
- @ext.server.string = ""
463
- @ext.call_command("basicxman", "history")
464
- t = @ext.server.string.split("\n")
409
+ ext :ops => ["basicxman"]
410
+ call "basicxman dawn"
411
+ call "basicxman dusk"
412
+ call "basicxman help list"
413
+ call "basicxman give 4 64"
414
+ clear
415
+ call "basicxman history"
416
+ t = output_lines
465
417
  assert_match "1. give 4 64", t[0]
466
418
  assert_match "2. help list", t[1]
467
419
  assert_match "3. dusk", t[2]
468
420
  end
469
421
 
470
422
  sandbox_test "should not add the same command to history twice in a row" do
471
- @ext = Minecraft::Extensions.new(StringIO.new, {})
472
- @ext.ops = ["basicxman"]
473
- @ext.call_command("basicxman", "day")
474
- @ext.call_command("basicxman", "day")
423
+ ext :ops => ["basicxman"]
424
+ call "basicxman day"
425
+ call "basicxman day"
475
426
  assert_equal [["day"]], @ext.command_history["basicxman"]
476
427
  end
477
428
 
478
429
  sandbox_test "should not add command history from shortucts" do
479
- @ext = Minecraft::Extensions.new(StringIO.new, {})
480
- @ext.call_command("basicxman", "s", "foo", "day")
481
- @ext.call_command("basicxman", "s", "foo")
430
+ ext :users => ["basicxan"]
431
+ call "basicxman s foo day"
432
+ call "basicxman s foo"
482
433
  assert_nil @ext.command_history["basicxman"]
483
434
  end
484
435
 
436
+ # Shortcuts
437
+ sandbox_test "should allow hops to specify and use shortcuts" do
438
+ ext :hops => ["basicxman"]
439
+ call "basicxman s ga give cobblestone"
440
+ call "basicxman s ga give arrow 2m" # Should override
441
+ call "basicxman s ka kit armour"
442
+ assert_match "labelled", output
443
+ assert_equal ["give", "arrow", "2m"], @ext.usershortcuts["basicxman"]["ga"]
444
+ clear
445
+
446
+ call "basicxman s ga"
447
+ assert_match "give basicxman 262 64", output_line
448
+ clear
449
+
450
+ call "basicxman shortcuts"
451
+ assert_match "ka", output_line
452
+ assert_match "ga", output_line
453
+ end
454
+
455
+ sandbox_test "should fall back on a kit or print an error message for shortcuts" do
456
+ ext :hops => ["basicxman"]
457
+ call "basicxman s diamond"
458
+ assert_match "give basicxman 278", output_line
459
+ clear
460
+
461
+ call "basicxman s foo"
462
+ assert_match "not a valid shortcut", output_line
463
+ end
464
+
465
+ # Kits
466
+ sandbox_test "should print available kits" do
467
+ ext :hops => ["basicxman"]
468
+ call "basicxman kitlist"
469
+ assert_match "diamond", output_line
470
+ clear
471
+
472
+ call "basicxman kit diamond"
473
+ assert_match "give basicxman 278", output_line
474
+ clear
475
+
476
+ call "basicxman kit doesnotexist"
477
+ assert_match "diamond", output_line
478
+ end
479
+
485
480
  # Remaining commands testing (should test to ensure no errors are thrown in
486
481
  # the command execution).
487
482
  sandbox_test "should run commands without failure" do
488
- @ext = Minecraft::Extensions.new(StringIO.new, {})
489
- @ext.users = ["basicxman", "mike_n_7", "blizzard4U", "Ian_zers"]
490
- @ext.ops = ["basicxman"]
491
- @ext.hops = ["mike_n_7"]
492
- @ext.call_command("basicxman", "dawn")
493
- @ext.call_command("basicxman", "dusk")
494
- @ext.call_command("basicxman", "day")
495
- @ext.call_command("basicxman", "night")
496
- @ext.call_command("basicxman", "morning")
497
- @ext.call_command("basicxman", "evening")
498
- @ext.call_command("basicxman", "disco")
499
- @ext.call_command("mike_n_7", "dnd")
500
- @ext.call_command("basicxman", "printdnd")
501
- @ext.call_command("basicxman", "disturb", "mike_n_7")
502
- @ext.call_command("basicxman", "roulette")
503
- @ext.call_command("basicxman", "hop", "Ian_zers")
504
- @ext.call_command("basicxman", "dehop", "Ian_zers")
505
- @ext.call_command("basicxman", "kit", "diamond")
506
- @ext.call_command("basicxman", "tp", "Ian_zers")
507
- @ext.call_command("basicxman", "tpall")
508
- @ext.call_command("basicxman", "nom")
509
- @ext.call_command("basicxman", "om", "nom", "nom")
510
- @ext.call_command("basicxman", "property", "spawn-monsters")
511
- @ext.call_command("basicxman", "property")
512
- @ext.call_command("basicxman", "uptime")
513
- @ext.call_command("basicxman", "uptime", "mike_n_7")
514
- @ext.call_command("basicxman", "rules")
515
- @ext.call_command("basicxman", "list")
516
- @ext.call_command("basicxman", "addtimer", "cobblestone")
517
- @ext.call_command("basicxman", "addtimer", "4", "60")
518
- @ext.call_command("basicxman", "deltimer", "4")
519
- @ext.call_command("basicxman", "printtimer")
520
- @ext.call_command("basicxman", "printtime")
521
- @ext.call_command("basicxman", "s", "foo", "give", "cobblestone")
522
- @ext.call_command("basicxman", "s", "foo")
523
- @ext.call_command("basicxman", "shortcuts")
524
- @ext.call_command("basicxman", "help")
525
- @ext.call_command("basicxman", "help", "give")
526
- @ext.call_command("basicxman", "kitlist")
483
+ ext :ops => ["basicxman"], :hops => ["mike_n_7"], :users => ["blizzard4U", "Ian_zers"]
484
+ call "basicxman printdnd"
485
+ call "basicxman roulette"
486
+ call "basicxman kit diamond"
487
+ call "basicxman tp Ian_zers"
488
+ call "basicxman tpall"
489
+ call "basicxman nom"
490
+ call "basicxman om nom nom"
491
+ call "basicxman property spawn-monsters"
492
+ call "basicxman property"
493
+ call "basicxman rules"
494
+ call "basicxman printtimer"
495
+ call "basicxman printtime"
496
+ call "basicxman kitlist"
527
497
  end
528
498
  end
@@ -4,7 +4,7 @@ require "minecraft"
4
4
  class ExtensionsTest < Test
5
5
  # Coloured line testing.
6
6
  sandbox_test "should colour server side lines properly" do
7
- @ext = Minecraft::Extensions.new(StringIO.new, {})
7
+ ext
8
8
  result = "\033[0;37m2011-08-21 13:45:13\033[0m [INFO] Starting minecraft server version Beta 1.7.3"
9
9
  assert_equal result, @ext.colour("2011-08-21 13:45:13 [INFO] Starting minecraft server version Beta 1.7.3")
10
10
 
@@ -23,90 +23,73 @@ class ExtensionsTest < Test
23
23
 
24
24
  # call_comamnd testing.
25
25
  sandbox_test "should call a command for a regular user" do
26
- @ext = Minecraft::Extensions.new(StringIO.new, {})
27
- @ext.users = ["basicxman"]
28
- @ext.call_command("basicxman", "list")
29
- assert_equal 0, @ext.server.string.index("say")
26
+ ext :users => ["basicxman"]
27
+ call "basicxman list"
28
+ assert_equal 0, output.index("say")
30
29
  end
31
30
 
32
31
  sandbox_test "should not call an all command for a regular user" do
33
- @ext = Minecraft::Extensions.new(StringIO.new, {})
34
- @ext.users = ["basicxman"]
35
- @ext.call_command("basicxman", "giveall", "cobblestone")
36
- assert_match "not a", @ext.server.string
32
+ ext :users => ["basicxman"]
33
+ call "basicxman giveall cobblestone"
34
+ assert_match "not a", output
37
35
  end
38
36
 
39
37
  sandbox_test "should not let regular users run privileged commands" do
40
- @ext = Minecraft::Extensions.new(StringIO.new, {})
41
- @ext.users = ["blizzard4U"]
42
- @ext.call_command("blizzard4U", "give", "cobblestone")
43
- assert_match "not a", @ext.server.string
38
+ ext :users => ["blizzard4U"]
39
+ call "blizzard4U give cobblestone"
40
+ assert_match "not a", output
44
41
  end
45
42
 
46
43
  sandbox_test "should not call an all command if not available" do
47
- @ext = Minecraft::Extensions.new(StringIO.new, {})
48
- @ext.users = ["basicxman", "blizzard4U", "mike_n_7"]
49
- @ext.ops = ["basicxman"]
50
- @ext.call_command("basicxman", "rouletteall")
51
- assert_equal 2, @ext.server.string.split("\n").length
44
+ ext :users => ["blizzard4U", "mike_n_7"], :ops => ["basicxman"]
45
+ call "basicxman rouletteall"
46
+ refute_match "basicxman is", output_line
52
47
  end
53
48
 
54
49
  sandbox_test "should let ops execute an all command" do
55
- @ext = Minecraft::Extensions.new(StringIO.new, {})
56
- @ext.users = ["basicxman", "blizzard4U", "mike_n_7"]
57
- @ext.ops = ["basicxman"]
58
- @ext.call_command("basicxman", "giveall", "cobblestone")
59
- assert_match "basicxman is", @ext.server.string
50
+ ext :users => ["blizzard4U", "mike_n_7"], :ops => ["basicxman"]
51
+ call "basicxman giveall cobblestone"
52
+ assert_match "basicxman is", output
60
53
  end
61
54
 
62
55
  sandbox_test "should not let hops or execute an all command" do
63
- @ext = Minecraft::Extensions.new(StringIO.new, {})
64
- @ext.users = ["basicxman", "blizzard4U", "mike_n_7"]
65
- @ext.hops = ["mike_n_7"]
66
- @ext.call_command("mike_n_7", "giveall", "cobblestone")
67
- assert_match "not a", @ext.server.string
56
+ ext :users => ["blizzard4U", "basicxman"], :hops => ["mike_n_7"]
57
+ call "mike_n_7 giveall cobblestone"
58
+ assert_match "not a", output
68
59
  end
69
60
 
70
61
  sandbox_test "should not let hops run op commands" do
71
- @ext = Minecraft::Extensions.new(StringIO.new, {})
72
- @ext.hops = ["mike_n_7"]
73
- @ext.call_command("mike_n_7", "morning")
74
- assert_match "not a", @ext.server.string
62
+ ext :hops => ["mike_n_7"]
63
+ call "mike_n_7 morning"
64
+ assert_match "not a", output
75
65
  end
76
66
 
77
67
  sandbox_test "should let ops run op privileged commands" do
78
- @ext = Minecraft::Extensions.new(StringIO.new, {})
79
- @ext.ops = ["basicxman"]
80
- @ext.call_command("basicxman", "morning")
81
- refute_match "not a", @ext.server.string
68
+ ext :ops => ["basicxman"]
69
+ call "basicxman morning"
70
+ refute_match "not a", output
82
71
  end
83
72
 
84
73
  sandbox_test "should remove excess arguments" do
85
- @ext = Minecraft::Extensions.new(StringIO.new, {})
86
- @ext.call_command("basicxman", "help", "foo", "bar")
87
- refute_empty @ext.server.string
74
+ ext :users => ["basicxman"]
75
+ call "basicxman help foo bar"
76
+ refute_empty output
88
77
 
89
- @ext.call_command("basicxman", "day", "foo")
90
- refute_empty @ext.server.string
78
+ call "basicxman day foo"
79
+ refute_empty output
91
80
  end
92
81
 
93
82
  # Command valiation testing.
94
83
  sandbox_test "should print an arguments error if not enough arguments are given" do
95
84
  ts, $stderr = $stderr, StringIO.new
96
- @ext = Minecraft::Extensions.new(StringIO.new, {})
97
- @ext.ops = ["basicxman"]
98
- @ext.call_command("basicxman", "give")
99
- assert_match "at least one argument", @ext.server.string
100
- @ext.server.string = ""
101
-
102
- @ext.call_command("basicxman", "kit")
103
- assert_match "Expected", @ext.server.string
104
- assert_match "group", @ext.server.string
105
- @ext.server.string = ""
106
-
107
- @ext.call_command("basicxman", "hop")
108
- assert_match "Expected", @ext.server.string
109
- assert_match "target user", @ext.server.string
85
+ ext :ops => ["basicxman"]
86
+ call "basicxman give"
87
+ assert_match "at least one argument", output
88
+ clear
89
+
90
+ call "basicxman hop"
91
+ assert_match "Expected", output
92
+ assert_match "target user", output
110
93
  $stderr = ts
111
94
  end
112
95
  end
@@ -10,7 +10,7 @@ require "turn"
10
10
 
11
11
  module Minecraft
12
12
  class Extensions
13
- attr_accessor :commands, :users, :ops, :hops, :counter, :server, :kickvotes, :last_kick_vote, :uptime, :timers, :shortcuts, :userlog, :userpoints, :vote_threshold, :userdnd, :welcome_message, :memos, :todo_items, :command_history
13
+ attr_accessor :commands, :users, :ops, :hops, :counter, :server, :userkickvotes, :last_kick_vote, :useruptime, :timers, :usershortcuts, :userlog, :userpoints, :vote_threshold, :userdnd, :welcome_message, :memos, :todo_items, :command_history
14
14
  end
15
15
  end
16
16
 
@@ -34,4 +34,32 @@ class Test < MiniTest::Unit::TestCase
34
34
  end
35
35
  define_method("test_#{name.gsub(/\W/, '_')}", p)
36
36
  end
37
+
38
+ def ext(opts = {})
39
+ @ext = Minecraft::Extensions.new(StringIO.new, {})
40
+ @ext.ops = opts[:ops] || []
41
+ @ext.hops = opts[:hops] || []
42
+ @ext.users = @ext.ops + @ext.hops + (opts[:users] || [])
43
+ @ext.users.uniq!
44
+ end
45
+
46
+ def call(string)
47
+ @ext.call_command(*string.split(" "))
48
+ end
49
+
50
+ def output
51
+ @ext.server.string
52
+ end
53
+
54
+ def output_lines
55
+ output.split("\n")
56
+ end
57
+
58
+ def output_line
59
+ output.gsub("\n", "")
60
+ end
61
+
62
+ def clear
63
+ @ext.server.string = ""
64
+ end
37
65
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: minecraft
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.2
5
+ version: 0.3.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Andrew Horsman
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-08-31 00:00:00 -04:00
13
+ date: 2011-09-03 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency