• Kirill Smelkov's avatar
    encoder: Fix bool wrt protocol version · 6e6a8aa3
    Kirill Smelkov authored
    Starting from protocol 2 1-byte NEWTRUE/NEWFALSE opcodes are more
    efficient compared to 5-bytes e.g. "I01\n.".
    
    It is not only about efficiency, as protocol 4 _forbids_ use of variable
    length ASCII-only opcodes - whose data length is determined by doing
    forward scan for '\n'.
    
    Without encodeBool changes and only with the tests added it would fail
    this way:
    
        --- FAIL: TestEncode/True/proto=2 (0.00s)
            ogorek_test.go:383: encode:
                have: "\x80\x02I01\n."
                want: "\x80\x02\x88."
        --- FAIL: TestEncode/True/proto=3 (0.00s)
            ogorek_test.go:383: encode:
                have: "\x80\x03I01\n."
                want: "\x80\x03\x88."
        --- FAIL: TestEncode/True/proto=4 (0.00s)
            ogorek_test.go:383: encode:
                have: "\x80\x04I01\n."
                want: "\x80\x04\x88."
        --- FAIL: TestEncode/False/proto=2 (0.00s)
            ogorek_test.go:383: encode:
                have: "\x80\x02I00\n."
                want: "\x80\x02\x89."
        --- FAIL: TestEncode/False/proto=3 (0.00s)
            ogorek_test.go:383: encode:
                have: "\x80\x03I00\n."
                want: "\x80\x03\x89."
        --- FAIL: TestEncode/False/proto=4 (0.00s)
            ogorek_test.go:383: encode:
                have: "\x80\x04I00\n."
                want: "\x80\x04\x89."
    6e6a8aa3
encode.go 8.91 KB