1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
import unittest
from pbcommand.models import TaskTypes, FileTypes, get_pbparser
class TestParsers(unittest.TestCase):
def test_input_output_files(self):
p = get_pbparser(
"pbcommand.tasks.test_parsers",
"0.1",
"Display Name",
"Tool Description ",
"pbcommand-driver-cmd",
is_distributed=False,
nproc=1,
resource_types=())
p.add_input_file_type(
file_type=FileTypes.FASTA,
file_id="fasta",
name="Fasta file",
description="Fasta file description")
p.add_input_file_type(FileTypes.JSON,
"json",
"JSON file",
"JSON file description")
p.add_output_file_type(
file_type=FileTypes.GFF,
file_id="gff",
name="GFF file",
description="GFF file description",
default_name="annotations.gff")
tc_contract = p.to_contract()
d = tc_contract.to_dict()
inputs = d['tool_contract']['input_types']
self.assertEqual(inputs, [
{
'description': 'Fasta file description',
'title': 'Fasta file',
'id': 'fasta',
'file_type_id': 'PacBio.FileTypes.Fasta'
},
{
'description': 'JSON file description',
'title': 'JSON file',
'id': 'json',
'file_type_id': 'PacBio.FileTypes.json'
}
])
outputs = d['tool_contract']['output_types']
self.assertEqual(outputs, [
{
'title': 'GFF file',
'description': 'GFF file description',
'default_name': 'annotations.gff',
'id': 'gff',
'file_type_id': 'PacBio.FileTypes.gff'
}
])
def test_misc_parser_types(self):
p = get_pbparser(
"pbcommand.tasks.test_parsers",
"0.1.0",
"Tool Name",
"Tool Descripion",
"pbcommand-driver-exe ")
p.add_int("pbcommand.task_options.n", "n", default=0, name="N",
description="Integer option")
p.add_float("pbcommand.task_options.f", "f", default=0, name="F",
description="Float option")
# XXX note that the 'default' value is not actually what the option is
# set to by default - it simply signals that action=store_true
p.add_boolean("pbcommand.task_options.loud", "loud", default=False,
name="Verbose", description="Boolean option")
pa = p.arg_parser.parser.parse_args
opts = pa(["--n", "250", "--f", "1.2345", "--loud"])
self.assertEqual(opts.n, 250)
self.assertEqual(opts.f, 1.2345)
self.assertTrue(opts.loud)
opts2 = pa([])
self.assertFalse(opts2.loud)
# TODO we should add a lot more tests for parser behavior
if __name__ == "__main__":
unittest.main()
|