fn parse()

in src/protocol/memcache/src/response/values.rs [188:230]


    fn parse() {
        // simple single value response
        let value_0 = Value::new(b"0", 0, None, b"1");
        assert_eq!(
            response(b"VALUE 0 0 1\r\n1\r\nEND\r\n"),
            Ok((
                &b""[..],
                Response::values(vec![value_0.clone()].into_boxed_slice()),
            ))
        );

        // binary data for the value
        let value_1 = Value::new(b"1", 1, None, b"\0");
        assert_eq!(
            response(b"VALUE 1 1 1\r\n\0\r\nEND\r\n"),
            Ok((
                &b""[..],
                Response::values(vec![value_1.clone()].into_boxed_slice()),
            ))
        );

        // two values in the same response
        assert_eq!(
            response(b"VALUE 0 0 1\r\n1\r\nVALUE 1 1 1\r\n\0\r\nEND\r\n"),
            Ok((
                &b""[..],
                Response::values(vec![value_0, value_1].into_boxed_slice()),
            ))
        );

        // a value with zero-length data and a cas value
        let value_2 = Value::new(b"2", 100, Some(42), b"");
        assert_eq!(
            response(b"VALUE 2 100 0 42\r\n\r\nEND\r\n"),
            Ok((&b""[..], Response::values(vec![value_2].into_boxed_slice()),))
        );

        // empty values response
        assert_eq!(
            response(b"END\r\n"),
            Ok((&b""[..], Response::values(vec![].into_boxed_slice()),))
        );
    }