package tui
import (
"bytes"
"errors"
"fmt"
"os"
"testing"
"time"
log "github.com/sirupsen/logrus"
"github.com/dundee/gdu/v5/internal/testanalyze"
"github.com/dundee/gdu/v5/internal/testapp"
"github.com/dundee/gdu/v5/internal/testdev"
"github.com/dundee/gdu/v5/internal/testdir"
"github.com/dundee/gdu/v5/pkg/analyze"
"github.com/dundee/gdu/v5/pkg/device"
"github.com/dundee/gdu/v5/pkg/fs"
"github.com/gdamore/tcell/v2"
"github.com/stretchr/testify/assert"
)
func init() {
log.SetLevel(log.WarnLevel)
}
func TestFooter(t *testing.T) {
app, simScreen := testapp.CreateTestAppWithSimScreen(15, 15)
defer simScreen.Fini()
ui := CreateUI(app, simScreen, &bytes.Buffer{}, false, true, false, false, false)
dir := &analyze.Dir{
File: &analyze.File{
Name: "xxx",
Size: 5,
Usage: 4096,
},
BasePath: ".",
ItemCount: 2,
}
file := &analyze.File{
Name: "yyy",
Size: 2,
Usage: 4096,
Parent: dir,
}
dir.Files = fs.Files{file}
ui.currentDir = dir
ui.showDir()
ui.pages.HidePage("progress")
ui.footerLabel.Draw(simScreen)
simScreen.Show()
b, _, _ := simScreen.GetContents()
printScreen(simScreen)
text := []byte(" Total disk usage: 4.0 KiB Apparent size: 2 B Items: 1")
for i, r := range b {
if i >= len(text) {
break
}
assert.Equal(t, string(text[i]), string(r.Bytes[0]), fmt.Sprintf("Index: %d", i))
}
}
func TestUpdateProgress(t *testing.T) {
simScreen := testapp.CreateSimScreen()
defer simScreen.Fini()
app := testapp.CreateMockedApp(true)
ui := CreateUI(app, simScreen, &bytes.Buffer{}, false, false, false, false, false)
done := ui.Analyzer.GetDone()
done.Broadcast()
ui.updateProgress()
assert.True(t, true)
}
func TestHelp(t *testing.T) {
app, simScreen := testapp.CreateTestAppWithSimScreen(50, 50)
defer simScreen.Fini()
ui := CreateUI(app, simScreen, &bytes.Buffer{}, true, true, false, false, false)
ui.showHelp()
assert.True(t, ui.pages.HasPage("help"))
ui.help.Draw(simScreen)
simScreen.Show()
// printScreen(simScreen)
b, _, _ := simScreen.GetContents()
cells := b[507 : 507+9]
text := []byte("directory")
for i, r := range cells {
assert.Equal(t, text[i], r.Bytes[0])
}
}
func TestHelpBw(t *testing.T) {
app, simScreen := testapp.CreateTestAppWithSimScreen(50, 50)
defer simScreen.Fini()
ui := CreateUI(app, simScreen, &bytes.Buffer{}, false, true, false, false, false)
ui.showHelp()
ui.help.Draw(simScreen)
simScreen.Show()
// printScreen(simScreen)
b, _, _ := simScreen.GetContents()
cells := b[507 : 507+9]
text := []byte("directory")
for i, r := range cells {
assert.Equal(t, text[i], r.Bytes[0])
}
}
func TestAppRun(t *testing.T) {
simScreen := testapp.CreateSimScreen()
defer simScreen.Fini()
app := testapp.CreateMockedApp(false)
ui := CreateUI(app, simScreen, &bytes.Buffer{}, false, true, false, false, false)
err := ui.StartUILoop()
assert.Nil(t, err)
}
func TestAppRunWithErr(t *testing.T) {
simScreen := testapp.CreateSimScreen()
defer simScreen.Fini()
app := testapp.CreateMockedApp(true)
ui := CreateUI(app, simScreen, &bytes.Buffer{}, false, true, false, false, false)
err := ui.StartUILoop()
assert.Equal(t, "Fail", err.