op = nil
ac = Hash.new
m.message.split.each_with_index do |tok, i|
+ # ignore preceeding +/-
+ if op && arg.nil?
+ op = nil
+ end
tok.sub!(/[:,]$/, '') if i == 0
catch :me_if_you_can do
if m.channel.users[tok].nil?
- if (tok =~ /^(?:--)(.*[^-].*)$/) || (tok =~ /^(.*[^-].*)(?:--)$/)
+ if tok =~ /^(.*[^-].*)(?:--)$/
op, arg = '--', $1
next
- elsif (tok =~ /^(?:\+\+)(.*[^+].*)$/)||(tok =~ /^(.*[^+].*)(?:\+\+)$/)
+ elsif tok =~ /^(.*[^+].*)(?:\+\+)$/
op, arg = '++', $1
next
end
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
$:.unshift File.join(File.dirname(__FILE__), '..')
-
+#require 'rbot/logger'
+#Irc::Bot::LoggerManager.instance.set_level(5)
module Irc
class Bot
def initialize(message='', source='user')
@message = message
@sourcenick = source
- @channel = Irc::Channel.new('#test', '', [], server: nil)
+ @channel = Irc::Channel.new('#test', '', ['bob'], server: nil)
@replies = []
end
assert_not_nil(@plugin)
assert_not_empty(@plugin.help(nil))
+ m = MockMessage.new('', 'user')
+ @plugin.points(m, key: 'linux')
+ assert_equal('linux has zero points', m.replies.first)
+
m = MockMessage.new('linux++', 'user')
@plugin.message(m)
assert_equal('linux now has 1 points!', m.replies.first)
m = MockMessage.new('', 'linux')
@plugin.points(m, {})
assert_equal('points for linux: 2', m.replies.first)
+
+ m = MockMessage.new('alice++', 'user')
+ @plugin.message(m)
+ assert_equal('alice now has 1 points!', m.replies.first)
+
+ ignored = [
+ '++alice',
+ '--alice',
+ 'something something --github',
+ 'ls --sort time',
+ '-- foo',
+ '++ foo',
+ ]
+ ignored.each do |ignore|
+ m = MockMessage.new(ignore, 'user')
+ @plugin.message(m)
+ assert_empty(m.replies, "message should've been ignored: #{ignore.inspect}")
+ end
+
+ m = MockMessage.new('bob++', 'user')
+ @plugin.message(m)
+ assert_equal('bob now has 1 points!', m.replies.first)
+
+ m = MockMessage.new('bot++', 'user')
+ @plugin.message(m)
+ assert_include(MockBot.new.lang.strings['thanks'], m.replies.first)
end
end