func (self *ProblemArchiveReader) LoadTests(problem *model.Problem, inPattern, outPattern string) error { inRe, err := regexp.Compile(inPattern) if err != nil { return err } outRe, err := regexp.Compile(outPattern) if err != nil { return err } tests := make(map[string]int) getData := func(name, file string) (id int, data []byte, err error) { id, ok := tests[name] if !ok { problem.Tests = append(problem.Tests, model.Test{}) id = len(problem.Tests) - 1 tests[name] = id } data, err = self.ReadFile(file) return } for _, file := range self.FileList() { in := inRe.FindStringSubmatch(file) if in != nil { id, data, err := getData(in[1], file) if err != nil { return err } problem.Tests[id].Input = model.ConstTestData(data) } out := outRe.FindStringSubmatch(file) if out != nil { id, data, err := getData(out[1], file) if err != nil { return err } problem.Tests[id].Output = model.ConstSolutionData(data) } } return nil }