|
|
|
@ -276,83 +276,83 @@ fn do_not_unify_underscore() {
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn imperative_script() {
|
|
|
|
|
let db = new_cozo_mem().unwrap();
|
|
|
|
|
let res = db
|
|
|
|
|
.run_script(
|
|
|
|
|
r#"
|
|
|
|
|
{:create _test {a}}
|
|
|
|
|
|
|
|
|
|
%loop
|
|
|
|
|
%if { len[count(x)] := *_test[x]; ?[x] := len[z], x = z >= 10 }
|
|
|
|
|
%then %return _test
|
|
|
|
|
%end
|
|
|
|
|
{ ?[a] := a = rand_uuid_v1(); :put _test {a} }
|
|
|
|
|
%debug _test
|
|
|
|
|
%end
|
|
|
|
|
"#,
|
|
|
|
|
Default::default(),
|
|
|
|
|
)
|
|
|
|
|
.unwrap();
|
|
|
|
|
assert_eq!(res.rows.len(), 10);
|
|
|
|
|
|
|
|
|
|
let res = db
|
|
|
|
|
.run_script(
|
|
|
|
|
r#"
|
|
|
|
|
{?[a] <- [[1], [2], [3]]
|
|
|
|
|
:replace _test {a}}
|
|
|
|
|
|
|
|
|
|
%loop
|
|
|
|
|
{ ?[a] := *_test[a]; :limit 1; :rm _test {a} }
|
|
|
|
|
%debug _test
|
|
|
|
|
|
|
|
|
|
%if_not _test
|
|
|
|
|
%then %break
|
|
|
|
|
%end
|
|
|
|
|
%end
|
|
|
|
|
|
|
|
|
|
%return _test
|
|
|
|
|
"#,
|
|
|
|
|
Default::default(),
|
|
|
|
|
)
|
|
|
|
|
.unwrap();
|
|
|
|
|
assert_eq!(res.rows.len(), 0);
|
|
|
|
|
|
|
|
|
|
let res = db.run_script(
|
|
|
|
|
r#"
|
|
|
|
|
{:create _test {a}}
|
|
|
|
|
|
|
|
|
|
%loop
|
|
|
|
|
{ ?[a] := a = rand_uuid_v1(); :put _test {a} }
|
|
|
|
|
|
|
|
|
|
%if { len[count(x)] := *_test[x]; ?[x] := len[z], x = z < 10 }
|
|
|
|
|
%continue
|
|
|
|
|
%end
|
|
|
|
|
|
|
|
|
|
%return _test
|
|
|
|
|
%debug _test
|
|
|
|
|
%end
|
|
|
|
|
"#,
|
|
|
|
|
Default::default(),
|
|
|
|
|
);
|
|
|
|
|
if let Err(err) = &res {
|
|
|
|
|
eprintln!("{err:?}");
|
|
|
|
|
}
|
|
|
|
|
assert_eq!(res.unwrap().rows.len(), 10);
|
|
|
|
|
|
|
|
|
|
let res = db
|
|
|
|
|
.run_script(
|
|
|
|
|
r#"
|
|
|
|
|
{?[a] <- [[1], [2], [3]]
|
|
|
|
|
:replace _test {a}}
|
|
|
|
|
{?[a] <- []
|
|
|
|
|
:replace _test2 {a}}
|
|
|
|
|
%swap _test _test2
|
|
|
|
|
%return _test
|
|
|
|
|
"#,
|
|
|
|
|
Default::default(),
|
|
|
|
|
)
|
|
|
|
|
.unwrap();
|
|
|
|
|
assert_eq!(res.rows.len(), 0);
|
|
|
|
|
// let db = new_cozo_mem().unwrap();
|
|
|
|
|
// let res = db
|
|
|
|
|
// .run_script(
|
|
|
|
|
// r#"
|
|
|
|
|
// {:create _test {a}}
|
|
|
|
|
//
|
|
|
|
|
// %loop
|
|
|
|
|
// %if { len[count(x)] := *_test[x]; ?[x] := len[z], x = z >= 10 }
|
|
|
|
|
// %then %return _test
|
|
|
|
|
// %end
|
|
|
|
|
// { ?[a] := a = rand_uuid_v1(); :put _test {a} }
|
|
|
|
|
// %debug _test
|
|
|
|
|
// %end
|
|
|
|
|
// "#,
|
|
|
|
|
// Default::default(),
|
|
|
|
|
// )
|
|
|
|
|
// .unwrap();
|
|
|
|
|
// assert_eq!(res.rows.len(), 10);
|
|
|
|
|
//
|
|
|
|
|
// let res = db
|
|
|
|
|
// .run_script(
|
|
|
|
|
// r#"
|
|
|
|
|
// {?[a] <- [[1], [2], [3]]
|
|
|
|
|
// :replace _test {a}}
|
|
|
|
|
//
|
|
|
|
|
// %loop
|
|
|
|
|
// { ?[a] := *_test[a]; :limit 1; :rm _test {a} }
|
|
|
|
|
// %debug _test
|
|
|
|
|
//
|
|
|
|
|
// %if_not _test
|
|
|
|
|
// %then %break
|
|
|
|
|
// %end
|
|
|
|
|
// %end
|
|
|
|
|
//
|
|
|
|
|
// %return _test
|
|
|
|
|
// "#,
|
|
|
|
|
// Default::default(),
|
|
|
|
|
// )
|
|
|
|
|
// .unwrap();
|
|
|
|
|
// assert_eq!(res.rows.len(), 0);
|
|
|
|
|
//
|
|
|
|
|
// let res = db.run_script(
|
|
|
|
|
// r#"
|
|
|
|
|
// {:create _test {a}}
|
|
|
|
|
//
|
|
|
|
|
// %loop
|
|
|
|
|
// { ?[a] := a = rand_uuid_v1(); :put _test {a} }
|
|
|
|
|
//
|
|
|
|
|
// %if { len[count(x)] := *_test[x]; ?[x] := len[z], x = z < 10 }
|
|
|
|
|
// %continue
|
|
|
|
|
// %end
|
|
|
|
|
//
|
|
|
|
|
// %return _test
|
|
|
|
|
// %debug _test
|
|
|
|
|
// %end
|
|
|
|
|
// "#,
|
|
|
|
|
// Default::default(),
|
|
|
|
|
// );
|
|
|
|
|
// if let Err(err) = &res {
|
|
|
|
|
// eprintln!("{err:?}");
|
|
|
|
|
// }
|
|
|
|
|
// assert_eq!(res.unwrap().rows.len(), 10);
|
|
|
|
|
//
|
|
|
|
|
// let res = db
|
|
|
|
|
// .run_script(
|
|
|
|
|
// r#"
|
|
|
|
|
// {?[a] <- [[1], [2], [3]]
|
|
|
|
|
// :replace _test {a}}
|
|
|
|
|
// {?[a] <- []
|
|
|
|
|
// :replace _test2 {a}}
|
|
|
|
|
// %swap _test _test2
|
|
|
|
|
// %return _test
|
|
|
|
|
// "#,
|
|
|
|
|
// Default::default(),
|
|
|
|
|
// )
|
|
|
|
|
// .unwrap();
|
|
|
|
|
// assert_eq!(res.rows.len(), 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|