from lib.irt.item_information_function import ItemInformationFunction


class TestInformationFunction():

    def __init__(self, irt_model):
        self.irt_model = irt_model
        self.iif = ItemInformationFunction(irt_model)

    # determins the amount of information
    # at a certain theta (ability level) of the sum of a question set correct
    # detailed further on page 166, equation 4 here:
    # https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5978482/pdf/10.1177_0146621615613308.pdf
    def calculate(self, items, **kwargs):
        sum = 0

        for item in items:
            result = self.iif.calculate(b_param=item.b_param,
                                        theta=kwargs['theta'])
            sum += result

        return sum