1 # ==========================================
2 # CMock Project - Automatic Mock Generation for C
3 # Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
4 # [Released under MIT License. Please refer to license.txt for details]
5 # ==========================================
8 require File.expand_path(File.dirname(__FILE__)) + "/../test_helper"
9 require File.expand_path(File.dirname(__FILE__)) + '/../../lib/cmock_config'
12 describe CMockConfig, "Verify CMockConfig Module" do
14 it "use default settings when no parameters are specified" do
15 config = CMockConfig.new
16 assert_equal(CMockConfig::CMOCK_DEFAULT_OPTIONS[:mock_path], config.mock_path)
17 assert_nil(CMockConfig::CMOCK_DEFAULT_OPTIONS[:includes])
18 assert_nil(config.includes)
19 assert_equal(CMockConfig::CMOCK_DEFAULT_OPTIONS[:attributes], config.attributes)
20 assert_equal(CMockConfig::CMOCK_DEFAULT_OPTIONS[:plugins], config.plugins)
21 assert_equal(CMockConfig::CMOCK_DEFAULT_OPTIONS[:treat_externs], config.treat_externs)
22 assert_equal(CMockConfig::CMOCK_DEFAULT_OPTIONS[:treat_inlines], config.treat_inlines)
23 assert_equal(CMockConfig::CMOCK_DEFAULT_OPTIONS[:inline_function_patterns], config.inline_function_patterns)
26 it "replace only options specified in a hash" do
27 test_includes = ['hello']
28 test_attributes = ['blah', 'bleh']
29 config = CMockConfig.new(:includes => test_includes, :attributes => test_attributes)
30 assert_equal(CMockConfig::CMOCK_DEFAULT_OPTIONS[:mock_path], config.mock_path)
31 assert_equal(test_includes, config.includes)
32 assert_equal(test_attributes, config.attributes)
33 assert_equal(CMockConfig::CMOCK_DEFAULT_OPTIONS[:plugins], config.plugins)
34 assert_equal(CMockConfig::CMOCK_DEFAULT_OPTIONS[:treat_externs], config.treat_externs)
35 assert_equal(CMockConfig::CMOCK_DEFAULT_OPTIONS[:treat_inlines], config.treat_inlines)
36 assert_equal(CMockConfig::CMOCK_DEFAULT_OPTIONS[:inline_function_patterns], config.inline_function_patterns)
39 it "replace only options specified in a yaml file" do
40 test_plugins = [:soda, :pizza]
41 config = CMockConfig.new("#{File.expand_path(File.dirname(__FILE__))}/cmock_config_test.yml")
42 assert_equal(CMockConfig::CMOCK_DEFAULT_OPTIONS[:mock_path], config.mock_path)
43 assert_nil(CMockConfig::CMOCK_DEFAULT_OPTIONS[:includes])
44 assert_nil(config.includes)
45 assert_equal(test_plugins, config.plugins)
46 assert_equal(:include, config.treat_externs)
47 assert_equal(:include, config.treat_inlines)
48 assert_equal(['MY_INLINE_FUNCTION_DECLARATION_PATTERN'], config.inline_function_patterns)
51 it "populate treat_as map with internal standard_treat_as_map defaults, redefine defaults, and add custom values" do
54 'BOOL' => 'UINT8', # redefine standard default
55 'unsigned long' => 'INT', # redefine standard default
56 'U8' => 'UINT8', # custom value
57 'U16' => 'UINT16' # custom value
60 'BOOL' => 'INT16', # redefine standard default
61 'U16' => 'HEX16' # custom value
64 config1 = CMockConfig.new({:treat_as => user_treat_as1})
65 config2 = CMockConfig.new({:treat_as => user_treat_as2})
69 assert_equal('INT', config1.treat_as['BOOL_T'])
70 assert_equal('HEX32', config1.treat_as['unsigned int'])
71 assert_equal('HEX8_ARRAY',config1.treat_as['void*'])
72 assert_equal('STRING', config1.treat_as['CSTRING'])
73 assert_equal('STRING', config1.treat_as['char*'])
74 assert_equal('HEX8', config1.treat_as['unsigned char'])
75 assert_equal('INT', config1.treat_as['long'])
76 assert_equal('INT16', config1.treat_as['short'])
79 assert_equal('UINT8', config1.treat_as['BOOL'])
80 assert_equal('INT', config1.treat_as['unsigned long'])
83 assert_equal('UINT8', config1.treat_as['U8'])
84 assert_equal('UINT16', config1.treat_as['U16'])
86 # standard_treat_as_map: unchanged
87 assert_equal('INT', config1.standard_treat_as_map['BOOL'])
88 assert_equal('HEX32', config1.standard_treat_as_map['unsigned long'])
89 assert_equal('STRING', config1.standard_treat_as_map['char*'])
93 assert_equal('INT', config2.treat_as['BOOL_T'])
94 assert_equal('HEX32', config2.treat_as['unsigned int'])
95 assert_equal('HEX8_ARRAY',config2.treat_as['void*'])
96 assert_equal('STRING', config2.treat_as['CSTRING'])
97 assert_equal('STRING', config2.treat_as['char*'])
98 assert_equal('HEX8', config2.treat_as['unsigned char'])
99 assert_equal('INT', config2.treat_as['long'])
100 assert_equal('INT16', config2.treat_as['short'])
101 assert_equal('HEX32', config2.treat_as['unsigned long'])
104 assert_equal('INT16', config2.treat_as['BOOL'])
106 # added custom values
107 assert_equal('HEX16', config2.treat_as['U16'])
109 # standard_treat_as_map: unchanged
110 assert_equal('INT', config2.standard_treat_as_map['BOOL'])
111 assert_equal('HEX32', config2.standard_treat_as_map['unsigned long'])
112 assert_equal('STRING', config2.standard_treat_as_map['char*'])
115 it "standard treat_as map should be incorruptable" do
116 config = CMockConfig.new({})
118 assert_equal('INT', config.standard_treat_as_map['BOOL_T'])
120 local = config.standard_treat_as_map
121 local['BOOL_T'] = "U8"
123 assert_equal('INT', config.standard_treat_as_map['BOOL_T'])