File size: 3,092 Bytes
402daee
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package.path = '../common/libs/?.lua;../common/vendor/?.lua;' .. package.path

local lu = require('luaunit')

require('mock_reaper')
require('ImGuiTheme')

--

TestImGuiTheme = {
    overrides = {
        f_color_push = function() end,
        f_color_pop = function() end,
        f_style_push = function() end,
        f_style_pop = function() end
    }
}

function TestImGuiTheme:setUp()
  self.overrides.f_color_push = ImGuiTheme.f_color_push
  self.overrides.f_color_pop = ImGuiTheme.f_color_pop
  self.overrides.f_style_push = ImGuiTheme.f_style_push
  self.overrides.f_style_pop = ImGuiTheme.f_style_pop
end

function TestImGuiTheme:tearDown()
  ImGuiTheme.f_color_push = self.overrides.f_color_push
  ImGuiTheme.f_color_pop = self.overrides.f_color_pop
  ImGuiTheme.f_style_push = self.overrides.f_style_push
  ImGuiTheme.f_style_pop = self.overrides.f_style_pop
end

function TestImGuiTheme:testColorInit()
  local theme = ImGuiTheme.new {
    colors = {
        { function() return "some key" end, 0xFF0000FF },
        { "just a key", 0x00FF0000 }
    }
  }

  lu.assertEquals(theme.colors[1][1], "some key")
  lu.assertEquals(theme.colors[1][2], 0xFF0000FF)
  lu.assertEquals(theme.colors[2][1], "just a key")
  lu.assertEquals(theme.colors[2][2], 0x00FF0000)
  lu.assertEquals(theme.color_count, 2)
end

function TestImGuiTheme:testColors()
  local theme = ImGuiTheme.new {
    colors = {
        { function() return "some key" end, 0xFF0000FF },
        { "just a key", 0x00FF0000 }
    }
  }

  local expectations = {
    { "some key", 0xFF0000FF },
    { "just a key", 0x00FF0000 }
  }

  local i = 1

  ImGuiTheme.f_color_push = function(_ctx, key, value)
    lu.assertEquals(key, expectations[i][1])
    lu.assertEquals(value, expectations[i][2])
    i = i + 1
  end

  ImGuiTheme.f_color_pop = function(_ctx, count)
    lu.assertEquals(count, 2)
  end

  theme:push("context")
  theme:pop("context")
end

function TestImGuiTheme:testStyleInit()
  local theme = ImGuiTheme.new {
    styles = {
        { function() return "single argument" end, 1.0 },
        { "multiple arguments", 2.0, 3.0 }
    }
  }

  lu.assertEquals(theme.styles[1][1], "single argument")
  lu.assertEquals(theme.styles[1][2], 1.0)
  lu.assertEquals(theme.styles[2][1], "multiple arguments")
  lu.assertEquals(theme.styles[2][2], 2.0)
  lu.assertEquals(theme.styles[2][3], 3.0)
  lu.assertEquals(theme.style_count, 2)
end

function TestImGuiTheme:testStyles()
  local theme = ImGuiTheme.new {
    styles = {
      { function() return "single argument" end, 1.0 },
      { "multiple arguments", 2.0, 3.0 }
  }
}

  local expectations = {
    { "single argument", 1.0 },
    { "multiple arguments", 2.0, 3.0 }
  }

  local i = 1

  ImGuiTheme.f_style_push = function(_ctx, key, ...)
    local values = ...
    lu.assertEquals(key, expectations[i][1])
    lu.assertEquals(values, table.unpack(expectations[i], 2))
    i = i + 1
  end

  ImGuiTheme.f_style_pop = function(_ctx, count)
    lu.assertEquals(count, 2)
  end

  theme:push("context")
  theme:pop("context")
end

--

os.exit(lu.LuaUnit.run())