import pytest

from calculatrice import Calculatrice

def pytest_generate_tests(metafunc):
    # called once per each test function
    funcarglist = metafunc.cls.params[metafunc.function.__name__]
    argnames = sorted(funcarglist[0])
    metafunc.parametrize(argnames, [[funcargs[name] for name in argnames]
            for funcargs in funcarglist])

class TestClass(object):
    # a map specifying multiple argument sets for a test method
    params = {
        'test_sommet': [dict(liste=[4]), dict(liste=[2,7,12]), dict(liste=[2,4,7,-1]),],
        'test_somme': [dict(liste=[2,3], resAttendu=5), dict(liste=[2,3,6], resAttendu=9)],
    }

    def test_sommet(self, liste):
        calc = Calculatrice()
        for i in liste:
            calc.empiler(i)
        resAttendu = liste[-1]
        resEffectif = calc.sommet()
        assert resAttendu == resEffectif, "le dernier nombre empilé est au sommet"

    def test_somme(self, liste,resAttendu):
        calc = Calculatrice()
        for i in liste:
            calc.empiler(i)
        calc.ajouter()
        resEffectif = calc.sommet()
        assert resAttendu == resEffectif, "la somme des 2 derniers nombres est au sommet"