| Construction |
| Validation |
| Testing |
| |
| Construction will generate some state |
| Validation will ensure that everything is kosher |
| Tests use combinations of the above to check things |
| |
| ##### Example: |
| parent = gst_object_get_parent(object); |
| |
| setup: |
| create: new object |
| action: object = gst_object_new(); |
| validation: object != NULL, object->parent == NULL, etc |
| [cleanup: gst_object_destroy(object);] |
| create: new parent |
| action: parent = gst_object_new(); |
| validation: parent != NULL, parent->parent == NULL, etc |
| [cleanup: gst_object_destroy(parent);] |
| create: set object's parent |
| precondition: object->parent == NULL |
| action: gst_object_set_parent(object,parent); |
| validation: object->parent = parent |
| preconditions: |
| nothing |
| action: |
| curparent = gst_element_get_parent(object); |
| validation: |
| curparent == object->parent |
| curparent == parent |
| cleanup: |
| nothing |
| |
| |
| ##### Resulting code: |
| |
| ///// setup |
| // new object |
| object = gst_object_new(); |
| ASSERT(object != NULL); |
| ASSERT(object->parent == NULL); |
| // new object |
| parent = gst_object_new(); |
| ASSERT(parent != NULL); |
| ASSERT(parent->parent == NULL); |
| // set object parent |
| ASSERT(object->parent == NULL); |
| gst_object_set_parent(object,parent); |
| ASSERT(object->parent != NULL); |
| |
| ///// preconditions |
| |
| ///// action |
| curparent = gst_element_get_parent(object); |
| |
| ///// validation |
| ASSERT(object->parent == parent); |
| |
| ///// cleanup |
| gst_object_destroy(parent); |
| gst_object_destroy(object); |
| |
| |
| |
| ##### XML descriptions |
| |
| <construct name="new object"> |
| <variable> |
| GstObject *object; |
| </variabls> |
| <action> |
| object = gst_object_new(); |
| </action> |
| <validation> |
| <assert> |
| object != NULL |
| </assert> |
| <assert> |
| GST_IS_OBJECT(object) |
| <assert> |
| object->parent == NULL |
| </assert> |
| </validation> |
| <cleanup> |
| <validation> |
| <assert> |
| object != NULL |
| </assert> |
| <assert> |
| GST_IS_OBJECT(object) |
| </assert> |
| </validation> |
| <action> |
| gst_object_destroy(object); |
| </action> |
| </cleanup> |
| </construct> |
| |
| <construct name="set object parent"> |
| <variable> |
| GstObject *object; |
| </variable> |
| <variable> |
| GstObject *object; |
| </variable> |
| <precondition> |
| <assert> |
| object->parent == NULL |
| </assert> |
| </precondition> |
| <action> |
| gst_object_set_parent(object,parent); |
| </action> |
| <validation> |
| <assert> |
| object->parent == parent |
| </assert> |
| </validation> |
| </construct> |
| |
| <test name="set object parent"> |
| <variable> |
| GstObject *object; |
| <variable> |
| </variable> |
| GstObject *parent; |
| <variable> |
| </variable> |
| GstObject *curparent; |
| </variable> |
| <setup> |
| object = gst_object_new(); |
| parent = gst_object_new(); |
| gst_object_set_parent(object,parent); |
| </setup> |
| <action> |
| curparent = gst_element_get_parent(object); |
| </action> |
| <validation> |
| curparent == object->parent |
| curparent == parent |
| </validation> |
| </test> |