func (s *Suite) EVFTC(ast interface{}, falseVs ...interface{}) {
	for _, falseV := range falseVs {
		s.False(s.constructNode(ast).(rql.ValuePredicate).EvalValue(s.toUnmarshaledJSON(falseV)))
	}
}
EVFTC => EvalValueFalseTestCases
package asttest
import (
	"encoding/json"
	"fmt"
	"time"
	"github.com/puppetlabs/wash/api/rql"
	"github.com/puppetlabs/wash/api/rql/internal/errz"
	"github.com/puppetlabs/wash/plugin"
	"github.com/shopspring/decimal"
	"github.com/stretchr/testify/suite"
)
type Suite struct {
	suite.Suite
	DefaultNodeConstructor func() rql.ASTNode
	NodeConstructor        func() rql.ASTNode
}
func (s *Suite) A(vs ...interface{}) []interface{} {
	return vs
}
func (s *Suite) N(n string) decimal.Decimal {
	d, err := decimal.NewFromString(n)
	if err != nil {
		panic(fmt.Sprintf("s.N unexpected error: %v", err))
	}
	return d
}
func (s *Suite) TM(t int64) time.Time {
	return time.Unix(t, 0)
}
func (s *Suite) SetupTest() {
	s.NodeConstructor = s.DefaultNodeConstructor
}
func (s *Suite) MTC(n rql.ASTNode, expected interface{}) {
	s.Equal(expected, n.Marshal())
}
func (s *Suite) UMETC(ast interface{}, errRegex string, isMatchErr bool) {
	ast = s.toUnmarshaledJSON(ast)
	if err := s.NodeConstructor().Unmarshal(ast); s.Error(err) {
		if isMatchErr {
			s.True(errz.IsMatchError(err), "err is not a MatchError")
		} else {
			s.False(errz.IsMatchError(err), "err is a MatchError")
		}
		s.Regexp(errRegex, err)
	}
}
func (s *Suite) EVTTC(ast interface{}, trueVs ...interface{}) {
	for _, trueV := range trueVs {
		s.True(s.constructNode(ast).(rql.ValuePredicate).EvalValue(s.toUnmarshaledJSON(trueV)))
	}
}