master > master: code-rust - String-type macro
This commit is contained in:
parent
5f5165dca8
commit
279677fb7c
20
code/rust/src/rules/convert.rs
Normal file
20
code/rust/src/rules/convert.rs
Normal file
@ -0,0 +1,20 @@
|
||||
// ----------------------------------------------------------------
|
||||
// IMPORTS
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
//
|
||||
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Conversion macros - arrays
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
/// Allows simpler inline creation of vectors of Strings
|
||||
#[macro_export]
|
||||
macro_rules! vec_of_strings{
|
||||
() => {
|
||||
Vec::<String>::new()
|
||||
};
|
||||
($element:expr $(, $elements:expr )* $(,)?)=>{
|
||||
vec![ $element.to_string() $(, $elements.to_string() )* ]
|
||||
};
|
||||
}
|
@ -1 +1,2 @@
|
||||
pub mod assert;
|
||||
pub mod convert;
|
||||
|
@ -4,6 +4,7 @@
|
||||
|
||||
use rstest::fixture;
|
||||
use rstest::rstest;
|
||||
use std::panic::catch_unwind;
|
||||
|
||||
use ads2::graphs::graph;
|
||||
use ads2::*;
|
||||
@ -25,28 +26,21 @@ fn fixture_graph() -> graph::Graph<i32> {
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
#[test]
|
||||
fn test_graph_create_noerror() {
|
||||
let result = std::panic::catch_unwind(|| {
|
||||
fn test_graph_creation() {
|
||||
assert!(catch_unwind(|| {
|
||||
let gph = graph::Graph::new(
|
||||
vec![5, 7, 8],
|
||||
vec![(5,7), (7, 8)]
|
||||
);
|
||||
assert_length!(gph, 3);
|
||||
});
|
||||
assert!(result.is_ok());
|
||||
let result = std::panic::catch_unwind(|| {
|
||||
let gph = graph::Graph::new(
|
||||
vec!["5", "7", "8", "10"],
|
||||
vec![("5", "7"), ("7", "8")]
|
||||
);
|
||||
assert_length!(gph, 4);
|
||||
});
|
||||
assert!(result.is_ok());
|
||||
let result = std::panic::catch_unwind(|| {
|
||||
let gph = graph::Graph::<f64>::new(Vec::new(), Vec::new());
|
||||
assert_length!(gph, 0);
|
||||
});
|
||||
assert!(result.is_ok());
|
||||
}).is_ok());
|
||||
}
|
||||
|
||||
#[rstest]
|
||||
|
@ -1 +1,2 @@
|
||||
pub mod test_assert;
|
||||
pub mod test_convert;
|
||||
|
42
code/rust/tests/test_rules/test_convert.rs
Normal file
42
code/rust/tests/test_rules/test_convert.rs
Normal file
@ -0,0 +1,42 @@
|
||||
// ----------------------------------------------------------------
|
||||
// IMPORTS
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
use rstest::rstest;
|
||||
use std::panic::catch_unwind;
|
||||
|
||||
use ads2::assert_length;
|
||||
use ads2::vec_of_strings;
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
// Fixtures
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
// Test length
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
#[test]
|
||||
fn test_vec_of_strings_creation() {
|
||||
assert!(catch_unwind(|| {
|
||||
let _: Vec<String> = vec_of_strings![];
|
||||
let _: Vec<String> = vec_of_strings!["apple", "bear", "coal"];
|
||||
let _: Vec<String> = vec_of_strings!["apple", "bear", "coal",];
|
||||
}).is_ok());
|
||||
}
|
||||
|
||||
#[rstest]
|
||||
#[case(vec_of_strings![], Vec::<&str>::new(), 0)]
|
||||
#[case(vec_of_strings!["apple"], vec!["apple"], 1)]
|
||||
#[case(vec_of_strings!["apple", "bear"], vec!["apple", "bear"], 2)]
|
||||
#[case(vec_of_strings!["apple", -75.2], vec!["apple", "-75.2"], 2)]
|
||||
#[case(vec_of_strings!["apple", "bear", "coal"], vec!["apple", "bear", "coal"], 3)]
|
||||
#[case(vec_of_strings!["apple", "bear", "coal",], vec!["apple", "bear", "coal"], 3)]
|
||||
fn test_vec_of_strings_cases(
|
||||
#[case] list1: Vec<String>,
|
||||
#[case] list2: Vec<&str>,
|
||||
#[case] n: usize)
|
||||
{
|
||||
assert_length!(list1, n);
|
||||
assert_eq!(list1, list2);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user