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