You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
223 lines
8.0 KiB
223 lines
8.0 KiB
# ==========================================
|
|
# 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
|
|
|