def METHOD_NAME(
    self, firstValueOne, secondValueOne, valueTwo
):
    """
    Assert that C{firstValueOne} is equal to C{secondValueOne} but not
    equal to C{valueOne} and that it defines equality cooperatively with
    other types it doesn't know about.
    @param firstValueOne: An object which is expected to compare as equal
        to C{secondValueOne} and not equal to C{valueTwo}.
    @param secondValueOne: A different object than C{firstValueOne} but
        which is expected to compare equal to that object.
    @param valueTwo: An object which is expected to compare as not equal to
        C{firstValueOne}.
    """
    # This doesn't use assertEqual and assertNotEqual because the exact
    # operator those functions use is not very well defined.  The point
    # of these assertions is to check the results of the use of specific
    # operators (precisely to ensure that using different permutations
    # (eg "x == y" or "not (x != y)") which should yield the same results
    # actually does yield the same result). -exarkun
    self.assertTrue(firstValueOne == firstValueOne)
    self.assertTrue(firstValueOne == secondValueOne)
    self.assertFalse(firstValueOne == valueTwo)
    self.assertFalse(firstValueOne != firstValueOne)
    self.assertFalse(firstValueOne != secondValueOne)
    self.assertTrue(firstValueOne != valueTwo)
    self.assertTrue(firstValueOne == _Equal())
    self.assertFalse(firstValueOne != _Equal())
    self.assertFalse(firstValueOne == _NotEqual())
    self.assertTrue(firstValueOne != _NotEqual())