code: def test_choice(self):
      self.pc["parameter_config"] = [
          {"name": "x1", "type": "choice", "range": [2, 4, 6, 8, 10]},
          {"name": "x2", "type": "choice", "range": ["a", "b", "c"]},
      ]
      rp = get_proposer("sequence")(self.pc)
      self.assertEqual(rp.nSamples, 15)
      param1 = rp.get()
      rp.increment_job_counter()
      rp.check_termination()
      self.assertTrue(param1 == {"x1": 2, "x2": "a"})
      while rp.status == ProposerStatus.RUNNING:
          param1 = rp.get()
          rp.increment_job_counter()
          rp.check_termination()
      self.assertTrue(param1 == {"x1": 10, "x2": "c"})
  
file_path: auptimizer/tests/Proposer/test_SequenceProposer.py
imports: import unittest
  from unittest import TestCase
  from aup.EE.Job import Job
  from aup.Proposer import SequenceProposer
  from aup.Proposer import get_proposer
  from aup.Proposer import ProposerStatus
label_desc: Use image node_id 5 for calling the SequenceTestCase obj's underlying member method code with example usage: obj.test_choice() without return types