package.path = "./lua/lib/?.lua;" .. package.path local drawn = {} local roles = {"confirm", "back", "right"} gui = { FONT_SMALL = 0, STYLE_NORMAL = 0, color = function(r, g, b) return r * 65536 + g * 256 + b end, getWidth = function() return 300 end, getHeight = function() return 240 end, getFontHeight = function() return 8 end, getTextWidth = function(_, text) return #text * 6 end, fillRect = function(x, y, w, h) drawn.strip = {x, y, w, h} end, drawText = function(_, x, _, text) drawn[#drawn + 1] = {text = text, x = x} end, } input = {getButtons = function() return roles end} local hints = require("hints") local height = hints.draw({back = "Close", confirm = "Select", up = "Scroll"}) assert(height == 14, "height covers the font plus padding") assert(drawn.strip[2] == 226, "the strip sits at the bottom by default") -- "up" is labelled but this device lacks it, so it never reaches the strip. assert(#drawn == 2, "only labelled roles the device reports are drawn") assert(drawn[1].text == "Close" and drawn[2].text == "Select", "reading order, not action order") assert(drawn[1].x == 60 and drawn[2].x == 207, "each label centres in its slot") drawn = {} roles = {} assert(hints.draw({confirm = "Select"}) == 14, "a device with no buttons still clears the strip") assert(#drawn == 0 and drawn.strip, "nothing is labelled, but the strip is cleared") print("ok")