From 4a7deb6580a9bf07e5876bd2d0a88513fb7f8fcd Mon Sep 17 00:00:00 2001 From: sinYa Iwasaki Date: Wed, 6 Mar 2024 12:11:56 +0900 Subject: [PATCH 1/2] rstest #41 --- .vscode/settings.json | 1 + Cargo.lock | 140 ++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 3 + src/block_pattern.rs | 73 +++++++--------------- 4 files changed, 165 insertions(+), 52 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index ab7e0d1..6b848b3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,6 +9,7 @@ "msvc", "Noto", "rngs", + "rstest", "rustflags", "rustfmt", "Tetris", diff --git a/Cargo.lock b/Cargo.lock index aab8260..f38d422 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1733,12 +1733,48 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + [[package]] name = "futures-core" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + [[package]] name = "futures-io" version = "0.3.30" @@ -1758,6 +1794,53 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.51", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + [[package]] name = "gethostname" version = "0.4.3" @@ -2352,6 +2435,7 @@ version = "0.1.0" dependencies = [ "bevy", "rand", + "rstest", ] [[package]] @@ -2753,6 +2837,12 @@ version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + [[package]] name = "piper" version = "0.2.1" @@ -2983,6 +3073,12 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +[[package]] +name = "relative-path" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e898588f33fdd5b9420719948f9f2a32c922a246964576f71ba7f24f80610fbc" + [[package]] name = "renderdoc-sys" version = "1.0.0" @@ -3011,12 +3107,50 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "rstest" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97eeab2f3c0a199bc4be135c36c924b6590b88c377d416494288c14f2db30199" +dependencies = [ + "futures", + "futures-timer", + "rstest_macros", + "rustc_version", +] + +[[package]] +name = "rstest_macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d428f8247852f894ee1be110b375111b586d4fa431f6c46e64ba5a0dcccbe605" +dependencies = [ + "cfg-if", + "glob", + "proc-macro2", + "quote", + "regex", + "relative-path", + "rustc_version", + "syn 2.0.51", + "unicode-ident", +] + [[package]] name = "rustc-hash" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + [[package]] name = "rustix" version = "0.38.31" @@ -3062,6 +3196,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "semver" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" + [[package]] name = "serde" version = "1.0.197" diff --git a/Cargo.toml b/Cargo.toml index 4e86dff..c3b9cb6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,3 +14,6 @@ opt-level = 3 [dependencies] bevy = { version = "0.13.0", features = ["dynamic_linking"] } rand = "0.8.5" + +[dev-dependencies] +rstest = "0.18.2" diff --git a/src/block_pattern.rs b/src/block_pattern.rs index cbb8fbe..b4fa401 100644 --- a/src/block_pattern.rs +++ b/src/block_pattern.rs @@ -83,57 +83,26 @@ impl BlockPatterns { #[cfg(test)] mod tests { use super::*; - - struct PatternTest { - pattern: fn() -> BlockPattern, - expected_color: Color, - expected_positions: Vec<(i32, i32)>, - } - - #[test] - fn test_block_patterns() { - let tests = vec![ - PatternTest { - pattern: BlockPattern::i, - expected_color: Color::rgb_u8(110, 237, 240), - expected_positions: vec![(0, 0), (0, -1), (0, 1), (0, 2)], - }, - PatternTest { - pattern: BlockPattern::l, - expected_color: Color::rgb_u8(230, 163, 58), - expected_positions: vec![(0, 0), (0, -1), (0, 1), (-1, 1)], - }, - PatternTest { - pattern: BlockPattern::j, - expected_color: Color::rgb_u8(0, 0, 232), - expected_positions: vec![(0, 0), (0, -1), (0, 1), (1, 1)], - }, - PatternTest { - pattern: BlockPattern::z, - expected_color: Color::rgb_u8(220, 48, 33), - expected_positions: vec![(0, 0), (0, -1), (1, 0), (1, 1)], - }, - PatternTest { - pattern: BlockPattern::s, - expected_color: Color::rgb_u8(110, 237, 72), - expected_positions: vec![(0, 0), (1, 0), (0, 1), (1, -1)], - }, - PatternTest { - pattern: BlockPattern::o, - expected_color: Color::rgb_u8(243, 241, 80), - expected_positions: vec![(0, 0), (0, 1), (1, 0), (1, 1)], - }, - PatternTest { - pattern: BlockPattern::t, - expected_color: Color::rgb_u8(148, 29, 230), - expected_positions: vec![(0, 0), (-1, 0), (1, 0), (0, 1)], - }, - ]; - - for test in tests { - let pattern = (test.pattern)(); - assert_eq!(pattern.color, test.expected_color); - assert_eq!(pattern.positions, test.expected_positions); - } + use rstest::rstest; + + #[rstest] + #[case::i(BlockPattern::i(), Color::rgb_u8(110, 237, 240), vec![(0, 0), (0, -1), (0, 1), (0, 2)])] + #[case::l(BlockPattern::l(), Color::rgb_u8(230, 163, 58), vec![(0, 0), (0, -1), (0, 1), (-1, 1)])] + #[case::j(BlockPattern::j(), Color::rgb_u8(0, 0, 232), vec![(0, 0), (0, -1), (0, 1), (1, 1)])] + #[case::z(BlockPattern::z(), Color::rgb_u8(220, 48, 33), vec![(0, 0), (0, -1), (1, 0), (1, 1)])] + #[case::s(BlockPattern::s(), Color::rgb_u8(110, 237, 72), vec![(0, 0), (1, 0), (0, 1), (1, -1)])] + #[case::o(BlockPattern::o(), Color::rgb_u8(243, 241, 80), vec![(0, 0), (0, 1), (1, 0), (1, 1)])] + #[case::t(BlockPattern::t(), Color::rgb_u8(148, 29, 230), vec![(0, 0), (-1, 0), (1, 0), (0, 1)])] + #[should_panic] + #[case::color_mismatch(BlockPattern::l(), Color::rgb_u8(110, 237, 240), vec![(0, 0), (0, -1), (0, 1), (-1, 1)])] + #[should_panic] + #[case::positions_mismatch(BlockPattern::l(), Color::rgb_u8(230, 163, 58), vec![(0, 0), (0, -1), (1, 1), (-1, 1)])] + fn test_block_patterns( + #[case] pattern: BlockPattern, + #[case] expected_color: Color, + #[case] expected_positions: Vec<(i32, i32)>, + ) { + assert_eq!(expected_color, pattern.color); + assert_eq!(expected_positions, pattern.positions) } } From 04e7f808ad67f269cbecc1d4620201e2db575d55 Mon Sep 17 00:00:00 2001 From: sinYa Iwasaki Date: Wed, 6 Mar 2024 12:42:14 +0900 Subject: [PATCH 2/2] #41 rstest --- src/block_pattern.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/block_pattern.rs b/src/block_pattern.rs index b4fa401..f2bb9a8 100644 --- a/src/block_pattern.rs +++ b/src/block_pattern.rs @@ -102,7 +102,7 @@ mod tests { #[case] expected_color: Color, #[case] expected_positions: Vec<(i32, i32)>, ) { - assert_eq!(expected_color, pattern.color); - assert_eq!(expected_positions, pattern.positions) + assert_eq!(pattern.color, expected_color); + assert_eq!(pattern.positions, expected_positions) } }