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 assert;
|
||||||
|
pub mod convert;
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
use rstest::fixture;
|
use rstest::fixture;
|
||||||
use rstest::rstest;
|
use rstest::rstest;
|
||||||
|
use std::panic::catch_unwind;
|
||||||
|
|
||||||
use ads2::graphs::graph;
|
use ads2::graphs::graph;
|
||||||
use ads2::*;
|
use ads2::*;
|
||||||
@ -25,28 +26,21 @@ fn fixture_graph() -> graph::Graph<i32> {
|
|||||||
// ----------------------------------------------------------------
|
// ----------------------------------------------------------------
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_graph_create_noerror() {
|
fn test_graph_creation() {
|
||||||
let result = std::panic::catch_unwind(|| {
|
assert!(catch_unwind(|| {
|
||||||
let gph = graph::Graph::new(
|
let gph = graph::Graph::new(
|
||||||
vec![5, 7, 8],
|
vec![5, 7, 8],
|
||||||
vec![(5,7), (7, 8)]
|
vec![(5,7), (7, 8)]
|
||||||
);
|
);
|
||||||
assert_length!(gph, 3);
|
assert_length!(gph, 3);
|
||||||
});
|
|
||||||
assert!(result.is_ok());
|
|
||||||
let result = std::panic::catch_unwind(|| {
|
|
||||||
let gph = graph::Graph::new(
|
let gph = graph::Graph::new(
|
||||||
vec!["5", "7", "8", "10"],
|
vec!["5", "7", "8", "10"],
|
||||||
vec![("5", "7"), ("7", "8")]
|
vec![("5", "7"), ("7", "8")]
|
||||||
);
|
);
|
||||||
assert_length!(gph, 4);
|
assert_length!(gph, 4);
|
||||||
});
|
|
||||||
assert!(result.is_ok());
|
|
||||||
let result = std::panic::catch_unwind(|| {
|
|
||||||
let gph = graph::Graph::<f64>::new(Vec::new(), Vec::new());
|
let gph = graph::Graph::<f64>::new(Vec::new(), Vec::new());
|
||||||
assert_length!(gph, 0);
|
assert_length!(gph, 0);
|
||||||
});
|
}).is_ok());
|
||||||
assert!(result.is_ok());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rstest]
|
#[rstest]
|
||||||
|
@ -1 +1,2 @@
|
|||||||
pub mod test_assert;
|
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