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