Skip to content

Commit e605cec

Browse files
Tests: Add general Desk Accessories tests, and DHRDarkness helper
Splatting over the DHR screen from script is more powerful than using a DA shortcut as it can be done while a dialog is showing.
1 parent c0e2020 commit e605cec

File tree

6 files changed

+150
-20
lines changed

6 files changed

+150
-20
lines changed

notes/testplan.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1179,7 +1179,7 @@ Image File:
11791179
* Select folder icon, select DA from Apple menu. Verify nothing happens other than open/close animation.
11801180
* Select Electric Duet file icon, select DA from Apple menu. Verify music is played.
11811181

1182-
# Desk Accessories
1182+
# Desk Accessories - covered in `tests/desk_accessories.lua`
11831183

11841184
* Launch DeskTop. Open the APPLE.MENU folder. Select a desk accessory icon. File > Open. Verify that the desk accessory launches.
11851185

tests/date_and_time.lua

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,15 @@ DISKARGS="-hard1 $HARDIMG -hard2 res/tests.hdv"
55
66
======================================== ENDCONFIG ]]--
77

8-
-- Add shortcut for "Darkness"
9-
a2d.SelectPath("/A2.DESKTOP/EXTRAS/DARKNESS")
10-
a2d.InvokeMenuItem(a2d.SHORTCUTS_MENU, a2d.SHORTCUTS_ADD_A_SHORTCUT)
11-
a2d.DialogOK()
12-
13-
148
test.Step(
159
"Time format repaint",
1610
function()
1711
a2d.OpenPath("/TESTS/FILE.TYPES")
1812
a2d.InvokeMenuItem(a2d.VIEW_MENU, a2d.VIEW_BY_NAME)
1913
a2d.InvokeMenuItem(a2d.APPLE_MENU, a2d.CONTROL_PANELS)
20-
a2d.OAShortcut("1") -- Invoke darkness
2114
a2d.SelectAndOpen("DATE.AND.TIME")
2215
a2d.OAShortcut("2") -- 24-hour
16+
apple2.DHRDarkness()
2317
a2d.DialogOK()
2418
test.Snap("verify full repaint and 24-hour format")
2519
a2d.CloseAllWindows()
@@ -93,15 +87,15 @@ a2d.WaitForRestart()
9387
test.Step(
9488
"Fresh disk image",
9589
function()
96-
a2d.OAShortcut("1") -- invoke darkness
9790
a2d.InvokeMenuItem(a2d.APPLE_MENU, a2d.CONTROL_PANELS)
9891
a2d.InvokeMenuItem(a2d.VIEW_MENU, a2d.VIEW_BY_NAME)
9992
a2d.SelectAndOpen("DATE.AND.TIME")
10093
test.Snap("verify dialog date matches packaged file dates")
94+
apple2.DHRDarkness()
10195
a2d.DialogOK()
10296
test.Snap("verify full repaint and dates now Today")
103-
a2d.OAShortcut("1") -- invoke darkness
10497
a2d.SelectAndOpen("DATE.AND.TIME")
98+
apple2.DHRDarkness()
10599
a2d.DialogOK()
106100
test.Snap("verify no full repaint")
107101
a2d.InvokeMenuItem(a2d.STARTUP_MENU, 1) -- slot 7
@@ -344,14 +338,14 @@ test.Step(
344338

345339
-- Use Date & Time to set date
346340
a2d.InvokeMenuItem(a2d.APPLE_MENU, a2d.CONTROL_PANELS)
347-
a2d.OAShortcut("1") -- Invoke darkness
348341
a2d.SetProDOSDate(1998, 9, 13) -- so we know the delta
349342
a2d.SelectAndOpen("DATE.AND.TIME")
350343
a2d.InMouseKeysMode(function(m)
351344
m.MoveToApproximately(250,75) -- year
352345
m.Click()
353346
end)
354347
apple2.UpArrowKey()
348+
apple2.DHRDarkness()
355349
a2d.DialogOK()
356350
test.Snap("verify full repaint and Today date")
357351
end)

tests/desk_accessories.lua

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
test.Step(
2+
"File > Open works",
3+
function()
4+
a2d.OpenPath("/A2.DESKTOP/APPLE.MENU")
5+
a2d.Select("CALCULATOR")
6+
a2d.InvokeMenuItem(a2d.FILE_MENU, a2d.FILE_OPEN)
7+
test.Snap("DA opened")
8+
a2d.CloseWindow()
9+
end)
10+
11+
function MoveDoesntRepaintTest(name, path, x, y)
12+
test.Step(
13+
name .. " doesn't repaint on non-move",
14+
function()
15+
a2d.SelectPath(path)
16+
a2d.OpenSelection()
17+
a2d.InMouseKeysMode(function(m)
18+
m.MoveToApproximately(x,y)
19+
emu.wait(2/60)
20+
apple2.DHRDarkness()
21+
emu.wait(2/60)
22+
m.ButtonDown()
23+
emu.wait(10/60)
24+
test.Snap("verify drag highlight")
25+
m.ButtonUp()
26+
end)
27+
test.Snap("verify no repaint")
28+
a2d.CloseWindow()
29+
a2d.CloseAllWindows()
30+
a2d.InvokeMenuItem(a2d.STARTUP_MENU, 1) -- restart
31+
a2d.WaitForRestart()
32+
end)
33+
end
34+
35+
MoveDoesntRepaintTest("Calculator", "/A2.DESKTOP/APPLE.MENU/CALCULATOR", 280, 55)
36+
MoveDoesntRepaintTest("Calendar", "/A2.DESKTOP/APPLE.MENU/CALENDAR", 280, 40)
37+
MoveDoesntRepaintTest("Key Caps", "/A2.DESKTOP/APPLE.MENU/KEY.CAPS", 280, 50)
38+
MoveDoesntRepaintTest("Control Panel", "/A2.DESKTOP/APPLE.MENU/CONTROL.PANELS/CONTROL.PANEL", 280, 30)
39+
MoveDoesntRepaintTest("Joystick", "/A2.DESKTOP/APPLE.MENU/CONTROL.PANELS/JOYSTICK", 280, 50)
40+
MoveDoesntRepaintTest("Map", "/A2.DESKTOP/APPLE.MENU/CONTROL.PANELS/MAP", 280, 40)
41+
MoveDoesntRepaintTest("Options", "/A2.DESKTOP/APPLE.MENU/CONTROL.PANELS/OPTIONS", 280, 45)
42+
MoveDoesntRepaintTest("Views", "/A2.DESKTOP/APPLE.MENU/CONTROL.PANELS/VIEWS", 280, 50)
43+
MoveDoesntRepaintTest("Bounce", "/A2.DESKTOP/APPLE.MENU/TOYS/BOUNCE", 280, 45)
44+
MoveDoesntRepaintTest("Eyes", "/A2.DESKTOP/APPLE.MENU/TOYS/EYES", 280, 60)
45+
MoveDoesntRepaintTest("Lights Out", "/A2.DESKTOP/APPLE.MENU/TOYS/LIGHTS.OUT", 280, 60)
46+
MoveDoesntRepaintTest("Neko", "/A2.DESKTOP/APPLE.MENU/TOYS/NEKO", 280, 50)
47+
MoveDoesntRepaintTest("Puzzle", "/A2.DESKTOP/APPLE.MENU/TOYS/PUZZLE", 280, 70)
48+
MoveDoesntRepaintTest("CD Remote", "/A2.DESKTOP/EXTRAS/CD.REMOTE", 280, 70)
49+
MoveDoesntRepaintTest("Scientific Calculator", "/A2.DESKTOP/EXTRAS/SCI.CALC", 280, 50)
50+
51+
-- ============================================================
52+
53+
function CloseWindowTest(name, path, x, y)
54+
test.Step(
55+
name .. " closes on OA+W",
56+
function()
57+
a2d.OpenPath(path)
58+
a2d.OAShortcut("W")
59+
a2d.WaitForRepaint()
60+
test.Snap("verify window closed on OA+W")
61+
62+
a2d.OpenPath(path)
63+
a2d.WaitForRepaint()
64+
a2d.OAShortcut("w")
65+
test.Snap("verify window closed on OA+w")
66+
end)
67+
end
68+
69+
--------------------------------------------------
70+
-- Apple Menu
71+
--------------------------------------------------
72+
73+
CloseWindowTest("Calculator", "/A2.DESKTOP/APPLE.MENU/CALCULATOR")
74+
CloseWindowTest("Change Type", "/A2.DESKTOP/APPLE.MENU/CHANGE.TYPE")
75+
CloseWindowTest("Find Files", "/A2.DESKTOP/APPLE.MENU/FIND.FILES")
76+
CloseWindowTest("Key Caps", "/A2.DESKTOP/APPLE.MENU/KEY.CAPS")
77+
78+
--------------------------------------------------
79+
-- Control Panels
80+
--------------------------------------------------
81+
82+
CloseWindowTest("Control Panel", "/A2.DESKTOP/APPLE.MENU/CONTROL.PANELS/CONTROL.PANEL")
83+
CloseWindowTest("Date & Time", "/A2.DESKTOP/APPLE.MENU/CONTROL.PANELS/DATE.AND.TIME")
84+
CloseWindowTest("International", "/A2.DESKTOP/APPLE.MENU/CONTROL.PANELS/INTERNATIONAL")
85+
CloseWindowTest("Joystick", "/A2.DESKTOP/APPLE.MENU/CONTROL.PANELS/JOYSTICK")
86+
CloseWindowTest("Map", "/A2.DESKTOP/APPLE.MENU/CONTROL.PANELS/MAP")
87+
CloseWindowTest("Options", "/A2.DESKTOP/APPLE.MENU/CONTROL.PANELS/OPTIONS")
88+
CloseWindowTest("Sounds", "/A2.DESKTOP/APPLE.MENU/CONTROL.PANELS/SOUNDS")
89+
CloseWindowTest("System Speed", "/A2.DESKTOP/APPLE.MENU/CONTROL.PANELS/SYSTEM.SPEED")
90+
CloseWindowTest("Views", "/A2.DESKTOP/APPLE.MENU/CONTROL.PANELS/VIEWS")
91+
92+
--------------------------------------------------
93+
-- Toys
94+
--------------------------------------------------
95+
96+
CloseWindowTest("Bounce", "/A2.DESKTOP/APPLE.MENU/TOYS/BOUNCE")
97+
CloseWindowTest("Eyes", "/A2.DESKTOP/APPLE.MENU/TOYS/EYES")
98+
CloseWindowTest("Lights Out", "/A2.DESKTOP/APPLE.MENU/TOYS/LIGHTS.OUT")
99+
CloseWindowTest("Neko", "/A2.DESKTOP/APPLE.MENU/TOYS/NEKO")
100+
CloseWindowTest("Puzzle", "/A2.DESKTOP/APPLE.MENU/TOYS/PUZZLE")
101+
102+
--------------------------------------------------
103+
-- Extras
104+
--------------------------------------------------
105+
106+
CloseWindowTest("Benchmark", "/A2.DESKTOP/EXTRAS/BENCHMARK")
107+
CloseWindowTest("CD Remote", "/A2.DESKTOP/EXTRAS/CD.REMOTE")
108+
CloseWindowTest("DOS 3.3 Import", "/A2.DESKTOP/EXTRAS/DOS33.IMPORT")
109+
CloseWindowTest("Scientific Calculator", "/A2.DESKTOP/EXTRAS/SCI.CALC")
110+

tests/international.lua

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,6 @@
55
66
============================================================]]--
77

8-
-- Add shortcut for "Darkness"
9-
a2d.SelectPath("/A2.DESKTOP/EXTRAS/DARKNESS")
10-
a2d.InvokeMenuItem(a2d.SHORTCUTS_MENU, a2d.SHORTCUTS_ADD_A_SHORTCUT)
11-
a2d.DialogOK()
12-
138
-- Remove clock driver (to avoid build-relative dates)
149
a2d.OpenPath("/A2.DESKTOP/EXTRAS/BASIC.SYSTEM")
1510
a2d.WaitForRestart()
@@ -22,10 +17,9 @@ test.Step(
2217
function()
2318
a2d.OpenPath("/A2.DESKTOP/APPLE.MENU/CONTROL.PANELS")
2419
a2d.InvokeMenuItem(a2d.VIEW_MENU, a2d.VIEW_BY_NAME)
25-
a2d.OAShortcut("1") -- Invoke darkness
26-
2720
a2d.SelectAndOpen("INTERNATIONAL")
2821
a2d.OAShortcut("2") -- D/M/Y
22+
apple2.DHRDarkness()
2923
a2d.DialogOK()
3024

3125
test.Snap("Verify full repaint and D/M/Y format")
@@ -36,10 +30,9 @@ test.Step(
3630
function()
3731
a2d.OpenPath("/A2.DESKTOP/APPLE.MENU/CONTROL.PANELS")
3832
a2d.InvokeMenuItem(a2d.VIEW_MENU, a2d.VIEW_BY_NAME)
39-
a2d.OAShortcut("1") -- Invoke darkness
40-
4133
a2d.SelectAndOpen("INTERNATIONAL")
4234
-- don't change anything
35+
apple2.DHRDarkness()
4336
a2d.DialogOK()
4437

4538
test.Snap("Verify minimal repaint")

tests/lib/a2d.lua

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,12 @@ function a2d.CycleWindows()
313313
a2d.WaitForRepaint()
314314
end
315315

316+
function a2d.AddShortcut(path)
317+
a2d.SelectPath(path)
318+
a2d.InvokeMenuItem(a2d.SHORTCUTS_MENU, a2d.SHORTCUTS_ADD_A_SHORTCUT)
319+
a2d.DialogOK()
320+
end
321+
316322
--------------------------------------------------
317323
-- Mouse Keys
318324
--------------------------------------------------

tests/lib/apple2.lua

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -703,4 +703,31 @@ end
703703

704704
--------------------------------------------------
705705

706+
function apple2.DHRDarkness()
707+
function SetDHRByte(col, row, value)
708+
local bank = col % 2
709+
col = col >> 1
710+
local aa = (row & 0xC0) >> 6
711+
local bbb = (row & 0x38) >> 3
712+
local ccc = (row & 0x07)
713+
local addr = 0x2000 + (aa * 0x28) + (bbb * 0x80) + (ccc * 0x400) + col
714+
apple2.WriteRAMDevice(addr + 0x10000 * (1-bank), value)
715+
end
716+
717+
local bytes = {
718+
{0x00, 0x00, 0x00, 0x00},
719+
{0x08, 0x11, 0x22, 0x44},
720+
{0x00, 0x00, 0x00, 0x00},
721+
{0x22, 0x44, 0x08, 0x11},
722+
}
723+
724+
for row = 0,191 do
725+
for col = 0,79 do
726+
SetDHRByte(col, row, bytes[row % 4 + 1][col % 4 + 1])
727+
end
728+
end
729+
end
730+
731+
--------------------------------------------------
732+
706733
return apple2

0 commit comments

Comments
 (0)