master > master: code-rust - String-type macro

This commit is contained in:
RD 2022-04-10 15:42:19 +02:00
parent 5f5165dca8
commit 279677fb7c
5 changed files with 68 additions and 10 deletions

View 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() )* ]
};
}

View File

@ -1 +1,2 @@
pub mod assert;
pub mod convert;

View File

@ -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]

View File

@ -1 +1,2 @@
pub mod test_assert;
pub mod test_convert;

View 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);
}