redisclient 0.1.2

Redis client for Rust
Documentation
use std::collections::HashSet;

use redisclient::hash_set;
use redisclient::RedisClient;

#[test]
pub fn set_sadd() {
    let mut client = RedisClient::new().unwrap();

    client.sadd("myset", hash_set!["Hello", "World", "World"]).unwrap();
    let members: HashSet<String> = client.smembers("myset").unwrap();
    assert_eq!(members, hash_set!("Hello".to_string(), "World".to_string()));

    client.flushall().unwrap();
}

#[test]
pub fn test_scard() {
    let mut client = RedisClient::new().unwrap();

    client.sadd("myset", hash_set!["Hello", "World"]).unwrap();
    let amount = client.scard("myset").unwrap();
    assert_eq!(amount, 2);

    client.flushall().unwrap();
}

#[test]
pub fn test_sdiff() {
    let mut client = RedisClient::new().unwrap();

    client.sadd("key1", hash_set!["a", "b", "c"]).unwrap();
    client.sadd("key2", hash_set!["c", "d", "e"]).unwrap();
    let diff: HashSet<String> = client.sdiff(vec!["key1", "key2"]).unwrap();
    assert_eq!(diff, hash_set!("a".to_string(), "b".to_string()));

    client.flushall().unwrap();
}

#[test]
pub fn test_sdiffstore() {
    let mut client = RedisClient::new().unwrap();

    client.sadd("key1", hash_set!["a", "b", "c"]).unwrap();
    client.sadd("key2", hash_set!["c", "d", "e"]).unwrap();
    client.sdiffstore("key", vec!["key1", "key2"]).unwrap();
    let elements: HashSet<String> = client.smembers("key").unwrap();

    assert_eq!(elements, hash_set!("a".to_string(), "b".to_string()));

    client.flushall().unwrap();
}

#[test]
pub fn sinter() {
    let mut client = RedisClient::new().unwrap();

    client.sadd("key1", hash_set!("a", "b", "c")).unwrap();
    client.sadd("key2", hash_set!("c", "d", "e")).unwrap();
    let members: HashSet<String> = client.sinter(vec!["key1", "key2"]).unwrap();

    assert_eq!(members, hash_set!("c".to_string()));

    client.flushall().unwrap();
}

#[test]
pub fn test_sinterstore() {
    let mut client = RedisClient::new().unwrap();

    client.sadd("key1", hash_set!("a", "b", "c")).unwrap();
    client.sadd("key2", hash_set!("c", "d", "e")).unwrap();

    let amount = client.sinterstore("key", vec!["key1", "key2"]).unwrap();
    assert_eq!(amount, 1);
    let elements: HashSet<String> = client.smembers("key").unwrap();
    assert_eq!(elements, hash_set!("c".to_string()));

    client.flushall().unwrap();
}

#[test]
pub fn test_sismember() {
    let mut client = RedisClient::new().unwrap();

    client.sadd("myset", hash_set!["one"]).unwrap();
    assert!(client.sismember("myset", "one".to_string()).unwrap());
    assert!(!client.sismember("myset", "two".to_string()).unwrap());

    client.flushall().unwrap();
}

#[test]
#[ignore]
pub fn test_smismember() {
    let mut client = RedisClient::new().unwrap();

    client.sadd("myset", hash_set!("one")).unwrap();
    assert_eq!(
        client
            .smismember("myset", hash_set!("one".to_string(), "notamember".to_string()))
            .unwrap(),
        vec![true, false]
    );

    client.flushall().unwrap();
}

#[test]
pub fn test_smove() {
    let mut client = RedisClient::new().unwrap();

    client.sadd("myset", hash_set!("one", "two")).unwrap();
    client.sadd("myotherset", hash_set!("three")).unwrap();

    client.smove("myset", "myotherset", "two").unwrap();

    let members: HashSet<String> = client.smembers("myset").unwrap();
    assert_eq!(members, hash_set!("one".to_string()));

    let members: HashSet<String> = client.smembers("myotherset").unwrap();
    assert_eq!(members, hash_set!("two".to_string(), "three".to_string()));

    client.flushall().unwrap();
}

#[test]
pub fn test_spop() {
    let mut client = RedisClient::new().unwrap();

    client.sadd("myset", hash_set!("one", "two", "three")).unwrap();
    let elements: HashSet<String> = client.spop("myset", Some(3)).unwrap();
    assert_eq!(
        elements,
        hash_set!("one".to_string(), "two".to_string(), "three".to_string())
    );

    client.flushall().unwrap();
}

#[test]
#[ignore]
pub fn test_srandmember() {
    let mut client = RedisClient::new().unwrap();
    client.flushall().unwrap();
}

#[test]
pub fn test_srem() {
    let mut client = RedisClient::new().unwrap();

    client.sadd("myset", hash_set!("one", "two", "three")).unwrap();
    assert_eq!(client.srem("myset", hash_set!("one")).unwrap(), 1);
    assert_eq!(client.srem("myset", hash_set!("four")).unwrap(), 0);

    let rest_members: HashSet<String> = client.smembers("myset").unwrap();
    assert_eq!(rest_members, hash_set!("two".to_string(), "three".to_string()));

    client.flushall().unwrap();
}

#[test]
pub fn test_sunion() {
    let mut client = RedisClient::new().unwrap();

    client.sadd("key1", hash_set!("a", "b")).unwrap();
    client.sadd("key2", hash_set!("c", "d", "e")).unwrap();

    let members: HashSet<String> = client.sunion(vec!["key1", "key2"]).unwrap();
    assert_eq!(
        members,
        hash_set!(
            "a".to_string(),
            "b".to_string(),
            "c".to_string(),
            "d".to_string(),
            "e".to_string()
        )
    );

    client.flushall().unwrap();
}

#[test]
pub fn test_sunionstore() {
    let mut client = RedisClient::new().unwrap();

    client.sadd("key1", hash_set!("a", "b", "c")).unwrap();
    client.sadd("key2", hash_set!("c", "d", "e")).unwrap();

    let amount = client.sunionstore("key", vec!["key1", "key2"]).unwrap();
    assert_eq!(amount, 5);
    let members: HashSet<String> = client.smembers("key").unwrap();
    assert_eq!(
        members,
        hash_set!(
            "a".to_string(),
            "b".to_string(),
            "c".to_string(),
            "d".to_string(),
            "e".to_string()
        )
    );

    client.flushall().unwrap();
}