You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.1 KiB
Go

package shell
import (
"bufio"
"io"
"strings"
"testing"
"github.com/stretchr/testify/suite"
)
type DollarTest struct {
suite.Suite
}
func (t *DollarTest) TestParse() {
parser := &BaseParser{&DollarParameters{}}
reader := bufio.NewReader(strings.NewReader("$variable"))
iterator, err := NewCharIterator(reader)
t.NoError(err)
token, err := parser.Parse(iterator, &CharCollection{})
t.ErrorIs(err, io.EOF)
t.IsType(&Dollar{}, token)
t.IsType(&Word{}, token.Tokens()[0])
t.Equal(token.Tokens()[0].String(), "variable")
}
func (t *DollarTest) TestExpand() {
parser := &BaseParser{&DollarParameters{}}
reader := bufio.NewReader(strings.NewReader("$variable $hey"))
iterator, err := NewCharIterator(reader)
t.NoError(err)
token, err := parser.Parse(iterator, &CharCollection{})
t.IsType(&Dollar{}, token)
t.IsType(&Word{}, token.Tokens()[0])
state := NewShellState()
state.SetVariable("variable", "Test")
expanded, exit := token.(Expandable).Expand(state, nil, nil)
t.Equal(uint8(0), exit)
t.Equal(expanded[0], "Test")
}
func TestDollarTest(t *testing.T) {
suite.Run(t, new(DollarTest))
}