Merge pull request #556 from erijo/test-range-exclusive-end

Add support for TEST_RANGE with exclusive end
This commit is contained in:
Mark VanderVoord
2022-11-12 20:46:33 -05:00
committed by GitHub
3 changed files with 32 additions and 5 deletions
+5 -4
View File
@@ -148,12 +148,13 @@ class UnityTestRunnerGenerator
end end
# RANGE # RANGE
args += type_and_args[i + 1].scan(/\[\s*(-?\d+.?\d*)\s*,\s*(-?\d+.?\d*)\s*,\s*(-?\d+.?\d*)\s*\]/m).map do |arg_values_str| args += type_and_args[i + 1].scan(/(\[|<)\s*(-?\d+.?\d*)\s*,\s*(-?\d+.?\d*)\s*,\s*(-?\d+.?\d*)\s*(\]|>)/m).map do |arg_values_str|
arg_values_str.map do |arg_value_str| exclude_end = arg_values_str[0] == '<' && arg_values_str[-1] == '>'
arg_values_str[1...-1].map do |arg_value_str|
arg_value_str.include?('.') ? arg_value_str.to_f : arg_value_str.to_i arg_value_str.include?('.') ? arg_value_str.to_f : arg_value_str.to_i
end end.push(exclude_end)
end.map do |arg_values| end.map do |arg_values|
(arg_values[0]..arg_values[1]).step(arg_values[2]).to_a Range.new(arg_values[0], arg_values[1], arg_values[3]).step(arg_values[2]).to_a
end.reduce(nil) do |result, arg_range_expanded| end.reduce(nil) do |result, arg_range_expanded|
result.nil? ? arg_range_expanded.map { |a| [a] } : result.product(arg_range_expanded) result.nil? ? arg_range_expanded.map { |a| [a] } : result.product(arg_range_expanded)
end.map do |arg_combinations| end.map do |arg_combinations|
+1 -1
View File
@@ -89,7 +89,7 @@ void verifyTest(void);
* - define UNITY_SUPPORT_TEST_CASES to include the TEST_CASE macro, though really it's mostly about the runner generator script * - define UNITY_SUPPORT_TEST_CASES to include the TEST_CASE macro, though really it's mostly about the runner generator script
* Parameterized Tests * Parameterized Tests
* - you'll want to create a define of TEST_CASE(...) which basically evaluates to nothing * - you'll want to create a define of TEST_CASE(...) and/or TEST_RANGE(...) which basically evaluates to nothing
* Tests with Arguments * Tests with Arguments
* - you'll want to define UNITY_USE_COMMAND_LINE_ARGS if you have the test runner passing arguments to Unity * - you'll want to define UNITY_USE_COMMAND_LINE_ARGS if you have the test runner passing arguments to Unity
+26
View File
@@ -173,6 +173,32 @@ void test_CharsArePreserved(unsigned index, char c)
NextExpectedCharIndex++; NextExpectedCharIndex++;
} }
TEST_RANGE([0, 10, 2])
void test_SingleRange(unsigned value)
{
TEST_ASSERT_EQUAL(0, value % 2);
TEST_ASSERT_LESS_OR_EQUAL(10, value);
}
TEST_RANGE([1, 2, 1], [2, 1, -1])
void test_TwoRanges(unsigned first, unsigned second)
{
TEST_ASSERT_LESS_OR_EQUAL(4, first * second);
}
TEST_RANGE(<0, 10, 2>)
void test_SingleExclusiveRange(unsigned value)
{
TEST_ASSERT_EQUAL(0, value % 2);
TEST_ASSERT_LESS_THAN(10, value);
}
TEST_RANGE([2, 4, 1], <1, 2, 1>)
void test_BothInclusiveAndExclusiveRange(unsigned first, unsigned second)
{
TEST_ASSERT_LESS_THAN(first, second);
}
TEST_CASE(0, TEST_CASE(0,
1) 1)