start_server default.conf {} {
    test {Handle an empty query well} {
        set fd [r channel]
        puts -nonewline $fd "\r\n"
        flush $fd
        r ping
    } {PONG}

    test {Negative multi bulk command does not create problems} {
        set fd [r channel]
        puts -nonewline $fd "*-10\r\n"
        flush $fd
        r ping
    } {PONG}

    test {Negative multi bulk payload} {
        set fd [r channel]
        puts -nonewline $fd "SET x -10\r\n"
        flush $fd
        gets $fd
    } {*invalid bulk*}

    test {Too big bulk payload} {
        set fd [r channel]
        puts -nonewline $fd "SET x 2000000000\r\n"
        flush $fd
        gets $fd
    } {*invalid bulk*count*}

    test {Multi bulk request not followed by bulk args} {
        set fd [r channel]
        puts -nonewline $fd "*1\r\nfoo\r\n"
        flush $fd
        gets $fd
    } {*protocol error*}

    test {Generic wrong number of args} {
        catch {r ping x y z} err
        set _ $err
    } {*wrong*arguments*ping*}
}