surrealpatch/sdk/tests/idiom.rs
2024-09-16 20:14:41 +00:00

58 lines
1.1 KiB
Rust

mod helpers;
mod parse;
use helpers::Test;
use surrealdb::err::Error;
#[tokio::test]
async fn idiom_chain_part_optional() -> Result<(), Error> {
let sql = r#"
{}.prop.is_bool();
{}.prop?.is_bool();
"#;
Test::new(sql).await?.expect_val("false")?.expect_val("None")?;
Ok(())
}
#[tokio::test]
async fn idiom_index_expression() -> Result<(), Error> {
let sql = r#"
[1,2,3,4][1 + 1];
"#;
Test::new(sql).await?.expect_val("3")?;
Ok(())
}
#[tokio::test]
async fn idiom_index_call() -> Result<(), Error> {
let sql = r#"
DEFINE FUNCTION fn::foo() {
return 1 + 1;
};
RETURN [1,2,3,4][fn::foo()];
"#;
Test::new(sql).await?.expect_val("None")?.expect_val("3")?;
Ok(())
}
#[tokio::test]
async fn idiom_index_range() -> Result<(), Error> {
let sql = r#"
[1,2,3,4][1..2];
[1,2,3,4][1..=2];
[1,2,3,4][1>..=2];
[1,2,3,4][1>..];
[1,2,3,4][1..];
[1,2,3,4][..2];
[1,2,3,4][..=2];
"#;
Test::new(sql)
.await?
.expect_val("[2]")?
.expect_val("[2,3]")?
.expect_val("[3]")?
.expect_val("[3,4]")?
.expect_val("[2,3,4]")?
.expect_val("[1,2]")?
.expect_val("[1,2,3]")?;
Ok(())
}