--- /dev/null
+/* Contributed by Nicola Pero - Fri Jun 4 03:16:17 BST 2004 */
+/* Test that a protocol is equal to itself. */
+#include <objc/Protocol.h>
+
+@protocol Foo
+- (void)foo;
+@end
+
+int main (void)
+{
+ Protocol *protocol = @protocol(Foo);
+
+ if (! [protocol isEqual: protocol])
+ {
+ abort ();
+ }
+
+ return 0;
+}
+
--- /dev/null
+/* Contributed by Nicola Pero - Fri Jun 4 03:16:17 BST 2004 */
+/* Test that protocols with different names are different. */
+#include <objc/Protocol.h>
+
+@protocol Foo1
+- (void)foo1;
+@end
+
+@protocol Foo2
+- (void)foo2;
+@end
+
+int main (void)
+{
+ if ([@protocol(Foo1) isEqual: @protocol(Foo2)])
+ {
+ abort ();
+ }
+
+ return 0;
+}
+
--- /dev/null
+/* Contributed by Nicola Pero - Fri Jun 4 03:16:17 BST 2004 */
+/* Test that a protocol is not equal to nil. */
+#include <objc/Protocol.h>
+
+@protocol Foo
+- (void)foo;
+@end
+
+int main (void)
+{
+ if ([@protocol(Foo) isEqual: nil])
+ {
+ abort ();
+ }
+
+ return 0;
+}
+
--- /dev/null
+/* Contributed by David Ayers - Fri Jun 4 03:16:17 BST 2004 */
+/* Test that a protocol is not equal to something which is not a protocol. */
+#include <objc/Protocol.h>
+
+@protocol Foo
+- (void)foo;
+@end
+
+int main (void)
+{
+ /* A Protocol object should not be equal to a Class object. */
+ if ([@protocol(Foo) isEqual: [Protocol class]])
+ {
+ abort ();
+ }
+
+ return 0;
+}
+