2021-05-22 07:50:34 -07:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
"strings"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestCanWriteRPrompt(t *testing.T) {
|
|
|
|
cases := []struct {
|
|
|
|
Case string
|
|
|
|
Expected bool
|
|
|
|
TerminalWidth int
|
|
|
|
TerminalWidthError error
|
|
|
|
PromptLength int
|
|
|
|
RPromptLength int
|
|
|
|
}{
|
|
|
|
{Case: "Width Error", Expected: true, TerminalWidthError: errors.New("burp")},
|
|
|
|
{Case: "Terminal > Prompt enabled", Expected: true, TerminalWidth: 200, PromptLength: 100, RPromptLength: 10},
|
|
|
|
{Case: "Terminal > Prompt enabled edge", Expected: true, TerminalWidth: 200, PromptLength: 100, RPromptLength: 70},
|
|
|
|
{Case: "Terminal > Prompt disabled no breathing", Expected: false, TerminalWidth: 200, PromptLength: 100, RPromptLength: 71},
|
|
|
|
{Case: "Prompt > Terminal enabled", Expected: true, TerminalWidth: 200, PromptLength: 300, RPromptLength: 70},
|
2021-09-16 23:15:06 -07:00
|
|
|
{Case: "Prompt > Terminal disabled no breathing", Expected: false, TerminalWidth: 200, PromptLength: 300, RPromptLength: 80},
|
2021-05-22 07:50:34 -07:00
|
|
|
{Case: "Prompt > Terminal disabled no room", Expected: true, TerminalWidth: 200, PromptLength: 400, RPromptLength: 80},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, tc := range cases {
|
|
|
|
env := new(MockedEnvironment)
|
|
|
|
env.On("getTerminalWidth", nil).Return(tc.TerminalWidth, tc.TerminalWidthError)
|
|
|
|
ansi := &ansiUtils{}
|
|
|
|
ansi.init(plain)
|
|
|
|
engine := &engine{
|
|
|
|
env: env,
|
|
|
|
ansi: ansi,
|
|
|
|
}
|
|
|
|
engine.rprompt = strings.Repeat("x", tc.RPromptLength)
|
|
|
|
engine.console.WriteString(strings.Repeat("x", tc.PromptLength))
|
|
|
|
got := engine.canWriteRPrompt()
|
2021-09-16 23:15:06 -07:00
|
|
|
assert.Equal(t, tc.Expected, got, tc.Case)
|
2021-05-22 07:50:34 -07:00
|
|
|
}
|
|
|
|
}
|