package engine_test

import (
	"github.com/bilibili/gengine/builder"
	"github.com/bilibili/gengine/context"
	"github.com/bilibili/gengine/engine"
	"github.com/pingcap-inc/checker/pkg/util"
	"github.com/pingcap-inc/checker/proto"
	"testing"
)

const rule1 = `
rule "test"
begin
		if 0 == ToInt(config.GetValueByTagPath("log.file.max-days")){
			return -1
		}else{
			return 10
		}
end
`

func Test_WithReflect(t *testing.T){
	dataContext := context.NewDataContext()
	cfg := proto.NewPdConfigData()
	cfg.Log.File.MaxDays = 10
	dataContext.Add("config", cfg)
	dataContext.Add("ToInt", util.ValueToInt)
	ruleBuilder := builder.NewRuleBuilder(dataContext)
	if err := ruleBuilder.BuildRuleFromString(rule1); err != nil {
		t.Fatal(err)
	}

	eng := engine.NewGengine()
	if err := eng.Execute(ruleBuilder, false); err != nil {
		t.Fatal(err)
	}
	result, _ := eng.GetRulesResultMap()
	t.Log(result)
}

func TestRuleCheck_Check(t *testing.T) {

}