1..144 # __construct ok 1 - __construct() creates an empty validator schema ok 2 - __construct() creates an empty widget form schema ok 3 - __construct() can take an array of default values as its first argument ok 4 - __construct() takes a CSRF secret as its second argument ok 5 - __construct() takes a CSRF secret as its second argument ok 6 - __construct() can disable the CSRF protection by passing false as the second argument ok 7 - __construct() uses CSRF protection if null is passed as the second argument and it's enabled globally # ->getOption() ->setOption() ok 8 - __construct takes an option array as its second argument ok 9 - ->setOption() changes the value of an option # ->setDefault() ->getDefault() ->hasDefault() ->setDefaults() ->getDefaults() ok 10 - setDefaults() sets the form default values ok 11 - setDefault() sets a default value ok 12 - hasDefault() returns true if the form has a default value for the given field ok 13 - hasDefault() returns false if the form does not have a default value for the given field ok 14 - getDefault() returns a default value for a given field ok 15 - getDefault() returns null if the form does not have a default value for a given field ok 16 - ->getDefaults() keeps the CSRF token default value # ->getName() ok 17 - ->getName() returns null if the name format is not an array ok 18 - ->getName() returns the name under which user data can be retrieved # ::enableCSRFProtection() ::disableCSRFProtection() ok 19 - ::enableCSRFProtection() enabled CSRF protection for all future forms ok 20 - ::disableCSRFProtection() disables CSRF protection for all future forms ok 21 - ::enableCSRFProtection() enabled CSRF protection for all future forms ok 22 - ::disableCSRFProtection() disables CSRF protection for all future forms ok 23 - ->isCSRFProtected() returns true if the form is CSRF protected ok 24 - ::enableCSRFProtection() can take a secret argument # ::getCSRFFieldName() ::setCSRFFieldName() ok 25 - ::setCSRFFieldName() changes the CSRF token field name ok 26 - ::getCSRFFieldName() returns the CSRF token field name # ->isMultipart() ok 27 - ->isMultipart() returns false if the form does not need a multipart form ok 28 - ->isMultipart() returns true if the form needs a multipart form # ->setValidators() ->setValidatorSchema() ->getValidatorSchema() ->setValidator() ->getValidator() ok 29 - ->setValidatorSchema() sets the current validator schema ok 30 - ->setValidators() sets field validators ok 31 - ->setValidators() sets field validators ok 32 - ->setValidator() sets a validator for a field # ->setWidgets() ->setWidgetSchema() ->getWidgetSchema() ok 33 - ->setWidgetSchema() sets the current widget schema ok 34 - ->setWidgets() sets field widgets ok 35 - ->setWidgets() sets field widgets ok 36 - ->setWidget() sets a widget for a field # ArrayAccess interface ok 37 - sfForm implements the ArrayAccess interface ok 38 - sfForm implements the ArrayAccess interface ok 39 - sfForm ArrayAccess implementation does not permit to set a form field ok 40 - sfForm implements the ArrayAccess interface ok 41 - sfForm implements the ArrayAccess interface ok 42 - sfForm ArrayAccess implementation removes form defaults ok 43 - sfForm ArrayAccess implementation removes the widget and the validator ok 44 - sfForm ArrayAccess implementation removes the widget and the validator ok 45 - sfForm ArrayAccess implementation throws a LogicException if the form field does not exist ok 46 - sfForm ArrayAccess implementation removes embedded forms ok 47 - sfForm ArrayAccess implementation removes bound values ok 48 - sfForm ArrayAccess implementation removes tainted values # Countable interface ok 49 - sfForm implements the Countable interface # Iterator interface ok 50 - sfForm implements the Iterator interface ok 51 - sfForm implements the Iterator interface ok 52 - sfForm implements the Iterator interface # ->bind() ->isValid() ->getValues() ->isBound() ->getErrorSchema() ok 53 - ->isBound() returns false if the form is not bound ok 54 - ->getValues() returns an empty array if the form is not bound ok 55 - ->isValid() returns false if the form is not bound ok 56 - ->hasErrors() returns false if the form is not bound ok 57 - ->getValue() returns null if the form is not bound ok 58 - ->isBound() returns true if the form is bound ok 59 - ->getValues() returns an array of cleaned values if the form is bound ok 60 - ->isValid() returns true if the form passes the validation ok 61 - ->hasErrors() returns false if the form passes the validation ok 62 - ->getValue() returns the cleaned value for a field name if the form is bound ok 63 - ->getValue() returns null when non-existant param is requested ok 64 - ->isValid() returns false if the form does not pass the validation ok 65 - ->isValid() returns true if the form does not pass the validation ok 66 - ->getValues() returns an empty array if the form does not pass the validation ok 67 - ->getErrorSchema() returns an error schema object with all errors # bind when field names are numeric ok 68 - ->bind() behaves correctly when field names are numeric # bind with files ok 69 - ->bind() behaves correctly with files ok 70 - ->bind() second argument is mandatory if the form is multipart # bind with files in embed form ok 71 - ->bind() behaves correctly with files in embed form # ->renderGlobalErrors() ok 72 - ->renderGlobalErrors() renders global errors as an HTML list # ->render() ok 73 - ->__toString() renders the form as HTML ok 74 - ->render() renders the form as HTML ok 75 - ->offsetGet() returns a sfFormField ok 76 - ->offsetGet() returns a sfFormField ok 77 - ->offsetGet() returns a sfFormField ok 78 - ->__toString() renders the form as HTML ok 79 - ->render() renders the form as HTML ok 80 - ->offsetGet() returns a sfFormField ok 81 - ->offsetGet() returns a sfFormField ok 82 - ->offsetGet() returns a sfFormField # ->renderUsing() ok 83 - renderUsing() renders the widget schema using the given form formatter ok 84 - renderUsing() does not persist form formatter name for the current form instance ok 85 - renderUsing() renders a custom form formatter ok 86 - renderUsing() throws an exception if formatter name does not exist # ->renderHiddenFields() ok 87 - renderHiddenFields() renders all hidden fields, no visible fields ok 88 - renderHiddenFields() does not modify the form fields # ->embedForm() ok 89 - ->embedForm() embeds the validator schema ok 90 - ->embedForm() embeds the widget schema ok 91 - ->embedForm() merges default values from the embedded form ok 92 - ->embedForm() removes the CSRF token for the embedded form ok 93 - ->embedForm() removes the CSRF token for the embedded form ok 94 - ->embedForm() changes the name format to reflect the embedding ok 95 - ->embedForm() changes the name format to reflect the embedding ok 96 - ->embedForm() generates a correct id in embedded form fields ok 97 - ->embedForm() generates a correct label id correctly in embedded form fields ok 98 - ->embedForm() generates a correct id in embedded form fields ok 99 - ->embedForm() generates a correct label id correctly in embedded form fields # ->embedFormForEach() ok 100 - ->embedFormForEach() embeds the validator schema ok 101 - ->embedFormForEach() embeds the widget schema ok 102 - ->embedFormForEach() merges default values from the embedded forms ok 103 - ->embedFormForEach() removes the CSRF token for the embedded forms ok 104 - ->embedFormForEach() removes the CSRF token for the embedded forms ok 105 - ->embedFormForEach() embeds the validator schema ok 106 - ->embedFormForEach() embeds the widget schema ok 107 - ->embedFormForEach() merges default values from the embedded forms ok 108 - ->embedFormForEach() removes the CSRF token for the embedded forms ok 109 - ->embedFormForEach() removes the CSRF token for the embedded forms ok 110 - ->embedFormForEach() changes the name format to reflect the embedding # bind too many values for embedded forms ok 111 - sfFormFieldSchema is given an error schema when an extra embedded form is bound ok 112 - sfFormFieldSchema renders when an extra embedded form is bound # ->getEmbeddedForms() ok 113 - ->getEmbeddedForms() returns the embedded forms ok 114 - ->getEmbeddedForms() returns the embedded forms # ::convertFileInformation() ok 115 - ::convertFileInformation() converts $_FILES to be coherent with $_GET and $_POST naming convention ok 116 - ::convertFileInformation() converts $_FILES to be coherent with $_GET and $_POST naming convention ok 117 - ::convertFileInformation() only changes the input array if needed ok 118 - ::convertFileInformation() converts $_FILES to be coherent with $_GET and $_POST naming convention ok 119 - ::convertFileInformation() converts $_FILES to be coherent with $_GET and $_POST naming convention # ->renderFormTag() ok 120 - ->renderFormTag() renders the form tag ok 121 - ->renderFormTag() adds a hidden input tag if the method is not GET or POST ok 122 - ->renderFormTag() adds the enctype attribute if the form is multipart # __clone() ok 123 - __clone() clones the validator schema ok 124 - __clone() clones the validator schema ok 125 - __clone() clones the widget schema ok 126 - __clone() clones the widget schema ok 127 - __clone() clones the error schema ok 128 - __clone() clones the error schema # mergeForm() ok 129 - mergeForm() merges a widget form schema ok 130 - mergeForm() merges a validator schema ok 131 - mergeForms() merges the correct widgets ok 132 - mergeForms() merges the correct validators ok 133 - mergeForm() merges labels correctly ok 134 - mergeForm() merges helps correctly ok 135 - mergeForm() overrides original form widget ok 136 - mergeForm() overrides original form validator ok 137 - mergeForm() merges pre validator ok 138 - mergeForm() merges post validator ok 139 - mergeForm() disallows merging already bound forms ok 140 - mergeForm() merges errors after having been bound ok 141 - iterating on form takes in account ->moveField() operations. ok 142 - mergeForm() merges fields in the correct order # ->getJavaScripts() ->getStylesheets() ok 143 - ->getJavaScripts() returns the stylesheets of all widgets ok 144 - ->getStylesheets() returns the JavaScripts of all widgets Looks like everything went fine.