Ver Fonte

[GENERIC] Zend_Validate_InArray:

- added missing unittests
- better description of usage

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@18438 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas há 16 anos atrás
pai
commit
470d984450

+ 37 - 3
documentation/manual/en/module_specs/Zend_Validate-InArray.xml

@@ -39,7 +39,8 @@ if ($validator->isValid('value')) {
 
         <para>
             Of course you can give the array to validate against also afterwards by using the
-            <methodname>setHaystack()</methodname> method.
+            <methodname>setHaystack()</methodname> method. <methodname>getHaystack()</methodname>
+            returns the actual set haystack array.
         </para>
 
         <programlisting language="php"><![CDATA[
@@ -92,7 +93,8 @@ if ($validator->isValid('value')) {
 
         <para>
             Of course you can also use the <methodname>setStrict()</methodname> method to change
-            this setting afterwards.
+            this setting afterwards and <methodname>getStrict()</methodname> to get the actual set
+            state.
         </para>
 
         <note>
@@ -137,11 +139,43 @@ if ($validator->isValid('value')) {
 
         <para>
             Your array will then be validated recursive to see if the given value is contained.
+            Additionally you could use <methodname>setRecursive()</methodname> to set this option
+            afterwards and <methodname>getRecursive()</methodname> to retrieve it.
         </para>
 
+        <programlisting language="php"><![CDATA[
+$validator = new Zend_Validate_InArray(
+    array(
+        'firstDimension' => array('key' => 'value',
+                                  'otherkey' => 'othervalue'),
+        'secondDimension' => array('some' => 'real',
+                                   'different' => 'key')
+    )
+);
+$validator->setRecursive(true);
+
+if ($validator->isValid('value')) {
+    // value found
+} else {
+    // no value found
+}
+]]></programlisting>
+
+        <note>
+            <title>Default setting for recursion</title>
+
+            <para>
+                Per default the recursive validation is turned off.
+            </para>
+        </note>
+
         <note>
+            <title>Option keys within the haystack</title>
+
             <para>
-                Note that per default the recursive validation is turned off.
+                When you are using the keys '<property>haystack</property>',
+                '<property>strict</property>' or '<property>recursive</property>' within your
+                haystack, then you must wrap the <property>haystack</property> key.
             </para>
         </note>
     </sect3>

+ 111 - 1
tests/Zend/Validate/InArrayTest.php

@@ -89,6 +89,116 @@ class Zend_Validate_InArrayTest extends PHPUnit_Framework_TestCase
     public function testGetStrict()
     {
         $validator = new Zend_Validate_InArray(array(1, 2, 3));
-        $this->assertEquals(false, $validator->getStrict());
+        $this->assertFalse($validator->getStrict());
+    }
+
+    public function testGivingOptionsAsArrayAtInitiation()
+    {
+        $validator = new Zend_Validate_InArray(
+            array('haystack' =>
+                array(1, 'a', 2.3)
+            )
+        );
+        $this->assertTrue($validator->isValid(1));
+        $this->assertTrue($validator->isValid(1.0));
+        $this->assertTrue($validator->isValid('1'));
+        $this->assertTrue($validator->isValid('a'));
+        $this->assertFalse($validator->isValid('A'));
+        $this->assertTrue($validator->isValid(2.3));
+        $this->assertTrue($validator->isValid(2.3e0));
+    }
+
+    public function testSettingANewHaystack()
+    {
+        $validator = new Zend_Validate_InArray(
+            array('haystack' =>
+                array('test', 0, 'A')
+            )
+        );
+        $this->assertTrue($validator->isValid('A'));
+
+        $validator->setHaystack(array(1, 'a', 2.3));
+        $this->assertTrue($validator->isValid(1));
+        $this->assertTrue($validator->isValid(1.0));
+        $this->assertTrue($validator->isValid('1'));
+        $this->assertTrue($validator->isValid('a'));
+        $this->assertFalse($validator->isValid('A'));
+        $this->assertTrue($validator->isValid(2.3));
+        $this->assertTrue($validator->isValid(2.3e0));
+    }
+
+    public function testSettingNewStrictMode()
+    {
+        $validator = new Zend_Validate_InArray(array(1, 2, 3));
+        $this->assertFalse($validator->getStrict());
+        $this->assertTrue($validator->isValid('1'));
+        $this->assertTrue($validator->isValid(1));
+
+        $validator->setStrict(true);
+        $this->assertTrue($validator->getStrict());
+        $this->assertFalse($validator->isValid('1'));
+        $this->assertTrue($validator->isValid(1));
+    }
+
+    public function testSettingStrictViaInitiation()
+    {
+        $validator = new Zend_Validate_InArray(
+            array(
+                'haystack' => array('test', 0, 'A'),
+                'strict'   => true
+            )
+        );
+        $this->assertTrue($validator->getStrict());
+    }
+
+    public function testGettingRecursiveOption()
+    {
+        $validator = new Zend_Validate_InArray(array(1, 2, 3));
+        $this->assertFalse($validator->getRecursive());
+
+        $validator->setRecursive(true);
+        $this->assertTrue($validator->getRecursive());
+    }
+
+    public function testSettingRecursiveViaInitiation()
+    {
+        $validator = new Zend_Validate_InArray(
+            array(
+                'haystack'  => array('test', 0, 'A'),
+                'recursive' => true
+            )
+        );
+        $this->assertTrue($validator->getRecursive());
+    }
+
+    public function testRecursiveDetection()
+    {
+        $validator = new Zend_Validate_InArray(
+            array(
+                'haystack'  =>
+                    array(
+                        'firstDimension' => array('test', 0, 'A'),
+                        'secondDimension' => array('value', 2, 'a')),
+                'recursive' => false
+            )
+        );
+        $this->assertFalse($validator->isValid('A'));
+
+        $validator->setRecursive(true);
+        $this->assertTrue($validator->isValid('A'));
+    }
+
+    public function testRecursiveStandalone()
+    {
+        $validator = new Zend_Validate_InArray(
+            array(
+                'firstDimension' => array('test', 0, 'A'),
+                'secondDimension' => array('value', 2, 'a')
+            )
+        );
+        $this->assertFalse($validator->isValid('A'));
+
+        $validator->setRecursive(true);
+        $this->assertTrue($validator->isValid('A'));
     }
 }