83 lines
2.7 KiB
Ruby
83 lines
2.7 KiB
Ruby
require 'helper'
|
|
require 'qmp_client'
|
|
|
|
module TestQMPClient
|
|
class TestModuleMethods < BaseTestCase
|
|
|
|
include QMPClient
|
|
|
|
def test_require_loads_main_constants
|
|
assert(defined?(::QMPClient), "QMPClient not defined")
|
|
assert(defined?(::QMPClient::API), "QMPClient::API not defined")
|
|
assert(defined?(::QMPClient::Connectors), "Connectors not defined")
|
|
assert(defined?(::QMPClient::Connectors::Socket), "Socket connector not defined")
|
|
assert(defined?(::QMPClient::Connectors::WriteProxy), "WriteProxy not defined")
|
|
assert(defined?(::QMPClient::Messages), "Messages module not defined")
|
|
assert(defined?(::QMPClient::Messages::Query), "Query message not defined")
|
|
assert(defined?(::QMPClient::Messages::Command), "Command message not defined")
|
|
assert(defined?(::QMPClient::Messages::Event), "Event message not defined")
|
|
assert(defined?(::QMPClient::Messages::Reply), "Greeting message not defined")
|
|
end
|
|
|
|
def expects_socket_run(rio, wio=nil)
|
|
rq, wq = [Queue.new, Queue.new]
|
|
Connectors::Socket.any_instance.expects(:run).with(rio, wio).
|
|
once.yields(rq, wq)
|
|
API.expects(:run).with(rq, wq).once.yields("(mock-api)")
|
|
end
|
|
|
|
def test_connect_tcp
|
|
cargs = ["127.0.0.1", 4440, "127.0.0.1", 40000]
|
|
mock_sock = mock("(tcp-socket)")
|
|
mock_sock.stubs(:closed? => false, :close => true)
|
|
TCPSocket.expects(:new).with(*cargs).once.returns(mock_sock)
|
|
expects_socket_run(mock_sock)
|
|
|
|
runs_api_block = false
|
|
QMPClient::connect_tcp(*cargs) do |api|
|
|
runs_api_block = true
|
|
end
|
|
|
|
assert(runs_api_block, "API not yielded by connect_tcp")
|
|
end
|
|
|
|
def test_connect_unix
|
|
mock_sock = mock("(unix-socket)")
|
|
mock_sock.stubs(:closed? => false, :close => true)
|
|
UNIXSocket.expects(:new).with("/tmp/test.sock").once.returns(mock_sock)
|
|
|
|
expects_socket_run(mock_sock)
|
|
|
|
runs_api_block = false
|
|
QMPClient::connect_unix("/tmp/test.sock") do |api|
|
|
runs_api_block = true
|
|
end
|
|
|
|
assert(runs_api_block, "API not yielded by connect_unix")
|
|
end
|
|
|
|
def test_connect_socket
|
|
rs, ws = [mock("(read-socket)"), mock("(write-socket)")]
|
|
expects_socket_run(rs, ws)
|
|
|
|
runs_api_block = false
|
|
QMPClient::connect_socket(rs, ws) do |api|
|
|
runs_api_block = true
|
|
end
|
|
|
|
assert(runs_api_block, "API not yielded by connect_socket")
|
|
|
|
# If we pass in just one socket, it's used for both read and write
|
|
rw = mock("(rw-socket)")
|
|
runs_api_block = false
|
|
expects_socket_run(rw)
|
|
|
|
QMPClient::connect_socket(rw) do
|
|
runs_api_block = true
|
|
end
|
|
assert(runs_api_block, "API not yielded by connect_socket with one sock")
|
|
end
|
|
|
|
end
|
|
end
|