SchemataBuilder

Build scheman from the fragments.

TODO: optimize the implementation. A lot of redundant memory allocations etc.

Conservative to only allow up to <user defined> mutants per schemata but it reduces the chance that one failing schemata is "fatal", loosing too many muntats.

Members

Aliases

ET
alias ET = Tuple!(SchemataFragment[], "fragments", CodeMutant[], "mutants", SchemataChecksum, "checksum")
Undocumented in source.
Fragment
alias Fragment = Tuple!(SchemataFragment, "fragment", CodeMutant[], "mutants")
Undocumented in source.

Functions

isDone
bool isDone()
Undocumented in source. Be warned that the author may not have intended to support it.
next
Optional!ET next()

Merge schemata fragments to schemas. A schemata from this pass may may contain multiple mutation kinds and span over multiple files.

put
void put(FilesysIO fio, SchemataResult.Schemata[AbsolutePath] raw)

Save fragments to use them to build schematan.

restart
void restart()
Undocumented in source. Be warned that the author may not have intended to support it.
shuffle
void shuffle()

Shuffle the fragments to try to "evenly" spread out a schema over multiple files.

Variables

current
Vector!Fragment current;
Undocumented in source.
discardMinScheman
bool discardMinScheman;
Undocumented in source.
isUsed
Set!CodeMutant isUsed;

All mutants that have been used in any generated schema.

minMutantsPerSchema
long minMutantsPerSchema;

Minimal mutants that a schema must contain for it to be valid.

mutantsPerSchema
long mutantsPerSchema;

Max mutants per schema.

rest
Vector!Fragment rest;
Undocumented in source.
schemaQ
SchemaQ schemaQ;

Controls the probability that a mutant is part of the currently generating schema.

thresholdStartValue
double thresholdStartValue;

The threshold start at this value.

useProbability
bool useProbability;

use probability for if a mutant is injected or not

useProbablitySmallSize
bool useProbablitySmallSize;

if the probability should also influence if the scheam is smaller.

Meta