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
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))
|
|
}
|