def test_opt_params_bad(num_reads, max_answers, answer_mode):
    with pytest.raises(sapience.UserError):
        sapience.optimization_params(
            {
                'num_reads': num_reads,
                'max_answers': max_answers,
                'answer_mode': answer_mode
            }, [], [])
def test_opt_defaults():
    params = sapience.optimization_params({}, [], [])
    assert len(params) == 7
    assert params['num_vars'] == sapience.C4_NUMQUBITS
    assert not params['active_vars']
    assert not params['active_var_pairs']
    assert not params['var_order']
    assert params['num_reads'] == 1
    assert params['answer_histogram'] == True
    assert params['max_answers'] == 1
def test_opt_params_good(num_reads, max_answers, answer_mode):
    user_params = {}
    if num_reads is not None:
        user_params['num_reads'] = num_reads
    if max_answers is not None:
        user_params['max_answers'] = max_answers
    if answer_mode is not None:
        user_params['answer_mode'] = answer_mode
    params = sapience.optimization_params(user_params, [], [])
    assert len(params) == 7
    assert params['num_vars'] == sapience.C4_NUMQUBITS
    assert not params['active_vars']
    assert not params['active_var_pairs']
    assert not params['var_order']
    assert params['num_reads'] == int(
        num_reads) if num_reads is not None else 1
    assert params['answer_histogram'] == (answer_mode != 'raw')
    assert params['max_answers'] == int(
        max_answers) if max_answers is not None else params['num_reads']
def test_opt_params_badname():
    with pytest.raises(sapience.UserError):
        sapience.optimization_params({'_nope': 123}, [], [])
def test_opt_ignoreparams():
    sapience.optimization_params(dict.fromkeys(sapience.IGNORE_PARAMS), [], [])