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