code: def test_Eq(self) -> None:
      threshold1 = ObjectiveThreshold(
          metric=self.minimize_metric, bound=self.bound
      )
      threshold2 = ObjectiveThreshold(
          metric=self.minimize_metric, bound=self.bound
      )
      self.assertEqual(threshold1, threshold2)
  
      threshold3 = ObjectiveThreshold(
          metric=self.minimize_metric, bound=self.bound, relative=False
      )
      self.assertNotEqual(threshold1, threshold3)
  
      constraint3 = OutcomeConstraint(
          metric=self.minimize_metric,
          op=ComparisonOp.LEQ,
          bound=self.bound,
      )
      self.assertNotEqual(threshold1, constraint3)
  
imports: from unittest import mock
  from ax.core.metric import Metric
  from ax.core.outcome_constraint import CONSTRAINT_WARNING_MESSAGE, LOWER_BOUND_MISMATCH, ObjectiveThreshold, OutcomeConstraint, ScalarizedOutcomeConstraint, UPPER_BOUND_MISMATCH
  from ax.core.types import ComparisonOp
  from ax.utils.common.testutils import TestCase
label_desc: Use image node_id 2 for calling the ObjectiveThresholdTest obj's underlying member method code with example usage: obj.test_Eq() without return types