bbrowning-ponder 0.0.2.1

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.
@@ -0,0 +1,54 @@
1
+ require 'pathname'
2
+ $LOAD_PATH.unshift Pathname.new(__FILE__).dirname.expand_path
3
+ require 'test_helper'
4
+ require 'ponder/callback'
5
+
6
+ module Ponder
7
+ class Callback
8
+ attr_reader :event_type, :match, :proc
9
+ end
10
+ end
11
+
12
+ class TestCallback < Test::Unit::TestCase
13
+ def setup
14
+ @empty_proc = Proc.new { }
15
+ end
16
+
17
+ def test_perfect_case
18
+ callback = Ponder::Callback.new(:channel, /foo/, @empty_proc)
19
+
20
+ assert_equal(/foo/, callback.match)
21
+ assert_equal(@empty_proc, callback.proc)
22
+ end
23
+
24
+ def test_unsupported_event_type
25
+ assert_raise(TypeError) do
26
+ Ponder::Callback.new('fu', /foo/, @empty_proc)
27
+ end
28
+ end
29
+
30
+ def test_regexp
31
+ assert_raise(TypeError) do
32
+ Ponder::Callback.new(:channel, 8, @empty_proc)
33
+ end
34
+ end
35
+
36
+ def test_proc
37
+ assert_raise(TypeError) do
38
+ Ponder::Callback.new(:channel, /foo/, 8)
39
+ end
40
+ end
41
+
42
+ def test__trivial_proc
43
+ proc = Proc.new { 7 + 1 }
44
+
45
+ assert_equal(proc, Ponder::Callback.new(:channel, //, proc).proc)
46
+ end
47
+
48
+ def test_call
49
+ proc = Proc.new { 8 }
50
+
51
+ assert_equal(8, Ponder::Callback.new(:channel, /wizzard/, proc).call(:channel, {:message => 'I like wizzards'}))
52
+ assert_nil(Ponder::Callback.new(:channel, /wizzard/, proc).call(:channel, {:message => 'I am a wizard'}))
53
+ end
54
+ end
@@ -0,0 +1,3 @@
1
+ require 'test/unit'
2
+
3
+ $LOAD_PATH.unshift Pathname.new(__FILE__).dirname.join('..', 'lib').expand_path
@@ -0,0 +1,130 @@
1
+ require 'pathname'
2
+ $LOAD_PATH.unshift Pathname.new(__FILE__).dirname.expand_path
3
+ require 'test_helper'
4
+ require 'ponder/irc'
5
+ require 'ostruct'
6
+
7
+ include Ponder::IRC
8
+
9
+ module Ponder
10
+ module IRC
11
+ def raw(message)
12
+ $output << "#{message}\r\n"
13
+ return "#{message}\r\n"
14
+ end
15
+ end
16
+ end
17
+
18
+ class TestIRC < Test::Unit::TestCase
19
+ def setup
20
+ @config = ::OpenStruct.new({:nick => 'Ponder',
21
+ :username => 'Ponder',
22
+ :real_name => 'Ponder Stibbons',
23
+ :password => 'secret',
24
+ :reconnect => true
25
+ })
26
+ $output = []
27
+ end
28
+
29
+ def test_message
30
+ assert_equal("PRIVMSG recipient :foo bar baz\r\n", Ponder::IRC.message('recipient', 'foo bar baz')) # `message` is already defined, so we need to use Ponder::IRC
31
+ end
32
+
33
+ def test_register
34
+ register
35
+
36
+ assert_equal(["NICK Ponder\r\n", "USER Ponder * * :Ponder Stibbons\r\n", "PASS secret\r\n"], $output)
37
+ end
38
+
39
+ def test_register_without_password
40
+ @config.password = nil
41
+ register
42
+
43
+ assert_equal(["NICK Ponder\r\n", "USER Ponder * * :Ponder Stibbons\r\n"], $output)
44
+ end
45
+
46
+ def test_notice
47
+ assert_equal("NOTICE Ponder :You are cool!\r\n", notice('Ponder', 'You are cool!'))
48
+ end
49
+
50
+ def test_mode
51
+ assert_equal("MODE Ponder +ao\r\n", mode('Ponder', '+ao'))
52
+ end
53
+
54
+ def test_kick
55
+ assert_equal("KICK #channel Nanny_Ogg\r\n", kick('#channel', 'Nanny_Ogg'))
56
+ end
57
+
58
+ def test_kick_with_reason
59
+ assert_equal("KICK #channel Nanny_Ogg :Go away!\r\n", kick('#channel', 'Nanny_Ogg', 'Go away!'))
60
+ end
61
+
62
+ def test_action
63
+ assert_equal("PRIVMSG #channel :\001ACTION HEX is working!\001\r\n", action('#channel', 'HEX is working!'))
64
+ end
65
+
66
+ def test_topic
67
+ assert_equal("TOPIC #channel :I like dried frog pills.\r\n", topic('#channel', 'I like dried frog pills.'))
68
+ end
69
+
70
+ def test_join
71
+ assert_equal("JOIN #channel\r\n", join('#channel'))
72
+ end
73
+
74
+ def test_join_with_password
75
+ assert_equal("JOIN #channel secret\r\n", join('#channel', 'secret'))
76
+ end
77
+
78
+ def test_part
79
+ assert_equal("PART #channel\r\n", part('#channel'))
80
+ end
81
+
82
+ def test_part_with_message
83
+ assert_equal("PART #channel :Partpart\r\n", part('#channel', 'Partpart'))
84
+ end
85
+
86
+ def test_quit
87
+ quit
88
+
89
+ assert_equal(["QUIT\r\n"], $output)
90
+ end
91
+
92
+ def test_quit_with_message
93
+ quit('GONE')
94
+
95
+ assert_equal(["QUIT :GONE\r\n"], $output)
96
+ end
97
+
98
+ def test_quit_reconnect_change
99
+ assert_equal(true, @config.reconnect)
100
+
101
+ quit
102
+
103
+ assert_equal(false, @config.reconnect)
104
+ end
105
+
106
+ def test_rename
107
+ assert_equal("NICK :Ridcully\r\n", rename('Ridcully'))
108
+ end
109
+
110
+ def test_away
111
+ assert_equal("AWAY\r\n", away)
112
+ end
113
+
114
+ def test_away_with_message
115
+ assert_equal("AWAY :At the Mended Drum\r\n", away('At the Mended Drum'))
116
+ end
117
+
118
+ def test_back
119
+ assert_equal("AWAY\r\n", back)
120
+ end
121
+
122
+ def test_invite
123
+ assert_equal("INVITE TheLibrarian #mended_drum\r\n", invite('TheLibrarian', '#mended_drum'))
124
+ end
125
+
126
+ def test_ban
127
+ assert_equal("MODE #mended_drum +b foo!bar@baz\r\n", ban('#mended_drum', 'foo!bar@baz'))
128
+ end
129
+ end
130
+
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bbrowning-ponder
3
+ version: !ruby/object:Gem::Version
4
+ hash: 69
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 2
10
+ - 1
11
+ version: 0.0.2.1
12
+ platform: ruby
13
+ authors:
14
+ - "Tobias B\xC3\xBChlmann"
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2011-01-27 00:00:00 -05:00
20
+ default_executable:
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
23
+ name: eventmachine
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ hash: 59
31
+ segments:
32
+ - 0
33
+ - 12
34
+ - 10
35
+ version: 0.12.10
36
+ type: :runtime
37
+ version_requirements: *id001
38
+ description: Ponder (Stibbons) is a Domain Specific Language for writing IRC Bots using the EventMachine library.
39
+ email: tobias.buehlmann@gmx.de
40
+ executables: []
41
+
42
+ extensions: []
43
+
44
+ extra_rdoc_files: []
45
+
46
+ files:
47
+ - examples/echo.rb
48
+ - examples/github_blog.rb
49
+ - examples/redis_last_seen.rb
50
+ - lib/ponder/async_irc.rb
51
+ - lib/ponder/callback.rb
52
+ - lib/ponder/connection.rb
53
+ - lib/ponder/delegate.rb
54
+ - lib/ponder/filter.rb
55
+ - lib/ponder/formatting.rb
56
+ - lib/ponder/irc.rb
57
+ - lib/ponder/thaum.rb
58
+ - lib/ponder/version.rb
59
+ - lib/ponder/logger/blind_io.rb
60
+ - lib/ponder/logger/twoflogger.rb
61
+ - lib/ponder/logger/twoflogger18.rb
62
+ - lib/ponder.rb
63
+ - test/test_async_irc.rb
64
+ - test/test_callback.rb
65
+ - test/test_helper.rb
66
+ - test/test_irc.rb
67
+ - LICENSE
68
+ - ponder.gemspec
69
+ - README.md
70
+ has_rdoc: true
71
+ homepage: http://github.com/tbuehlmann/ponder
72
+ licenses: []
73
+
74
+ post_install_message:
75
+ rdoc_options: []
76
+
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ hash: 59
85
+ segments:
86
+ - 1
87
+ - 8
88
+ - 6
89
+ version: 1.8.6
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ hash: 3
96
+ segments:
97
+ - 0
98
+ version: "0"
99
+ requirements: []
100
+
101
+ rubyforge_project:
102
+ rubygems_version: 1.3.7
103
+ signing_key:
104
+ specification_version: 3
105
+ summary: IRC bot framework
106
+ test_files: []
107
+