def METHOD_NAME(self):
    gt = hal_py.Gate_type("TEST_GATE_TYPE")
    # Identifier
    self.assertEqual(gt.get_base_type(), hal_py.base_type.combinatorial)
    self.assertEqual(gt.get_name(), "TEST_GATE_TYPE")
    # Input Pins
    gt.add_input_pin("I0")
    gt.add_input_pins(["I1", "I2"])
    self.assertEqual(set(gt.get_input_pins()), {"I0", "I1", "I2"})
    # Output Pins
    gt.add_output_pin("O0")
    gt.add_output_pins(["O1", "O2"])
    self.assertEqual(set(gt.get_output_pins()), {"O0", "O1", "O2"})
    # Boolean Function
    bf_0 = hal_py.boolean_function.from_string("!I0 ^ I1 ^ I2", ["I0", "I1", "I2"])
    bf_1 = hal_py.boolean_function.from_string("I0 ^ !I1 ^ I2", ["I0", "I1", "I2"])
    bf_2 = hal_py.boolean_function.from_string("I0 ^ I1 ^ !I2", ["I0", "I1", "I2"])
    gt.add_boolean_function("O0", bf_0)
    gt.add_boolean_function("O1", bf_1)
    gt.add_boolean_function("O2", bf_2)
    self.assertEqual(gt.get_boolean_functions(), {"O0": bf_0, "O1": bf_1, "O2": bf_2})