private CharFilterSpec NewCharFilterChain(Random random, TextReader reader) { CharFilterSpec spec = new CharFilterSpec(); spec.reader = reader; StringBuilder descr = new StringBuilder(); int numFilters = random.nextInt(3); for (int i = 0; i < numFilters; i++) { while (true) { ConstructorInfo ctor = charfilters[random.nextInt(charfilters.size())]; object[] args = NewCharFilterArgs(random, spec.reader, ctor.GetParameters().Select(p => p.ParameterType).ToArray()); if (Broken(ctor, args)) { continue; } reader = CreateComponent <TextReader>(ctor, args, descr); if (reader != null) { spec.reader = reader; break; } } } spec.toString = descr.toString(); return(spec); }
public override TextReader InitReader(string fieldName, TextReader reader) { Random random = new Random(seed); CharFilterSpec charfilterspec = NewCharFilterChain(random, reader); return(charfilterspec.reader); }
public override string ToString() { Random random = new Random(seed); StringBuilder sb = new StringBuilder(); CharFilterSpec charFilterSpec = NewCharFilterChain(random, new StringReader("")); sb.Append("\ncharfilters="); sb.Append(charFilterSpec.toString); // intentional: initReader gets its own separate random random = new Random(seed); TokenizerSpec tokenizerSpec = NewTokenizer(random, charFilterSpec.reader); sb.Append("\n"); sb.Append("tokenizer="); sb.Append(tokenizerSpec.toString); TokenFilterSpec tokenFilterSpec = NewFilterChain(random, tokenizerSpec.tokenizer, tokenizerSpec.offsetsAreCorrect); sb.Append("\n"); sb.Append("filters="); sb.Append(tokenFilterSpec.toString); sb.Append("\n"); sb.Append("offsetsAreCorrect=" + tokenFilterSpec.offsetsAreCorrect); return(sb.ToString()); }