ohmers 0.1.1

A library for retrieving and storing objects in a Redis server
extern crate ohmers;
extern crate redis;
extern crate rustc_serialize;

use std::collections::HashSet;
use std::iter::FromIterator;

use ohmers::{all, Ohmer};
use redis::Commands;
use rustc_serialize::Encodable;

#[derive(RustcEncodable, RustcDecodable, PartialEq, Eq, Debug, Hash)]
struct Car {
    id: usize,
    name: String,
}
impl Default for Car {
    fn default() -> Self {
        Car {
            id: 0,
            name: "".to_string(),
        }
    }
}
impl Ohmer for Car {
    fn id(&self) -> usize { self.id }
    fn set_id(&mut self, id: usize) { self.id = id; }
}

#[test]
fn test_iter_all() {
    let client = redis::Client::open("redis://127.0.0.1/").unwrap();

    let _:bool = client.del("Car:all").unwrap();

    assert_eq!(
            all::<Car>(&client).unwrap().collect::<HashSet<_>>().len(),
            0
            );

    let mut toyota = Car::default();
    toyota.name = "Toyota".to_string();
    toyota.save(&client).unwrap();

    let mut mercedes = Car::default();
    mercedes.name = "Mercedes".to_string();
    mercedes.save(&client).unwrap();

    assert_eq!(
            all::<Car>(&client).unwrap().collect::<HashSet<_>>(),
            HashSet::from_iter(vec![toyota, mercedes])
            );
}