1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
require File.expand_path('../setup', __FILE__)
module TestLogging
class TestProxy < Test::Unit::TestCase
include LoggingTestCase
def setup
super
::Logging.init
@appender = Logging.appenders.string_io('test_appender')
logger = Logging.logger[Array]
logger.level = :debug
logger.appenders = @appender
end
def test_initialize
ary = []
proxy = Logging::Proxy.new ary
assert_instance_of Array, proxy
proxy.concat [1,2,3]
assert_equal 3, proxy.length
assert_equal [1,2,3], ary
end
def test_method_logging
proxy = Logging::Proxy.new []
assert_equal 0, proxy.length
assert_equal "Array#length()\n", @appender.readline
proxy.concat [1,2,3]
assert_equal "Array#concat(#{[1,2,3].inspect})\n", @appender.readline
proxy = Logging::Proxy.new Array
proxy.name
assert_equal "Array.name()\n", @appender.readline
proxy.new 0
assert_equal "Array.new(0)\n", @appender.readline
end
def test_custom_method_logging
proxy = Logging::Proxy.new([]) { |name, *args, &block|
@logger << "#@leader#{name}(#{args.inspect[1..-2]})"
rv = @object.__send__(name, *args, &block)
@logger << " => #{rv.inspect}\n"
rv
}
@appender.clear
assert_equal 0, proxy.length
assert_equal "Array#length() => 0\n", @appender.readline
proxy.concat [1,2,3]
assert_equal "Array#concat(#{[1,2,3].inspect}) => #{[1,2,3].inspect}\n", @appender.readline
proxy.concat [4,5,6]
assert_equal "Array#concat(#{[4,5,6].inspect}) => #{[1,2,3,4,5,6].inspect}\n", @appender.readline
end
def test_error_when_proxying_nil
assert_raises(ArgumentError, 'Cannot proxy nil') {
Logging::Proxy.new nil
}
end
end # TestProxy
end # TestLogging
|