1package visual
2
3import (
4 "testing"
5 "time"
6
7 "github.com/bnema/nefergui"
8 "github.com/stretchr/testify/require"
9)
10
11func TestFadeAlphaInterpolatesAndArrives(t *testing.T) {
12 t0 := time.Unix(100, 0)
13 a, done := fadeAlpha(0, 1, t0, 2*time.Second, t0.Add(time.Second))
14 require.InDelta(t, 0.5, a, 1e-9)
15 require.False(t, done)
16 a, done = fadeAlpha(0, 1, t0, 2*time.Second, t0.Add(3*time.Second))
17 require.Equal(t, 1.0, a)
18 require.True(t, done)
19 _, done = fadeAlpha(1, 0, t0, 0, t0)
20 require.True(t, done)
21}
22
23func TestFadeLayerIsClickThroughOverlayOnEveryOutput(t *testing.T) {
24 l := fadeLayer()
25 require.True(t, l.AllOutputs)
26 require.Empty(t, l.Output)
27 require.Equal(t, nefergui.LayerOverlay, l.Level)
28 require.Equal(t, nefergui.KeyboardNone, l.Keyboard)
29 require.NotNil(t, l.InputRects)
30 require.Empty(t, l.InputRects)
31 all := nefergui.AnchorTop | nefergui.AnchorBottom | nefergui.AnchorLeft | nefergui.AnchorRight
32 require.Equal(t, all, l.Anchors)
33}
34
35func TestLabelsAndHintsNeverCarryInput(t *testing.T) {
36 require.Equal(t, "Locked", labelFor(promptNone))
37 require.Equal(t, "PIN", labelFor(promptPIN))
38 require.Equal(t, "Denied", hintFor(nefergui.LockFailed))
39 require.Equal(t, "...", hintFor(nefergui.LockBusy))
40}