mirror of
https://github.com/ThrowTheSwitch/CMock.git
synced 2026-08-17 16:49:54 +00:00
Made the last two features actually cooperate.
This commit is contained in:
@@ -38,12 +38,12 @@ class CMockGeneratorPluginArray
|
||||
# Short macro params: paired ptrs (before OR after) omit _Depth (auto-filled from paired size arg)
|
||||
# string? args always need an explicit _Depth
|
||||
args_call_i = function[:args].map do |m|
|
||||
(m[:ptr?] && !m[:array_size_name]) || m[:string?] ? "#{m[:name]}, #{m[:name]}_Depth" : m[:name].to_s
|
||||
(m[:ptr?] || m[:string?]) && !m[:array_size_name] ? "#{m[:name]}, #{m[:name]}_Depth" : m[:name].to_s
|
||||
end.join(', ')
|
||||
|
||||
# Short macro call: paired ptrs pass paired size name as depth automatically
|
||||
args_call_o = function[:args].map do |m|
|
||||
if m[:ptr?] && m[:array_size_name]
|
||||
if (m[:ptr?] || m[:string?]) && m[:array_size_name]
|
||||
"#{m[:name]}, (#{m[:array_size_name]})"
|
||||
elsif m[:ptr?] || m[:string?]
|
||||
"#{m[:name]}, (#{m[:name]}_Depth)"
|
||||
@@ -99,7 +99,7 @@ class CMockGeneratorPluginArray
|
||||
# Call to CMockExpectParameters_: :before-paired ptrs pass only ptr name (their depth is set from paired size arg)
|
||||
# string? args always pass their depth explicitly
|
||||
call_string = function[:args].map do |m|
|
||||
(m[:ptr?] && m[:array_size_order] != :before) || m[:string?] ? "#{m[:name]}, #{m[:name]}_Depth" : m[:name]
|
||||
(m[:ptr?] || m[:string?]) && m[:array_size_order] != :before ? "#{m[:name]}, #{m[:name]}_Depth" : m[:name]
|
||||
end.join(', ')
|
||||
|
||||
lines << if function[:return][:void?]
|
||||
@@ -113,7 +113,7 @@ class CMockGeneratorPluginArray
|
||||
# Override depths for :before-paired pointers. CMockExpectParameters_ sets these from the paired
|
||||
# size arg; the explicit _Depth param here allows _ExpectWithArrayExtended to override that value.
|
||||
function[:args].each do |arg|
|
||||
lines << " cmock_call_instance->Expected_#{arg[:name]}_Depth = #{arg[:name]}_Depth;\n" if arg[:ptr?] && arg[:array_size_order] == :before
|
||||
lines << " cmock_call_instance->Expected_#{arg[:name]}_Depth = #{arg[:name]}_Depth;\n" if (arg[:ptr?] || arg[:string?]) && arg[:array_size_order] == :before
|
||||
end
|
||||
lines << " cmock_call_instance->ReturnVal = cmock_to_return;\n" unless function[:return][:void?]
|
||||
lines << "}\n\n"
|
||||
|
||||
@@ -105,7 +105,7 @@ class CMockGeneratorUtils
|
||||
if function[:args_string] != 'void'
|
||||
if @arrays
|
||||
args_string = function[:args].map do |m|
|
||||
if m[:ptr?] && m[:array_size_order] == :before
|
||||
if (m[:ptr?] || m[:string?]) && m[:array_size_order] == :before
|
||||
arg_declaration(m)
|
||||
elsif m[:ptr?] || m[:string?]
|
||||
"#{arg_declaration(m)}, int #{m[:name]}_Depth"
|
||||
@@ -114,7 +114,7 @@ class CMockGeneratorUtils
|
||||
end
|
||||
end.join(', ')
|
||||
body = function[:args].inject('') do |all, arg|
|
||||
depth = if arg[:ptr?] && arg[:array_size_order] == :before
|
||||
depth = if (arg[:ptr?] || arg[:string?]) && arg[:array_size_order] == :before
|
||||
arg[:array_size_name]
|
||||
elsif arg[:ptr?] || arg[:string?]
|
||||
"#{arg[:name]}_Depth"
|
||||
@@ -141,9 +141,9 @@ class CMockGeneratorUtils
|
||||
def code_call_argument_loader(function)
|
||||
if function[:args_string] != 'void'
|
||||
args = function[:args].map do |m|
|
||||
if @arrays && m[:ptr?] && m[:array_size_order] == :after
|
||||
if @arrays && (m[:ptr?] || m[:string?]) && m[:array_size_order] == :after
|
||||
"#{m[:name]}, #{m[:array_size_name]}"
|
||||
elsif @arrays && m[:ptr?] && m[:array_size_order] == :before
|
||||
elsif @arrays && (m[:ptr?] || m[:string?]) && m[:array_size_order] == :before
|
||||
m[:name]
|
||||
elsif @arrays && m[:ptr?]
|
||||
"#{m[:name]}, 1"
|
||||
|
||||
@@ -469,7 +469,7 @@ class CMockHeaderParser
|
||||
best_ptr_idx = nil
|
||||
|
||||
args.each_with_index do |ptr_arg, ptr_idx|
|
||||
next unless ptr_arg[:ptr?] && !ptr_arg[:array_data?]
|
||||
next unless (ptr_arg[:ptr?] || ptr_arg[:string?]) && !ptr_arg[:array_data?]
|
||||
|
||||
score = array_size_name_affinity(ptr_arg[:name], args[size_idx][:name])
|
||||
score += 2 if ptr_idx + 1 == size_idx
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
:code: |
|
||||
test()
|
||||
{
|
||||
process_command_ExpectWithArrayAndReturn("hello", 5, 5, 42);
|
||||
process_command_ExpectWithArrayAndReturn("hello", 5, 42);
|
||||
TEST_ASSERT_EQUAL(42, function_d());
|
||||
}
|
||||
|
||||
@@ -108,6 +108,6 @@
|
||||
:code: |
|
||||
test()
|
||||
{
|
||||
process_command_ExpectWithArrayAndReturn("world", 5, 5, 42);
|
||||
process_command_ExpectWithArrayAndReturn("world", 5, 42);
|
||||
TEST_ASSERT_EQUAL(42, function_e());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user