'Given a list of artifacts, sources and parsers, will RunChecks on them.
Sample: (["Artifact1", "Artifact2"], [artifact1_data, artifact2_data],
[config_file.artifact1_Parser(), config_file.artifact2_Parser()]
artifact1_Parser().parse will run on artifact1_data & parsed results, along
with raw and anomalies will be inserted into the host_data["Artifact1"].
artifact2_Parser().parse will run on artifact2_data & parsed results, along
with raw and anomalies will be inserted into the host_data["Artifact2"].
Once artifacts added to host_data, loaded checks will be run against it.
Args:
artifact_list: list of artifacts to add to host_data for running checks
sources_list: list of dictionaries containing file names and file data.
If parser_list is empty then sources_list must contain a list of lists
containing StatEntry or lists of other raw artifact data.
parser_list: list of parsers to apply to file data from sources_list.
This can be empty if no parser is to be applied.
Returns:
CheckResult containing any findings in sources_list against loaded checks.
Raises:
Error: When there are issues with the passed input.'

def GenResults(self, artifact_list, sources_list, parser_list=None):

    if (parser_list is None):
        parser_list = ([None] * len(artifact_list))
    if any(((type(lst) != list) for lst in [artifact_list, sources_list, parser_list])):
        raise test_lib.Error('All    inputs    are    not    lists.')
    if any(((len(lst) != len(artifact_list)) for lst in [sources_list, parser_list])):
        raise test_lib.Error('All    lists    are    not    of    the    same    length.')
    host_data = self.SetKnowledgeBase()
    for (artifact, sources, parser) in zip(artifact_list, sources_list, parser_list):
        if (parser is None):
            host_data[artifact] = self.SetArtifactData(raw=sources, results=host_data.get(artifact))
        else:
            host_data = self._AddToHostData(host_data, artifact, sources, parser)
    return self.RunChecks(host_data)
