from typing import List

from lib.irt.test_response_function import TestResponseFunction
from lib.irt.test_information_function import TestInformationFunction

from models.targets.tif_target import TifTarget
from models.targets.tcc_target import TccTarget
from models.item import Item

def generate_tif_results(items, solver_run):
  targets = []

  for target in solver_run.objective_function.tif_targets:
    tif = TestInformationFunction(solver_run.irt_model).calculate(items, theta=target.theta)
    targets.append(TifTarget(theta=target.theta, value=target.value, result=tif))

  return targets

def generate_tcc_results(items, solver_run):
  targets = []

  for target in solver_run.objective_function.tcc_targets:
    tcc = TestResponseFunction(solver_run.irt_model).calculate(items, theta=target.theta)
    targets.append(TccTarget(theta=target.theta, value=target.value, result=tcc))

  return targets