valkey-glide 0.9.0

Valkey GLIDE — native Rust client for Valkey and Redis OSS, built on glide-core.
Documentation
// Copyright Valkey GLIDE Project Contributors - SPDX Identifier: Apache-2.0
//! Mock-executor unit tests for the bitmap command family (command dispatch).
use super::Mock;
use crate::ValkeyValue;
use crate::commands::bitmap::{
    BitEncoding, BitFieldOffset, BitFieldSubcommand, BitmapCommands, BitmapIndexType,
};

#[tokio::test]
async fn bitpos_and_range() {
    let m = Mock::int(3);
    assert_eq!(m.bitpos("k", 1).await.unwrap(), 3);
    m.assert_args(&["BITPOS", "k", "1"]);

    let m = Mock::int(3);
    m.bitpos_range("k", 1, 0, 10, Some(BitmapIndexType::Bit))
        .await
        .unwrap();
    m.assert_args(&["BITPOS", "k", "1", "0", "10", "BIT"]);
}

#[tokio::test]
async fn bitfield_get_set_incrby() {
    let m = Mock::array(vec![ValkeyValue::Int(5)]);
    let r = m
        .bitfield(
            "k",
            &[BitFieldSubcommand::Get {
                encoding: BitEncoding::Unsigned(8),
                offset: BitFieldOffset::Bit(0),
            }],
        )
        .await
        .unwrap();
    m.assert_args(&["BITFIELD", "k", "GET", "u8", "0"]);
    assert_eq!(r, vec![Some(5)]);

    let m = Mock::array(vec![ValkeyValue::Int(0), ValkeyValue::Nil]);
    let r = m
        .bitfield(
            "k",
            &[
                BitFieldSubcommand::Set {
                    encoding: BitEncoding::Signed(5),
                    offset: BitFieldOffset::Multiplier(1),
                    value: 12,
                },
                BitFieldSubcommand::IncrBy {
                    encoding: BitEncoding::Unsigned(4),
                    offset: BitFieldOffset::Bit(2),
                    increment: 3,
                },
            ],
        )
        .await
        .unwrap();
    m.assert_args(&[
        "BITFIELD", "k", "SET", "i5", "#1", "12", "INCRBY", "u4", "2", "3",
    ]);
    assert_eq!(r, vec![Some(0), None]);
}

#[tokio::test]
async fn bitfield_readonly() {
    let m = Mock::array(vec![ValkeyValue::Int(7)]);
    m.bitfield_readonly(
        "k",
        &[BitFieldSubcommand::Get {
            encoding: BitEncoding::Unsigned(8),
            offset: BitFieldOffset::Bit(0),
        }],
    )
    .await
    .unwrap();
    m.assert_args(&["BITFIELD_RO", "k", "GET", "u8", "0"]);
}