Subject: GstObject Areas to test ============= Creation Refcounting Destruction Flags Locking Parentage Path string Tests ===== Creation -------- Create an object Does it return !NULL GST_IS_OBJECT() ? Refcounting ----------- Create new object object->refcount == 1, GTK_OBJECT_FLOATING(object) == TRUE Increment refcount object->refcount == 2 Sink object object->refcount == 1, GTK_OBJECT_FLOATING(object) == FALSE Increment refcount object->refcount == 2 Decrement refcount object->refcount == 1 Destruction ----------- ??? Flags (start with new object) ----- Create new object Verify that all flags are unset Set a flag Verify it's set Unset a flag Verify it's not set Locking (start with new object) ------- Lock an object Try to lock, get false Parentage (start with new object, check refcount == 1) --------- gst_object_set_parent: (start with new parent object) Pass NULL... Pass !NULL, but not Object... Pass NULL parent... Pass !NULL parent, but not Object... Pass valid Object, and parent == object object->refcount == 1 GTK_OBJECT_FLOATING(object) == TRUE object->parent == NULL Pass valid Object object->refcount == 1 GTK_OBJECT_FLOATING(object) == FALSE object->parent == parent The "parent_set" signal should fire with the object and parent as args Pass Object with parent already set object->parent should not equal new parent object->refcount == 1 gst_object_get_parent: Pass NULL... Pass !NULL, not Object... Pass valid object with no parent Get NULL Pass valid object with parent Get parent pointer gst_object_unparent: Pass NULL, with no parent no effect Pass !NULL, not Object, NULL parent pointer not mangled Pass valid object, with no parent object->parent == NULL object->refcount = 1 Pass NULL, with valid parent no effect Pass !NULL, not Object, with valid object as parent pointer not mangled Pass valid object, with valid parent object->parent == NULL object->refcount == 0