Comments (3)
Right now you might do this:
#[test_case(2, 2 => 2 + 2)]
fn test(a: usize, b: usize) -> usize { a + b }
which is pretty nice, but it means we need have a way to distinguish between expression and pattern.
Two ideas:
- Breaking change: Let change
=>
token into->
token inside attribute macro for expressions and use=>
for patterns. - Use
match
keyword to indicate pattern
#[test_case(MyEnum::Foo('a', 5) => match MyEnum::Foo(_, 5))]
But this is ambiguous - you don't know if match
is a match expression or only pattern indication.
- Use
pat
orpattern
new keyword to indicate pattern
#[test_case(MyEnum::Foo('a', 5) => pattern MyEnum::Foo(_, 5))]
from test-case.
I have been working on parser combinators library and pattern matching was necessary.
So I created on my local branch solution:
#[test_case("abcd" => matches (Foo("a", "bc"), _) )]
#[test_case("abcd" => (Foo("a", "bc"), "d") )] // Simple assert_eq! comparison when no keyword used.
#[test_case("ab" => panics "[Bar]" )]
#[test_case("" => panics "[Baz, Bar(Bar)]" )]
fn test<'a, T: Debug>(input: &'a str) -> (T, &'a str) {
parse(input).unwrap()
}
This solution uses two new keywords: matches
for pattern matching and panics
for adding #[should_panic(expected = "[Bar]")
attribute.
It is backward compatible so I don't have to sed few thousands of tests, and it solves two issues at the same time.
from test-case.
Created v1.0.0-alpha-1 with this feature because it's really useful for me :)
from test-case.
Related Issues (20)
- Does not fully work with `pretty_assertions`, fix OK? HOT 2
- feature request: test_case generators HOT 1
- Getting current test case description from within the test function HOT 4
- Expose `TestCase` struct publicly for reuse HOT 1
- please include LICENSE file in all published crates HOT 2
- Set test case function `Ident` spans to corresponding `test_case` spans HOT 2
- Is return value in test required? HOT 8
- On nightlies and betas, `cargo +nightly clippy` creates `items_after_test_module` warnings HOT 9
- Type as test case argument HOT 9
- When generating assert the right side should be the "correct" side. HOT 19
- New clippy lint in Rust 1.71.0, `items_after_test_module`, affecting integration tests HOT 3
- upgrade dependency proc-macro2 HOT 1
- error[E0432]: unresolved import `test_case_macros::test_matrix` using 3.2.0 HOT 3
- Test case macro should not rely on implementation details of the built-in test framework HOT 3
- `syn::Result::ok` silently discards errors
- macro for bench cases HOT 1
- Conditional flags for ignore and inconclusive HOT 3
- Iterable args: a way to expand a given argument of `test_matrix`
- Example usage of test_matrix broken HOT 1
- Ignoring test cases
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from test-case.