summaryrefslogtreecommitdiff
path: root/FreeRTOS-Plus/Test/CMock/test/unit/cmock_unityhelper_parser_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'FreeRTOS-Plus/Test/CMock/test/unit/cmock_unityhelper_parser_test.rb')
-rw-r--r--FreeRTOS-Plus/Test/CMock/test/unit/cmock_unityhelper_parser_test.rb223
1 files changed, 223 insertions, 0 deletions
diff --git a/FreeRTOS-Plus/Test/CMock/test/unit/cmock_unityhelper_parser_test.rb b/FreeRTOS-Plus/Test/CMock/test/unit/cmock_unityhelper_parser_test.rb
new file mode 100644
index 000000000..987b0d697
--- /dev/null
+++ b/FreeRTOS-Plus/Test/CMock/test/unit/cmock_unityhelper_parser_test.rb
@@ -0,0 +1,223 @@
+# ==========================================
+# CMock Project - Automatic Mock Generation for C
+# Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
+# [Released under MIT License. Please refer to license.txt for details]
+# ==========================================
+
+require File.expand_path(File.dirname(__FILE__)) + "/../test_helper"
+require File.expand_path(File.dirname(__FILE__)) + '/../../lib/cmock_unityhelper_parser'
+
+describe CMockUnityHelperParser, "Verify CMockUnityHelperParser Module" do
+
+ before do
+ create_mocks :config
+ end
+
+ after do
+ end
+
+ it "ignore lines that are commented out" do
+ source =
+ " abcd;\n" +
+ "// #define UNITY_TEST_ASSERT_EQUAL_CHICKENS(a,b,line,msg) {...};\n" +
+ "or maybe // #define UNITY_TEST_ASSERT_EQUAL_CHICKENS(a,b,line,msg) {...};\n\n"
+ @config.expect :plugins, [] #not :array
+ @config.expect :treat_as, {}
+ @config.expect :load_unity_helper, source
+ @parser = CMockUnityHelperParser.new(@config)
+ expected = {}
+
+ assert_equal(expected, @parser.c_types)
+ end
+
+ it "ignore stuff in block comments" do
+ source =
+ " abcd; /*\n" +
+ "#define UNITY_TEST_ASSERT_EQUAL_CHICKENS(a,b,line,msg) {...};\n" +
+ "#define UNITY_TEST_ASSERT_EQUAL_CHICKENS(a,b,line,msg) {...};\n */\n"
+ @config.expect :plugins, [] #not :array
+ @config.expect :treat_as, {}
+ @config.expect :load_unity_helper, source
+ @parser = CMockUnityHelperParser.new(@config)
+ expected = {}
+
+ assert_equal(expected, @parser.c_types)
+ end
+
+ it "notice equal helpers in the proper form and ignore others" do
+ source =
+ "abcd;\n" +
+ "#define UNITY_TEST_ASSERT_EQUAL_TURKEYS_T(a,b,line,msg) {...};\n" +
+ "abcd;\n" +
+ "#define UNITY_TEST_ASSERT_EQUAL_WRONG_NUM_ARGS(a,b,c,d,e) {...};\n" +
+ "#define UNITY_TEST_ASSERT_WRONG_NAME_EQUAL(a,b,c,d) {...};\n" +
+ "#define UNITY_TEST_ASSERT_EQUAL_unsigned_funky_rabbits(a,b,c,d) {...};\n" +
+ "abcd;\n"
+ @config.expect :plugins, [] #not :array
+ @config.expect :treat_as, {}
+ @config.expect :load_unity_helper, source
+ @parser = CMockUnityHelperParser.new(@config)
+ expected = {
+ 'TURKEYS_T' => "UNITY_TEST_ASSERT_EQUAL_TURKEYS_T",
+ 'unsigned_funky_rabbits' => "UNITY_TEST_ASSERT_EQUAL_unsigned_funky_rabbits"
+ }
+
+ assert_equal(expected, @parser.c_types)
+ end
+
+ it "notice equal helpers that contain arrays" do
+ source =
+ "abcd;\n" +
+ "#define UNITY_TEST_ASSERT_EQUAL_TURKEYS_ARRAY(a,b,c,d,e) {...};\n" +
+ "abcd;\n" +
+ "#define UNITY_TEST_ASSERT_EQUAL_WRONG_NUM_ARGS_ARRAY(a,b,c,d,e,f) {...};\n" +
+ "#define UNITY_TEST_ASSERT_WRONG_NAME_EQUAL_ARRAY(a,b,c,d,e) {...};\n" +
+ "#define UNITY_TEST_ASSERT_EQUAL_unsigned_funky_rabbits_ARRAY(a,b,c,d,e) {...};\n" +
+ "abcd;\n"
+ @config.expect :plugins, [] #not :array
+ @config.expect :treat_as, {}
+ @config.expect :load_unity_helper, source
+ @parser = CMockUnityHelperParser.new(@config)
+ expected = {
+ 'TURKEYS*' => "UNITY_TEST_ASSERT_EQUAL_TURKEYS_ARRAY",
+ 'unsigned_funky_rabbits*' => "UNITY_TEST_ASSERT_EQUAL_unsigned_funky_rabbits_ARRAY"
+ }
+
+ assert_equal(expected, @parser.c_types)
+ end
+
+ it "pull in the standard set of helpers and add them to my list" do
+ pairs = {
+ "UINT" => "HEX32",
+ "unsigned long" => "HEX64",
+ }
+ expected = {
+ "UINT" => "UNITY_TEST_ASSERT_EQUAL_HEX32",
+ "unsigned_long" => "UNITY_TEST_ASSERT_EQUAL_HEX64",
+ "UINT*" => "UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY",
+ "unsigned_long*"=> "UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY",
+ }
+ @config.expect :plugins, [] #not :array
+ @config.expect :treat_as, pairs
+ @config.expect :load_unity_helper, nil
+ @parser = CMockUnityHelperParser.new(@config)
+
+ assert_equal(expected, @parser.c_types)
+ end
+
+ it "pull in the user specified set of helpers and add them to my list" do
+ pairs = {
+ "char*" => "STRING",
+ "unsigned int" => "HEX32",
+ }
+ expected = {
+ "char*" => "UNITY_TEST_ASSERT_EQUAL_STRING",
+ "unsigned_int" => "UNITY_TEST_ASSERT_EQUAL_HEX32",
+ "char**" => "UNITY_TEST_ASSERT_EQUAL_STRING_ARRAY",
+ "unsigned_int*" => "UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY",
+ }
+ @config.expect :plugins, [] #not :array
+ @config.expect :treat_as, pairs
+ @config.expect :load_unity_helper, nil
+ @parser = CMockUnityHelperParser.new(@config)
+
+ assert_equal(expected, @parser.c_types)
+ end
+
+ it "be able to fetch helpers on my list" do
+ @config.expect :plugins, [] #not :array
+ @config.expect :treat_as, {}
+ @config.expect :load_unity_helper, ""
+ @parser = CMockUnityHelperParser.new(@config)
+ @parser.c_types = {
+ 'UINT8' => "UNITY_TEST_ASSERT_EQUAL_UINT8",
+ 'UINT16*' => "UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY",
+ 'SPINACH' => "UNITY_TEST_ASSERT_EQUAL_SPINACH",
+ 'LONG_LONG' => "UNITY_TEST_ASSERT_EQUAL_LONG_LONG"
+ }
+
+ [["UINT8","UINT8"],
+ ["UINT16*","UINT16_ARRAY"],
+ ["const SPINACH","SPINACH"],
+ ["LONG LONG","LONG_LONG"] ].each do |ctype, exptype|
+ assert_equal(["UNITY_TEST_ASSERT_EQUAL_#{exptype}",''], @parser.get_helper(ctype))
+ end
+ end
+
+ it "return memory comparison when asked to fetch helper of types not on my list" do
+ @config.expect :plugins, [] #not :array
+ @config.expect :treat_as, {}
+ @config.expect :load_unity_helper, ""
+ @parser = CMockUnityHelperParser.new(@config)
+ @parser.c_types = {
+ 'UINT8' => "UNITY_TEST_ASSERT_EQUAL_UINT8",
+ 'UINT16*' => "UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY",
+ 'SPINACH' => "UNITY_TEST_ASSERT_EQUAL_SPINACH",
+ }
+
+ ["UINT32","SPINACH_T","SALAD","PINEAPPLE"].each do |ctype|
+ @config.expect :memcmp_if_unknown, true
+ assert_equal(["UNITY_TEST_ASSERT_EQUAL_MEMORY",'&'], @parser.get_helper(ctype))
+ end
+ end
+
+ it "return memory array comparison when asked to fetch helper of types not on my list" do
+ @config.expect :plugins, [:array]
+ @config.expect :treat_as, {}
+ @config.expect :load_unity_helper, ""
+ @parser = CMockUnityHelperParser.new(@config)
+ @parser.c_types = {
+ 'UINT8' => "UNITY_TEST_ASSERT_EQUAL_UINT8",
+ 'UINT16*' => "UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY",
+ 'SPINACH' => "UNITY_TEST_ASSERT_EQUAL_SPINACH",
+ }
+
+ ["UINT32*","SPINACH_T*"].each do |ctype|
+ @config.expect :memcmp_if_unknown, true
+ assert_equal(["UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY",''], @parser.get_helper(ctype))
+ end
+ end
+
+ it "return the array handler if we cannot find the normal handler" do
+ @config.expect :plugins, [] #not :array
+ @config.expect :treat_as, {}
+ @config.expect :load_unity_helper, ""
+ @parser = CMockUnityHelperParser.new(@config)
+ @parser.c_types = {
+ 'UINT8' => "UNITY_TEST_ASSERT_EQUAL_UINT8",
+ 'UINT16*' => "UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY",
+ 'SPINACH' => "UNITY_TEST_ASSERT_EQUAL_SPINACH",
+ }
+
+ assert_equal(["UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY",'&'], @parser.get_helper("UINT16"))
+ end
+
+ it "return the normal handler if we cannot find the array handler" do
+ @config.expect :plugins, [] #not :array
+ @config.expect :treat_as, {}
+ @config.expect :load_unity_helper, ""
+ @parser = CMockUnityHelperParser.new(@config)
+ @parser.c_types = {
+ 'UINT8' => "UNITY_TEST_ASSERT_EQUAL_UINT8",
+ 'UINT16' => "UNITY_TEST_ASSERT_EQUAL_UINT16",
+ 'SPINACH' => "UNITY_TEST_ASSERT_EQUAL_SPINACH",
+ }
+
+ assert_equal(["UNITY_TEST_ASSERT_EQUAL_UINT8",'*'], @parser.get_helper("UINT8*"))
+ end
+
+ it "raise error when asked to fetch helper of type not on my list and not allowed to mem check" do
+ @config.expect :plugins, [] #not :array
+ @config.expect :treat_as, {}
+ @config.expect :load_unity_helper, ""
+ @config.expect :memcmp_if_unknown, false
+ @parser = CMockUnityHelperParser.new(@config)
+ @parser.c_types = {
+ 'UINT8' => "UNITY_TEST_ASSERT_EQUAL_UINT8",
+ 'UINT32*' => "UNITY_TEST_ASSERT_EQUAL_UINT32_ARRAY",
+ 'SPINACH' => "UNITY_TEST_ASSERT_EQUAL_SPINACH",
+ }
+
+ assert_raises (RuntimeError) { @parser.get_helper("UINT16") }
+ end
+end