2008-06-02 00:33:54 -04:00
|
|
|
USING: kernel tools.test accessors arrays sequences qualified
|
2008-06-03 18:53:27 -04:00
|
|
|
io.streams.string io.streams.duplex namespaces threads
|
2008-07-10 19:11:08 -04:00
|
|
|
calendar irc.client.private irc.client irc.messages.private
|
2008-07-26 14:32:16 -04:00
|
|
|
concurrency.mailboxes classes assocs combinators ;
|
2008-07-10 19:11:08 -04:00
|
|
|
EXCLUDE: irc.messages => join ;
|
|
|
|
RENAME: join irc.messages => join_
|
2008-06-01 19:58:53 -04:00
|
|
|
IN: irc.client.tests
|
|
|
|
|
2008-06-02 00:33:54 -04:00
|
|
|
! Utilities
|
|
|
|
: <test-stream> ( lines -- stream )
|
|
|
|
"\n" join <string-reader> <string-writer> <duplex-stream> ;
|
|
|
|
|
|
|
|
: make-client ( lines -- irc-client )
|
2008-07-26 14:32:16 -04:00
|
|
|
"someserver" irc-port "factorbot" f <irc-profile> <irc-client>
|
|
|
|
swap [ 2nip <test-stream> f ] curry >>connect ;
|
2008-06-02 00:33:54 -04:00
|
|
|
|
2008-06-03 18:53:27 -04:00
|
|
|
: set-nick ( irc-client nickname -- )
|
2008-07-26 14:32:16 -04:00
|
|
|
swap profile>> (>>nickname) ;
|
2008-06-03 18:53:27 -04:00
|
|
|
|
2008-07-26 14:32:16 -04:00
|
|
|
: with-dummy-client ( irc-client quot -- )
|
|
|
|
[ current-irc-client ] dip with-variable ; inline
|
2008-06-02 00:33:54 -04:00
|
|
|
|
2008-07-26 14:32:16 -04:00
|
|
|
{ "" } make-client dup "factorbot" set-nick [
|
2008-06-30 11:31:21 -04:00
|
|
|
{ t } [ irc> profile>> nickname>> me? ] unit-test
|
2008-06-02 00:33:54 -04:00
|
|
|
|
2008-06-30 11:31:21 -04:00
|
|
|
{ "factorbot" } [ irc> profile>> nickname>> ] unit-test
|
2008-06-02 00:33:54 -04:00
|
|
|
|
|
|
|
{ "someuser" } [ "someuser!n=user@some.where" parse-name ] unit-test
|
|
|
|
|
|
|
|
{ "#factortest" } [ ":someuser!n=user@some.where PRIVMSG #factortest :hi"
|
|
|
|
parse-irc-line irc-message-origin ] unit-test
|
2008-06-01 19:58:53 -04:00
|
|
|
|
2008-06-02 00:33:54 -04:00
|
|
|
{ "someuser" } [ ":someuser!n=user@some.where PRIVMSG factorbot :hi"
|
|
|
|
parse-irc-line irc-message-origin ] unit-test
|
2008-07-26 14:32:16 -04:00
|
|
|
] with-dummy-client
|
2008-06-01 19:58:53 -04:00
|
|
|
|
2008-06-03 18:53:27 -04:00
|
|
|
! Test login and nickname set
|
2008-07-26 14:32:16 -04:00
|
|
|
{ "factorbot" } [
|
|
|
|
{ "NOTICE AUTH :*** Looking up your hostname..."
|
|
|
|
"NOTICE AUTH :*** Checking ident"
|
|
|
|
"NOTICE AUTH :*** Found your hostname"
|
|
|
|
"NOTICE AUTH :*** No identd (auth) response"
|
|
|
|
":some.where 001 factorbot :Welcome factorbot"
|
|
|
|
} make-client
|
|
|
|
{ [ connect-irc ]
|
2008-07-28 23:52:42 -04:00
|
|
|
[ drop 0.1 seconds sleep ]
|
2008-07-26 14:32:16 -04:00
|
|
|
[ profile>> nickname>> ]
|
|
|
|
[ terminate-irc ]
|
|
|
|
} cleave ] unit-test
|
2008-06-03 18:53:27 -04:00
|
|
|
|
2008-06-27 16:47:25 -04:00
|
|
|
{ join_ "#factortest" } [
|
2008-07-26 14:32:16 -04:00
|
|
|
{ ":factorbot!n=factorbo@some.where JOIN :#factortest"
|
|
|
|
":ircserver.net MODE #factortest +ns"
|
|
|
|
":ircserver.net 353 factorbot @ #factortest :@factorbot "
|
|
|
|
":ircserver.net 366 factorbot #factortest :End of /NAMES list."
|
|
|
|
":ircserver.net 477 factorbot #factortest :[ircserver-info] blah blah"
|
|
|
|
} make-client
|
|
|
|
{ [ "factorbot" set-nick ]
|
|
|
|
[ connect-irc ]
|
2008-07-28 23:52:42 -04:00
|
|
|
[ drop 0.1 seconds sleep ]
|
|
|
|
[ join-messages>> 0.1 seconds mailbox-get-timeout ]
|
2008-07-26 14:32:16 -04:00
|
|
|
[ terminate-irc ]
|
|
|
|
} cleave
|
|
|
|
[ class ] [ trailing>> ] bi ] unit-test
|
2008-07-15 23:31:06 -04:00
|
|
|
|
|
|
|
{ +join+ "somebody" } [
|
2008-07-26 14:32:16 -04:00
|
|
|
{ ":somebody!n=somebody@some.where JOIN :#factortest" } make-client
|
|
|
|
{ [ "factorbot" set-nick ]
|
|
|
|
[ listeners>>
|
|
|
|
[ "#factortest" [ <irc-channel-listener> ] keep ] dip set-at ]
|
|
|
|
[ connect-irc ]
|
|
|
|
[ listeners>> [ "#factortest" ] dip at
|
|
|
|
[ read-message drop ] [ read-message drop ] [ read-message ] tri ]
|
|
|
|
[ terminate-irc ]
|
|
|
|
} cleave
|
|
|
|
[ action>> ] [ nick>> ] bi
|
|
|
|
] unit-test
|
2008-07-18 15:36:40 -04:00
|
|
|
|
|
|
|
{ privmsg "#factortest" "hello" } [
|
2008-07-26 14:32:16 -04:00
|
|
|
{ ":somebody!n=somebody@some.where PRIVMSG #factortest :hello" } make-client
|
|
|
|
{ [ "factorbot" set-nick ]
|
|
|
|
[ listeners>>
|
|
|
|
[ "#factortest" [ <irc-channel-listener> ] keep ] dip set-at ]
|
|
|
|
[ connect-irc ]
|
|
|
|
[ listeners>> [ "#factortest" ] dip at
|
|
|
|
[ read-message drop ] [ read-message ] bi ]
|
|
|
|
[ terminate-irc ]
|
|
|
|
} cleave
|
|
|
|
[ class ] [ name>> ] [ trailing>> ] tri
|
|
|
|
] unit-test
|
2008-07-18 15:36:40 -04:00
|
|
|
|
|
|
|
{ privmsg "factorbot" "hello" } [
|
2008-07-26 14:32:16 -04:00
|
|
|
{ ":somedude!n=user@isp.net PRIVMSG factorbot :hello" } make-client
|
|
|
|
{ [ "factorbot" set-nick ]
|
|
|
|
[ listeners>>
|
|
|
|
[ "somedude" [ <irc-nick-listener> ] keep ] dip set-at ]
|
|
|
|
[ connect-irc ]
|
|
|
|
[ listeners>> [ "somedude" ] dip at
|
|
|
|
[ read-message drop ] [ read-message ] bi ]
|
|
|
|
[ terminate-irc ]
|
|
|
|
} cleave
|
|
|
|
[ class ] [ name>> ] [ trailing>> ] tri
|
|
|
|
] unit-test
|
2008-07-28 23:48:25 -04:00
|
|
|
|
|
|
|
! Participants lists tests
|
2008-07-31 20:35:09 -04:00
|
|
|
{ H{ { "somedude" +normal+ } } } [
|
2008-07-28 23:48:25 -04:00
|
|
|
{ ":somedude!n=user@isp.net JOIN :#factortest" } make-client
|
|
|
|
{ [ "factorbot" set-nick ]
|
|
|
|
[ listeners>>
|
|
|
|
[ "#factortest" [ <irc-channel-listener> ] keep ] dip set-at ]
|
|
|
|
[ connect-irc ]
|
2008-07-28 23:52:42 -04:00
|
|
|
[ drop 0.1 seconds sleep ]
|
2008-07-28 23:48:25 -04:00
|
|
|
[ listeners>> [ "#factortest" ] dip at participants>> ]
|
|
|
|
[ terminate-irc ]
|
|
|
|
} cleave
|
|
|
|
] unit-test
|
|
|
|
|
2008-07-31 20:35:09 -04:00
|
|
|
{ H{ { "somedude2" +normal+ } } } [
|
2008-07-28 23:48:25 -04:00
|
|
|
{ ":somedude!n=user@isp.net PART #factortest" } make-client
|
|
|
|
{ [ "factorbot" set-nick ]
|
|
|
|
[ listeners>>
|
|
|
|
[ "#factortest" [ <irc-channel-listener>
|
2008-07-31 20:35:09 -04:00
|
|
|
H{ { "somedude2" +normal+ }
|
|
|
|
{ "somedude" +normal+ } } clone >>participants ] keep
|
2008-07-28 23:48:25 -04:00
|
|
|
] dip set-at ]
|
|
|
|
[ connect-irc ]
|
2008-07-28 23:52:42 -04:00
|
|
|
[ drop 0.1 seconds sleep ]
|
2008-07-28 23:48:25 -04:00
|
|
|
[ listeners>> [ "#factortest" ] dip at participants>> ]
|
|
|
|
[ terminate-irc ]
|
|
|
|
} cleave
|
|
|
|
] unit-test
|
|
|
|
|
2008-07-31 20:35:09 -04:00
|
|
|
{ H{ { "somedude2" +normal+ } } } [
|
2008-07-28 23:48:25 -04:00
|
|
|
{ ":somedude!n=user@isp.net QUIT" } make-client
|
|
|
|
{ [ "factorbot" set-nick ]
|
|
|
|
[ listeners>>
|
|
|
|
[ "#factortest" [ <irc-channel-listener>
|
2008-07-31 20:35:09 -04:00
|
|
|
H{ { "somedude2" +normal+ }
|
|
|
|
{ "somedude" +normal+ } } clone >>participants ] keep
|
2008-07-28 23:48:25 -04:00
|
|
|
] dip set-at ]
|
|
|
|
[ connect-irc ]
|
2008-07-28 23:52:42 -04:00
|
|
|
[ drop 0.1 seconds sleep ]
|
2008-07-28 23:48:25 -04:00
|
|
|
[ listeners>> [ "#factortest" ] dip at participants>> ]
|
|
|
|
[ terminate-irc ]
|
|
|
|
} cleave
|
|
|
|
] unit-test
|
|
|
|
|
2008-07-31 20:35:09 -04:00
|
|
|
{ H{ { "somedude2" +normal+ } } } [
|
2008-07-28 23:48:25 -04:00
|
|
|
{ ":somedude2!n=user2@isp.net KICK #factortest somedude" } make-client
|
|
|
|
{ [ "factorbot" set-nick ]
|
|
|
|
[ listeners>>
|
|
|
|
[ "#factortest" [ <irc-channel-listener>
|
2008-07-31 20:35:09 -04:00
|
|
|
H{ { "somedude2" +normal+ }
|
|
|
|
{ "somedude" +normal+ } } clone >>participants ] keep
|
2008-07-28 23:48:25 -04:00
|
|
|
] dip set-at ]
|
|
|
|
[ connect-irc ]
|
2008-07-28 23:52:42 -04:00
|
|
|
[ drop 0.1 seconds sleep ]
|
2008-07-28 23:48:25 -04:00
|
|
|
[ listeners>> [ "#factortest" ] dip at participants>> ]
|
|
|
|
[ terminate-irc ]
|
|
|
|
} cleave
|
|
|
|
] unit-test
|
2008-07-31 20:35:09 -04:00
|
|
|
|
|
|
|
! Namelist notification
|
|
|
|
{ T{ participant-changed f f f } } [
|
|
|
|
{ ":ircserver.net 353 factorbot @ #factortest :@factorbot "
|
|
|
|
":ircserver.net 366 factorbot #factortest :End of /NAMES list." } make-client
|
|
|
|
{ [ "factorbot" set-nick ]
|
|
|
|
[ listeners>>
|
|
|
|
[ "#factortest" [ <irc-channel-listener> ] keep ] dip set-at ]
|
|
|
|
[ connect-irc ]
|
|
|
|
[ drop 0.1 seconds sleep ]
|
|
|
|
[ listeners>> [ "#factortest" ] dip at [ read-message drop ] [ read-message ] bi ]
|
|
|
|
[ terminate-irc ]
|
|
|
|
} cleave
|
|
|
|
] unit-test
|