redisgraph 0.5.0

A Rust client for RedisGraph.
mod common;

use redisgraph::{RedisGraphResult};
use serial_test::serial;

use common::*;

#[test]
#[serial]
fn test_single() {
    with_graph(|graph| {
        let single: i64 = graph.query("RETURN 42").unwrap();
        assert_eq!(single, 42);
    });
}

#[test]
#[serial]
fn test_tuple() {
    with_graph(|graph| {
        let tuple: (i64, String, bool) = graph.query("RETURN 42, 'Hello, world!', true").unwrap();
        assert_eq!(tuple.0, 42);
        assert_eq!(tuple.1, "Hello, world!");
        assert_eq!(tuple.2, true);
    });
}

#[test]
#[serial]
fn test_vec() {
    with_graph(|graph| {
        graph.mutate("CREATE (n1 { prop: 1 }), (n2 { prop: 2 }), (n3 { prop: 3 })").unwrap();
        let vec: Vec<i64> = graph.query("MATCH (n) RETURN n.prop ORDER BY n.prop").unwrap();
        assert_eq!(vec[0], 1);
        assert_eq!(vec[1], 2);
        assert_eq!(vec[2], 3);
    });
}

#[test]
#[serial]
fn test_tuple_vec() {
    with_graph(|graph| {
        graph.mutate("CREATE (n1 { num: 1, word: 'foo' }), (n2 { num: 2, word: 'bar' }), (n3 { num: 3, word: 'baz' })").unwrap();
        let tuple_vec: Vec<(i64, String)> = graph.query("MATCH (n) RETURN n.num, n.word ORDER BY n.num").unwrap();
        assert_eq!(tuple_vec[0], (1, "foo".to_string()));
        assert_eq!(tuple_vec[1], (2, "bar".to_string()));
        assert_eq!(tuple_vec[2], (3, "baz".to_string()));
    });
}

#[test]
#[serial]
fn test_out_of_bounds() {
    with_graph(|graph| {
        let out_of_bounds_result: RedisGraphResult<(i64, String, bool)> = graph.query("RETURN 42, 'Hello, world!'");
        assert!(out_of_bounds_result.is_err());
    });
}