def test_select_two(self):

    ids = list(range(1000))
    shuffle(ids)

    data = [[
      {"id": j, "A": float(i+j), "B": float(i*j)}
      for j in ids]
      for i in range(100)]
    elems = [create(StaCustom(d)) for d in data]

    pro = ProValueArray(elems)
    pro.select("A", "B")

    execute_omp(pro)

    arrs = pro.get_results()

    for i, elem in enumerate(elems):

      ds = elem.get_data()

      for d in ds:
        self.assertEqual(arrs["A"][i][d["id"]], d["A"])
        self.assertEqual(arrs["B"][i][d["id"]], d["B"])
  def test_error02(self):

    elems = [
      create(StaCustom({"id": i, "A": i*i})) for i in range(1000)]

    pro = ProValueArray(elems)
    pro.select("B")

    check_error_msg(
      self, "RuntimeError: Missing key(s) 'B' in ProValueArray", execute_omp, pro)
  def test_error03(self):

    data = [
      [{"id": j, "A": float(i*j)} for j in range(10*i+1)]
      for i in range(100)]
    elems = [create(StaCustom(d)) for d in data]
    pro = ProValueArray(elems)
    pro.select("A")

    check_error_msg(
      self, "RuntimeError: Data sizes must be the same", execute_omp, pro)
  def test_error01(self):

    elems = [
      create(StaCustom({"id": i, "A": i*i})) for i in range(1000)]

    pro = ProValueArray(elems)

    check_error_msg(
      self, "RuntimeError: Selected value(s) for ProValueArray", execute_omp, pro)
  def test_select_one(self):

    data = [[
      {"id": j, "A": float(i+j), "B": float(i*j)}
      for j in range(1000)]
      for i in range(100)]
    elems = [create(StaCustom(d)) for d in data]
    pro = ProValueArray(elems)
    pro.select("A")

    execute_omp(pro)

    arr_A = pro.get_results()["A"]

    for i, elem in enumerate(elems):

      ds = elem.get_data()

      for d in ds:
        self.assertEqual(arr_A[i][d["id"]], d["A"])