Skip to content

Commit 4c98e7e

Browse files
Make notes script tests only test on current visible screen
We do not currently have an obvious way to center map on notes in tests and force-render map. Without it, we can test reliably only on current visible screen
1 parent 59f1f8e commit 4c98e7e

1 file changed

Lines changed: 35 additions & 31 deletions

File tree

test/overlay/notes.lua

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -86,27 +86,27 @@ end
8686
function test.render_existing_notes()
8787
local notes_overlay = install_notes_overlay()
8888

89-
local pos_1 = {x=10, y=20, z=0}
90-
local pos_2 = {x=10, y=20, z=0}
91-
local pos_3 = {x=10, y=20, z=0}
89+
local viewport = guidm.Viewport.get()
90+
91+
local half_x = math.floor((viewport.x1 + viewport.x2) / 2)
92+
local half_y = math.floor((viewport.y1 + viewport.y2) / 2)
93+
94+
local pos_1 = {x=half_x, y=viewport.y1, z=viewport.z}
95+
local pos_2 = {x=viewport.x1, y=half_y, z=viewport.z}
96+
local pos_3 = {x=half_x, y=half_y, z=viewport.z}
9297

9398
add_note(notes_overlay, pos_1, 'note 1', 'first note')
9499
add_note(notes_overlay, pos_2, 'note 2', 'second note')
95100
add_note(notes_overlay, pos_3, 'note 3', 'last note')
96101

97102
reload_notes()
98103

99-
local viewport = guidm.Viewport.get()
100-
101104
local pin_textpos = dfhack.textures.getTexposByHandle(
102105
notes_textures.green_pin[1]
103106
)
104107

105108
for _, pos in ipairs({pos_1, pos_2, pos_3}) do
106-
dfhack.gui.revealInDwarfmodeMap(pos)
107-
108-
-- TODO: find better way to wait for overlay re-render
109-
delay(10)
109+
notes_overlay:render(gui.Painter.new())
110110

111111
local screen_pos = viewport:tileToScreen(pos)
112112
local pen = dfhack.screen.readTile(screen_pos.x, screen_pos.y, true)
@@ -119,22 +119,22 @@ end
119119
function test.edit_clicked_note()
120120
local notes_overlay = install_notes_overlay()
121121

122-
local pos = {x=10, y=20, z=0}
123-
add_note(notes_overlay, pos, 'note 1', 'note to edit')
124-
add_note(notes_overlay, {x=20, y=10, z=2}, 'note 2', 'other note')
125-
add_note(notes_overlay, {x=0, y=10, z=5}, 'note 3', 'another note')
122+
local viewport = guidm.Viewport.get()
126123

127-
reload_notes()
128-
dfhack.screen.invalidate()
129-
dfhack.gui.revealInDwarfmodeMap(pos)
124+
local half_x = math.floor((viewport.x1 + viewport.x2) / 2)
125+
local half_y = math.floor((viewport.y1 + viewport.y2) / 2)
130126

131-
-- TODO: find better way to wait for overlay re-render
132-
delay(10)
127+
local pos_1 = {x=half_x, y=viewport.y1, z=viewport.z}
128+
local pos_2 = {x=viewport.x1, y=half_y, z=viewport.z}
129+
local pos_3 = {x=half_x, y=half_y, z=viewport.z}
133130

134-
notes_overlay:updateLayout()
131+
add_note(notes_overlay, pos_1, 'note 1', 'note to edit')
132+
add_note(notes_overlay, pos_2, 'note 2', 'other note')
133+
add_note(notes_overlay, pos_3, 'note 3', 'another note')
135134

136-
local viewport = guidm.Viewport.get()
137-
local screen_pos = viewport:tileToScreen(pos)
135+
reload_notes()
136+
137+
local screen_pos = viewport:tileToScreen(pos_1)
138138

139139
local rect = gui.ViewRect{rect=notes_overlay.frame_rect}
140140

@@ -167,19 +167,23 @@ end
167167
function test.delete_clicked_note()
168168
local notes_overlay = install_notes_overlay()
169169

170-
local pos = {x=10, y=20, z=0}
171-
add_note(notes_overlay, {x=20, y=10, z=2}, 'note 1', 'note to edit')
172-
add_note(notes_overlay, pos, 'note 2', 'other note')
173-
add_note(notes_overlay, {x=0, y=10, z=5}, 'note 3', 'another note')
174170

175-
reload_notes()
176-
dfhack.screen.invalidate()
177-
dfhack.gui.revealInDwarfmodeMap(pos)
171+
local viewport = guidm.Viewport.get()
178172

179-
notes_overlay:updateLayout()
173+
local half_x = math.floor((viewport.x1 + viewport.x2) / 2)
174+
local half_y = math.floor((viewport.y1 + viewport.y2) / 2)
180175

181-
local viewport = guidm.Viewport.get()
182-
local screen_pos = viewport:tileToScreen(pos)
176+
local pos_1 = {x=half_x, y=viewport.y1, z=viewport.z}
177+
local pos_2 = {x=viewport.x1, y=half_y, z=viewport.z}
178+
local pos_3 = {x=half_x, y=half_y, z=viewport.z}
179+
180+
add_note(notes_overlay, pos_1, 'note 1', 'note to edit')
181+
add_note(notes_overlay, pos_2, 'note 2', 'other note')
182+
add_note(notes_overlay, pos_3, 'note 3', 'another note')
183+
184+
reload_notes()
185+
186+
local screen_pos = viewport:tileToScreen(pos_2)
183187

184188
local rect = gui.ViewRect{rect=notes_overlay.frame_rect}
185189

0 commit comments

Comments
 (0)