mirror of
https://github.com/salsa-rs/salsa.git
synced 2024-10-23 04:46:35 +00:00
wip
This commit is contained in:
parent
2213729c4e
commit
8f8528a205
3 changed files with 30 additions and 33 deletions
|
@ -51,9 +51,9 @@ impl crate::options::AllowedOptions for TrackedStruct {
|
|||
}
|
||||
|
||||
impl SalsaStructAllowedOptions for TrackedStruct {
|
||||
const KIND: &'static str = "interned";
|
||||
const KIND: &'static str = "tracked";
|
||||
|
||||
const ALLOW_ID: bool = false;
|
||||
const ALLOW_ID: bool = true;
|
||||
|
||||
const HAS_LIFETIME: bool = true;
|
||||
}
|
||||
|
|
|
@ -1,12 +1,8 @@
|
|||
//! Test an id field whose `PartialEq` impl is always true.
|
||||
|
||||
use salsa::{Database as Db, Setter};
|
||||
use test_log::test;
|
||||
|
||||
#[salsa::jar(db = Db)]
|
||||
struct Jar(MyInput, MyTracked<'_>, the_fn);
|
||||
|
||||
trait Db: salsa::DbWithJar<Jar> {}
|
||||
|
||||
#[salsa::input]
|
||||
struct MyInput {
|
||||
field: bool,
|
||||
|
@ -42,16 +38,15 @@ fn the_fn(db: &dyn Db, input: MyInput) {
|
|||
assert_eq!(tracked0.field(db).field, input.field(db));
|
||||
}
|
||||
|
||||
#[salsa::db(Jar)]
|
||||
#[salsa::db]
|
||||
#[derive(Default)]
|
||||
struct Database {
|
||||
storage: salsa::Storage<Self>,
|
||||
}
|
||||
|
||||
#[salsa::db]
|
||||
impl salsa::Database for Database {}
|
||||
|
||||
impl Db for Database {}
|
||||
|
||||
#[test]
|
||||
fn execute() {
|
||||
let mut db = Database::default();
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
//! Test that a setting a field on a `#[salsa::input]`
|
||||
//! overwrites and returns the old value.
|
||||
|
||||
use salsa::Database as _;
|
||||
use test_log::test;
|
||||
|
||||
#[salsa::db]
|
||||
|
@ -38,29 +39,30 @@ fn create_tracked_list<'db>(db: &'db dyn salsa::Database, input: MyInput) -> MyT
|
|||
|
||||
#[test]
|
||||
fn execute() {
|
||||
let mut db = Database::default();
|
||||
let input = MyInput::new(&mut db, "foo".to_string());
|
||||
let t0: MyTracked = create_tracked_list(&db, input);
|
||||
let t1 = create_tracked_list(&db, input);
|
||||
expect_test::expect![[r#"
|
||||
MyTracked {
|
||||
[salsa id]: 1,
|
||||
data: MyInput {
|
||||
[salsa id]: 0,
|
||||
field: "foo",
|
||||
},
|
||||
next: Next(
|
||||
MyTracked {
|
||||
Database::default().attach(|db| {
|
||||
let input = MyInput::new(db, "foo".to_string());
|
||||
let t0: MyTracked = create_tracked_list(db, input);
|
||||
let t1 = create_tracked_list(db, input);
|
||||
expect_test::expect![[r#"
|
||||
MyTracked {
|
||||
[salsa id]: 1,
|
||||
data: MyInput {
|
||||
[salsa id]: 0,
|
||||
data: MyInput {
|
||||
[salsa id]: 0,
|
||||
field: "foo",
|
||||
},
|
||||
next: None,
|
||||
field: "foo",
|
||||
},
|
||||
),
|
||||
}
|
||||
"#]]
|
||||
.assert_debug_eq(&t0);
|
||||
assert_eq!(t0, t1);
|
||||
next: Next(
|
||||
MyTracked {
|
||||
[salsa id]: 0,
|
||||
data: MyInput {
|
||||
[salsa id]: 0,
|
||||
field: "foo",
|
||||
},
|
||||
next: None,
|
||||
},
|
||||
),
|
||||
}
|
||||
"#]]
|
||||
.assert_debug_eq(&t0);
|
||||
assert_eq!(t0, t1);
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue