def test_list_response_ids_pha1(make_data_path):
    """Does list_response_ids return a list when input is pha1"""

    basename = '3c120_heg_1.pha'
    fakeid = 3

    infile = make_data_path(basename)
    ui.load_pha(infile)

    def validate(rids):
        assert len(rids) == 1
        assert 1 in rids
        assert isinstance(rids, list)

    def validate_err(i, excinfo):
        emsg = "background data set {} ".format(fakeid) + \
               "in PHA data set {} has not been set".format(i)
        assert str(excinfo.value) == emsg

    rids = ui.list_response_ids()
    validate(rids)

    for bid in [1, 2]:
        rids = ui.list_response_ids(bkg_id=bid)
        validate(rids)

    with pytest.raises(IdentifierErr) as excinfo:
        ui.list_response_ids(bkg_id=fakeid)

    validate_err(1, excinfo)

    ui.load_pha('heg1', infile)
    rids = ui.list_response_ids('heg1')
    validate(rids)

    for bid in [1, 2]:
        rids = ui.list_response_ids('heg1', bkg_id=bid)
        validate(rids)

    with pytest.raises(IdentifierErr) as excinfo:
        ui.list_response_ids('heg1', bkg_id=fakeid)

    validate_err('heg1', excinfo)
def test_list_response_ids_pha2(make_data_path):
    """Does list_response_ids return a list when input is pha2"""

    basename = '3c120_pha2'
    fakeid = 3

    infile = make_data_path(basename)
    ui.load_pha(infile)

    def validate(rids):
        "No response is read in with PHA2"
        assert rids == []

    def validate_err(i, excinfo):
        emsg = "background data set {} ".format(fakeid) + \
               "in PHA data set {} has not been set".format(i)
        assert str(excinfo.value) == emsg

    rids = ui.list_response_ids()
    validate(rids)

    with pytest.raises(IdentifierErr) as excinfo:
        ui.list_response_ids(bkg_id=fakeid)

    validate_err(1, excinfo)

    for i in range(1, 13):
        rids = ui.list_response_ids(i)
        validate(rids)

        for bkgid in [1, 2]:
            rids = ui.list_response_ids(i, bkg_id=bkgid)
            validate(rids)

        with pytest.raises(IdentifierErr) as excinfo:
            ui.list_response_ids(i, bkg_id=fakeid)

        validate_err(i, excinfo)