import pytest

from cwltool.command_line_tool import CommandLineTool
from cwltool.context import LoadingContext


snippet = [{
    "cwlVersion": "v1.0",
    "class": "CommandLineTool",
    "inputs": [
        {
            "type": {
                "type": "record",
                "fields": [
                    {
                        "type": [
                            {
                                "type": "enum",
                                "symbols": [
                                    "anon_enum_inside_array.cwl#first/species/homo_sapiens",
                                    "anon_enum_inside_array.cwl#first/species/mus_musculus"
                                ]
                            },
                            "null"
                        ],
                        "name": "anon_enum_inside_array.cwl#first/species"
                    }
                ]
            },
            "id": "anon_enum_inside_array.cwl#first"
        },
        {
            "type": [
                "null",
                {
                    "type": "enum",
                    "symbols": [
                        "anon_enum_inside_array.cwl#second/homo_sapiens",
                        "anon_enum_inside_array.cwl#second/mus_musculus"
                    ]
                }
            ],
            "id": "anon_enum_inside_array.cwl#second"
        }
    ],
    "baseCommand": "echo",
    "outputs": [],
    "id": "anon_enum_inside_array.cwl",
},{
    "cwlVersion": "v1.0",
    "class": "CommandLineTool",
    "requirements": [
        {
            "types": [
                {
                    "name": "anon_enum_inside_array_inside_schemadef.cwl#vcf2maf_params",
                    "type": "record",
                    "fields": [
                        {
                            "type": [
                                "null",
                                {
                                    "type": "enum",
                                    "symbols": [
                                        "anon_enum_inside_array_inside_schemadef.cwl#vcf2maf_params/ncbi_build/GRCh37",
                                        "anon_enum_inside_array_inside_schemadef.cwl#vcf2maf_params/ncbi_build/GRCh38",
                                        "anon_enum_inside_array_inside_schemadef.cwl#vcf2maf_params/ncbi_build/GRCm38"
                                    ]
                                }
                            ],
                            "name": "anon_enum_inside_array_inside_schemadef.cwl#vcf2maf_params/ncbi_build"
                        },
                        {
                            "type": [
                                "null",
                                {
                                    "type": "enum",
                                    "symbols": [
                                        "anon_enum_inside_array_inside_schemadef.cwl#vcf2maf_params/species/homo_sapiens",
                                        "anon_enum_inside_array_inside_schemadef.cwl#vcf2maf_params/species/mus_musculus"
                                    ]
                                }
                            ],
                            "name": "anon_enum_inside_array_inside_schemadef.cwl#vcf2maf_params/species"
                        }
                    ]
                }
            ],
            "class": "SchemaDefRequirement"
        }
    ],
    "inputs": [
        {
            "type": "anon_enum_inside_array_inside_schemadef.cwl#vcf2maf_params",
            "id": "anon_enum_inside_array_inside_schemadef.cwl#first"
        }
    ],
    "baseCommand": "echo",
    "outputs": [
    ],
    "id": "anon_enum_inside_array_inside_schemadef.cwl",
}]


@pytest.mark.parametrize('snippet', snippet)
def test_anon_types(snippet):
    CommandLineTool(snippet, LoadingContext())
