diff --git a/auto/generate_test_runner.rb b/auto/generate_test_runner.rb index 4cef607..15459af 100644 --- a/auto/generate_test_runner.rb +++ b/auto/generate_test_runner.rb @@ -31,7 +31,7 @@ class UnityTestRunnerGenerator def run(input_file, output_file, options=nil) tests = [] - includes = [] + testfile_includes = [] used_mocks = [] @options.merge!(options) unless options.nil? @@ -39,24 +39,24 @@ class UnityTestRunnerGenerator #pull required data from source file File.open(input_file, 'r') do |input| - tests = find_tests(input) - includes = find_includes(input) - used_mocks = find_mocks(includes) + tests = find_tests(input) + testfile_includes = find_includes(input) + used_mocks = find_mocks(testfile_includes) end #build runner file - generate(input_file, output_file, tests, includes, used_mocks) + generate(input_file, output_file, tests, used_mocks) #determine which files were used to return them all_files_used = [input_file, output_file] - all_files_used += includes.map {|filename| filename + '.c'} unless includes.empty? + all_files_used += testfile_includes.map {|filename| filename + '.c'} unless testfile_includes.empty? all_files_used += @options[:includes] unless @options[:includes].empty? return all_files_used.uniq end - def generate(input_file, output_file, tests, includes, used_mocks) + def generate(input_file, output_file, tests, used_mocks) File.open(output_file, 'w') do |output| - create_header(output, includes, used_mocks) + create_header(output, used_mocks) create_externs(output, tests, used_mocks) create_mock_management(output, used_mocks) create_suite_setup_and_teardown(output) @@ -127,13 +127,13 @@ class UnityTestRunnerGenerator return mock_headers end - def create_header(output, includes, mocks) + def create_header(output, mocks) output.puts('/* AUTOGENERATED FILE. DO NOT EDIT. */') create_runtest(output, mocks) output.puts("\n//=======Automagically Detected Files To Include=====") output.puts("#include \"#{@options[:framework].to_s}.h\"") output.puts('#include "cmock.h"') unless (mocks.empty?) - ((@options[:includes] + includes).flatten.uniq.compact).each do |inc| + @options[:includes].flatten.uniq.compact.each do |inc| output.puts("#include #{inc.include?('<') ? inc : "\"#{inc.gsub('.h','')}.h\""}") end output.puts('#include ') @@ -155,7 +155,7 @@ class UnityTestRunnerGenerator output.puts("extern void setUp(void);") output.puts("extern void tearDown(void);") tests.each do |test| - output.puts("extern void #{test[:test]}(#{test[:call]});") + output.puts("extern void #{test[:test]}(#{test[:call] || 'void'});") end output.puts('') end diff --git a/test/testunity.c b/test/testunity.c index 4e069c9..b3ce6e4 100644 --- a/test/testunity.c +++ b/test/testunity.c @@ -359,18 +359,37 @@ void testEqualInt16s(void) _US16 v0, v1; _US16 *p0, *p1; - v0 = 0x9876; - v1 = 0x9876; + v0 = 0x7876; + v1 = 0x7876; p0 = &v0; p1 = &v1; - TEST_ASSERT_EQUAL_INT16(0x9876, 0x9876); + TEST_ASSERT_EQUAL_INT16(0x7876, 0x7876); TEST_ASSERT_EQUAL_INT16(v0, v1); - TEST_ASSERT_EQUAL_INT16(0x9876, v1); - TEST_ASSERT_EQUAL_INT16(v0, 0x9876); + TEST_ASSERT_EQUAL_INT16(0x7876, v1); + TEST_ASSERT_EQUAL_INT16(v0, 0x7876); TEST_ASSERT_EQUAL_INT16(*p0, v1); TEST_ASSERT_EQUAL_INT16(*p0, *p1); - TEST_ASSERT_EQUAL_INT16(*p0, 0x9876); + TEST_ASSERT_EQUAL_INT16(*p0, 0x7876); +} + +void testEqualInt16sNegatives(void) +{ + _US16 v0, v1; + _US16 *p0, *p1; + + v0 = -7876; + v1 = -7876; + p0 = &v0; + p1 = &v1; + + TEST_ASSERT_EQUAL_INT16(-7876, -7876); + TEST_ASSERT_EQUAL_INT16(v0, v1); + TEST_ASSERT_EQUAL_INT16(-7876, v1); + TEST_ASSERT_EQUAL_INT16(v0, -7876); + TEST_ASSERT_EQUAL_INT16(*p0, v1); + TEST_ASSERT_EQUAL_INT16(*p0, *p1); + TEST_ASSERT_EQUAL_INT16(*p0, -7876); } void testEqualInt16sWhenThereAreDifferencesOutside16Bits(void)