提交 32631ab8 编写于 作者: aaronchen2k2k's avatar aaronchen2k2k

close task#7908

上级 22576c94
......@@ -9,6 +9,7 @@ fields:
postfix: "\t"
- field: field_recursive_test
mode: recursive
fields:
- field: recursive.1
range: A-C
......
......@@ -23,7 +23,7 @@ func Generate(defaultFile string, configFile string, fieldsToExportStr, format,
fieldsToExport = strings.Split(fieldsToExportStr, ",")
}
rows, colIsNumArr, err := gen.GenerateForDefinition(defaultFile, configFile, &fieldsToExport)
rows, colIsNumArr, err := gen.GenerateForOnTop(defaultFile, configFile, &fieldsToExport)
if err != nil {
return
}
......
......@@ -16,7 +16,7 @@ import (
"strings"
)
func GenerateForDefinition(defaultFile, configFile string, fieldsToExport *[]string,
func GenerateForOnTop(defaultFile, configFile string, fieldsToExport *[]string,
) (rows [][]string, colIsNumArr []bool, err error) {
vari.DefaultDir = fileUtils.GetAbsDir(defaultFile)
......@@ -67,7 +67,7 @@ func GenerateForDefinition(defaultFile, configFile string, fieldsToExport *[]str
childValues := topFieldNameToValuesMap[child.Field]
arrOfArr = append(arrOfArr, childValues)
}
rows = putChildrenToArr(arrOfArr)
rows = putChildrenToArr(arrOfArr, vari.Recursive)
return
}
......@@ -90,7 +90,13 @@ func GenerateForField(field *model.DefField, withFix bool) (values []string) {
if count > vari.Total {
count = vari.Total
}
values = combineChildrenValues(arrOfArr, count)
recursive := vari.Recursive
if stringUtils.InArray(field.Mode, constant.Modes) { // set on field level
recursive = field.Mode == constant.ModeRecursive || field.Mode == constant.ModeRecursiveShort
}
values = combineChildrenValues(arrOfArr, recursive)
values = loopFieldValues(field, values, count, true)
} else if len(field.Froms) > 0 { // from muti items
......@@ -198,7 +204,7 @@ func GenerateFieldValuesForDef(field *model.DefField) []string {
values = append(values, val)
count++
isRandomAndLoopEnd := !(*field).IsReferYaml && (*field).IsRand && (*field).LoopIndex == (*field).LoopEnd
isRandomAndLoopEnd := !(*field).ReferToAnotherYaml && (*field).IsRand && (*field).LoopIndex == (*field).LoopEnd
// isNotRandomAndValOver := !(*field).IsRand && indexOfRow >= len(fieldWithValues.Values)
if count >= vari.Total || count >= len(fieldWithValues.Values) || isRandomAndLoopEnd {
break
......@@ -353,9 +359,9 @@ func computerLoop(field *model.DefField) {
(*field).LoopIndex = (*field).LoopStart
}
func putChildrenToArr(arrOfArr [][]string) (values [][]string) {
func putChildrenToArr(arrOfArr [][]string, recursive bool) (values [][]string) {
indexArr := make([]int, 0)
if vari.Recursive {
if recursive {
indexArr = getModArr(arrOfArr)
}
......@@ -365,7 +371,7 @@ func putChildrenToArr(arrOfArr [][]string) (values [][]string) {
child := arrOfArr[j]
var index int
if vari.Recursive {
if recursive {
mod := indexArr[j]
index = i / mod % len(child)
} else {
......@@ -410,8 +416,8 @@ func randomValues(values []string) (ret []string) {
return
}
func combineChildrenValues(arrOfArr [][]string, total int) (ret []string) {
valueArr := putChildrenToArr(arrOfArr)
func combineChildrenValues(arrOfArr [][]string, recursive bool) (ret []string) {
valueArr := putChildrenToArr(arrOfArr, recursive)
for _, arr := range valueArr {
ret = append(ret, strings.Join(arr, ""))
......
......@@ -58,7 +58,7 @@ func CreateFieldValuesFromList(field *model.DefField, fieldValue *model.FieldWit
items = CreateValuesFromInterval(field, desc, stepStr, repeat)
} else if typ == "yaml" {
items = CreateValuesFromYaml(field, desc, stepStr, repeat)
field.IsReferYaml = true
field.ReferToAnotherYaml = true
}
fieldValue.Values = append(fieldValue.Values, items...)
......@@ -248,7 +248,7 @@ func CreateValuesFromYaml(field *model.DefField, yamlFile, stepStr string, repea
configFile := vari.ConfigDir + yamlFile
fieldsToExport := make([]string, 0) // set to empty to use all fields
rows, colIsNumArr, _ := GenerateForDefinition("", configFile, &fieldsToExport)
rows, colIsNumArr, _ := GenerateForOnTop("", configFile, &fieldsToExport)
if field.Rand {
rows = randomValuesArr(rows)
}
......
......@@ -79,13 +79,13 @@ type FieldSimple struct {
Format string `yaml:"format"`
Rand bool `yaml:"rand"`
Type string `yaml:"type"`
Refer string `yaml:"refer"`
Mode string `yaml:"mode"`
LoopStart int `yaml:"-"`
LoopEnd int `yaml:"-"`
LoopIndex int `yaml:"-"`
IsRand bool `yaml:"-"`
IsReferYaml bool `yaml:"-"`
LoopStart int `yaml:"-"`
LoopEnd int `yaml:"-"`
LoopIndex int `yaml:"-"`
IsRand bool `yaml:"-"`
ReferToAnotherYaml bool `yaml:"-"`
}
type FieldWithValues struct {
......
......@@ -38,6 +38,12 @@ var (
FormatData = "data"
Formats = []string{FormatText, FormatJson, FormatXml, FormatSql}
ModeParallel = "parallel"
ModeRecursive = "recursive"
ModeParallelShort = "p"
ModeRecursiveShort = "r"
Modes = []string{ModeParallel, ModeRecursive, ModeParallelShort, ModeRecursiveShort}
ConfigTypeText = "text"
ConfigTypeArticle = "article"
ConfigTypeImage = "image"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册