Generated tests for trait impls
Nobody has claimed this yet.
- Dominant language
- Markdown
- Stars
- 6.6k
- Forks
- 1.7k
- Avg merge
- 16h 14m
- Merged PRs (30d)
- 1
Description
Issue by Kimundi
Monday Feb 04, 2013 at 12:53 GMT
For earlier discussion, see https://github.com/rust-lang/rust/issues/4782
This issue was labelled with: A-an-interesting-project, A-testsuite, A-traits, I-wishlist in the Rust repository
After an discussion about how for example 0 == -0, and how it interacts with traits, I had the thought it might be nice to have unit tests on traits that get generated for for each impl of it.
Example:
trait Bar {
static fn zero() -> Self;
fn neg(&self) -> Self;
}
#[test(trait)]
fn test_bar<T: Bar>() {
let x: T = Bar::zero();
let y = x.neg();
assert x == y;
}
in some other crate:
impl Bar for float {
static fn zero() -> float { 0.0 }
fn neg(&self) -> float { - *self }
}
Then a rustc --test for that crate would generate this function:
#[test]
fn test_bar_float() { test_bar::<float>() }
This would require trait test to somehow be made publicly callable from other crates for test compilation.
Alternative example, which might be easier to implement:
trait Bar {
static fn zero() -> Self;
fn neg(&self) -> Self;
#[test]
fn test_bar() {
let x: Self = zero();
let y = x.neg();
assert x == y;
}
}
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Begin with the earlier discussion in issue 4782 and the trait-test examples in this issue. A complete result would establish an agreed design and implement generated tests for each trait impl or trait-defined tests, including cross-crate test compilation; no source files or existing tests are identified here.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- compilers, testing
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100