diff options
| author | Dirk Van Haerenborgh <vhdirk@gmail.com> | 2018-12-23 22:01:24 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-12-23 22:01:24 +0100 |
| commit | 06f74ce6e292b0f3f09985ab77ed40c61611e092 (patch) | |
| tree | f2f7c0e23f29788ee51c8414d1c539f2b9fdac1e | |
| parent | abc1c7835a904332654d8adce4b8a13b7a939775 (diff) | |
| parent | 319d03f6d8b63a932c96c5a518a9c46030f60a98 (diff) | |
| download | mail-06f74ce6e292b0f3f09985ab77ed40c61611e092.tar.gz | |
Merge pull request #23 from rhn/type_recursr
Add a test preserving recursive travesability of Messages
| -rw-r--r-- | src/messages.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/messages.rs b/src/messages.rs index 01e0ea4..dc0f59e 100644 --- a/src/messages.rs +++ b/src/messages.rs @@ -104,3 +104,35 @@ impl<'o, O> MessagesExt<'o, O> for Messages<'o, O> where O: MessageOwner + 'o {} unsafe impl<'o, O> Send for Messages<'o, O> where O: MessageOwner + 'o {} unsafe impl<'o, O> Sync for Messages<'o, O> where O: MessageOwner + 'o {} + +#[cfg(test)] +mod tests { + // This will not compile if ownership can't be subject to recursion + fn descend<'o, O: 'o + super::MessageOwner, T: Iterator<Item=super::Message<'o, O>>>(iter: T) + -> usize { + iter.map(|msg| descend(msg.replies()) ).count() + } + + use query::Query; + use database; + + #[test] + #[should_panic] // until test data is filled in + fn recurse() -> () { + match database::Database::open( + &String::new(), + database::DatabaseMode::ReadOnly, + ) { + /* This will not happen without test data, but will force the compiler to compile + * the descend function. + */ + Ok(db) => { + let q = Query::create(db, &String::new()).unwrap(); + descend::<Query, super::Messages<Query>>(q.search_messages().unwrap()); + } + Err(err) => { + panic!("Got error while trying to open db: {:?}", err); + } + } + } +} |
