summaryrefslogtreecommitdiff
path: root/FreeRTOS-Plus/Test/CMock/test/unit/cmock_plugin_manager_test.rb
blob: f9f0e640cfa7a03fe00c47c0f3e06c4bc7e7612b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# ==========================================
#   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_plugin_manager'
require File.expand_path(File.dirname(__FILE__)) + '/../../lib/cmock_generator_plugin_expect'
require File.expand_path(File.dirname(__FILE__)) + '/../../lib/cmock_generator_plugin_ignore'
require File.expand_path(File.dirname(__FILE__)) + '/../../lib/cmock_generator_plugin_cexception'

describe CMockPluginManager, "Verify CMockPluginManager Module" do

  before do
    create_mocks :utils, :pluginA, :pluginB
    @config = create_stub(
      :respond_to => true,
      :when_ptr => :compare_data,
      :enforce_strict_ordering => false,
      :ignore => :args_and_calls
    )

    def @config.plugins
      if instance_variable_defined?(:@plugins)
        @plugins || []
      else
        []
      end
    end

    def @config.plugins=(val)
      @plugins = val
    end
  end

  after do
  end

  it "return all plugins by default" do
    @config.plugins = ['cexception','ignore']
    @utils.expect :helpers, {}

    @cmock_plugins = CMockPluginManager.new(@config, @utils)

    test_plugins = @cmock_plugins.plugins
    contained = { :expect => false, :ignore => false, :cexception => false }
    test_plugins.each do |plugin|
      contained[:expect]     = true   if plugin.instance_of?(CMockGeneratorPluginExpect)
      contained[:ignore]     = true   if plugin.instance_of?(CMockGeneratorPluginIgnore)
      contained[:cexception] = true   if plugin.instance_of?(CMockGeneratorPluginCexception)
    end
    assert_equal(true, contained[:expect])
    assert_equal(true, contained[:ignore])
    assert_equal(true, contained[:cexception])
  end

  it "return restricted plugins based on config" do
    @utils.expect :helpers, {}

    @cmock_plugins = CMockPluginManager.new(@config, @utils)

    test_plugins = @cmock_plugins.plugins
    contained = { :expect => false, :ignore => false, :cexception => false }
    test_plugins.each do |plugin|
      contained[:expect]     = true   if plugin.instance_of?(CMockGeneratorPluginExpect)
      contained[:ignore]     = true   if plugin.instance_of?(CMockGeneratorPluginIgnore)
      contained[:cexception] = true   if plugin.instance_of?(CMockGeneratorPluginCexception)
    end
    assert_equal(true, contained[:expect])
    assert_equal(false,contained[:ignore])
    assert_equal(false,contained[:cexception])
  end

  it "run a desired method over each plugin requested and return the results" do
    @utils.expect :helpers, {}
    @cmock_plugins = CMockPluginManager.new(@config, @utils)

    @pluginA = create_stub(:test_method => ["This Is An Awesome Test-"])
    @pluginB = create_stub(:test_method => ["And This is Part 2-","Of An Awesome Test"])
    @cmock_plugins.plugins = [@pluginA, @pluginB]

    expected = "This Is An Awesome Test-And This is Part 2-Of An Awesome Test"
    output   = @cmock_plugins.run(:test_method)
    assert_equal(expected, output)
  end

  it "run a desired method and arg list over each plugin requested and return the results" do
    @utils.expect :helpers, {}
    @cmock_plugins = CMockPluginManager.new(@config, @utils)

    @pluginA = create_stub(:test_method => ["This Is An Awesome Test-"])
    @pluginB = create_stub(:test_method => ["And This is Part 2-","Of An Awesome Test"])
    @cmock_plugins.plugins = [@pluginA, @pluginB]

    expected = "This Is An Awesome Test-And This is Part 2-Of An Awesome Test"
    output   = @cmock_plugins.run(:test_method, "chickenpotpie")
    assert_equal(expected, output)
  end
end