form_test.php

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· PHP 代码 · 共 323 行 · 第 1/2 页

PHP
323
字号
<?php
// $Id: form_test.php 1624 2008-01-01 15:00:43Z pp11 $
require_once(dirname(__FILE__) . '/../autorun.php');
require_once(dirname(__FILE__) . '/../url.php');
require_once(dirname(__FILE__) . '/../form.php');
require_once(dirname(__FILE__) . '/../page.php');
require_once(dirname(__FILE__) . '/../encoding.php');
Mock::generate('SimplePage');

class TestOfForm extends UnitTestCase {
    
    function &page($url, $action = false) {
        $page = &new MockSimplePage();
        $page->setReturnValue('getUrl', new SimpleUrl($url));
        $page->setReturnValue('expandUrl', new SimpleUrl($url));
        return $page;
    }
    
    function testFormAttributes() {
        $tag = &new SimpleFormTag(array('method' => 'GET', 'action' => 'here.php', 'id' => '33'));
        $form = &new SimpleForm($tag, $this->page('http://host/a/index.html'));
        $this->assertEqual($form->getMethod(), 'get');
        $this->assertIdentical($form->getId(), '33');
        $this->assertNull($form->getValue(new SimpleByName('a')));
    }
    
    function testAction() {
        $page = &new MockSimplePage();
        $page->expectOnce('expandUrl', array(new SimpleUrl('here.php')));
        $page->setReturnValue('expandUrl', new SimpleUrl('http://host/here.php'));
        $tag = &new SimpleFormTag(array('method' => 'GET', 'action' => 'here.php'));
        $form = &new SimpleForm($tag, $page);
        $this->assertEqual($form->getAction(), new SimpleUrl('http://host/here.php'));
    }
    
    function testEmptyAction() {
        $tag = &new SimpleFormTag(array('method' => 'GET', 'action' => '', 'id' => '33'));
        $form = &new SimpleForm($tag, $this->page('http://host/a/index.html'));
        $this->assertEqual(
                $form->getAction(),
                new SimpleUrl('http://host/a/index.html'));
    }
    
    function testMissingAction() {
        $tag = &new SimpleFormTag(array('method' => 'GET'));
        $form = &new SimpleForm($tag, $this->page('http://host/a/index.html'));
        $this->assertEqual(
                $form->getAction(),
                new SimpleUrl('http://host/a/index.html'));
    }
    
    function testRootAction() {
        $page = &new MockSimplePage();
        $page->expectOnce('expandUrl', array(new SimpleUrl('/')));
        $page->setReturnValue('expandUrl', new SimpleUrl('http://host/'));
        $tag = &new SimpleFormTag(array('method' => 'GET', 'action' => '/'));
        $form = &new SimpleForm($tag, $page);
        $this->assertEqual(
                $form->getAction(),
                new SimpleUrl('http://host/'));
    }
    
    function testDefaultFrameTargetOnForm() {
        $page = &new MockSimplePage();
        $page->expectOnce('expandUrl', array(new SimpleUrl('here.php')));
        $page->setReturnValue('expandUrl', new SimpleUrl('http://host/here.php'));
        $tag = &new SimpleFormTag(array('method' => 'GET', 'action' => 'here.php'));
        $form = &new SimpleForm($tag, $page);
        $form->setDefaultTarget('frame');
        $expected = new SimpleUrl('http://host/here.php');
        $expected->setTarget('frame');
        $this->assertEqual($form->getAction(), $expected);
    }
    
    function testTextWidget() {
        $form = &new SimpleForm(new SimpleFormTag(array()), $this->page('htp://host'));
        $form->addWidget(new SimpleTextTag(
                array('name' => 'me', 'type' => 'text', 'value' => 'Myself')));
        $this->assertIdentical($form->getValue(new SimpleByName('me')), 'Myself');
        $this->assertTrue($form->setField(new SimpleByName('me'), 'Not me'));
        $this->assertFalse($form->setField(new SimpleByName('not_present'), 'Not me'));
        $this->assertIdentical($form->getValue(new SimpleByName('me')), 'Not me');
        $this->assertNull($form->getValue(new SimpleByName('not_present')));
    }
    
    function testTextWidgetById() {
        $form = &new SimpleForm(new SimpleFormTag(array()), $this->page('htp://host'));
        $form->addWidget(new SimpleTextTag(
                array('name' => 'me', 'type' => 'text', 'value' => 'Myself', 'id' => 50)));
        $this->assertIdentical($form->getValue(new SimpleById(50)), 'Myself');
        $this->assertTrue($form->setField(new SimpleById(50), 'Not me'));
        $this->assertIdentical($form->getValue(new SimpleById(50)), 'Not me');
    }
    
    function testTextWidgetByLabel() {
        $form = &new SimpleForm(new SimpleFormTag(array()), $this->page('htp://host'));
        $widget = &new SimpleTextTag(array('name' => 'me', 'type' => 'text', 'value' => 'a'));
        $form->addWidget($widget);
        $widget->setLabel('thing');
        $this->assertIdentical($form->getValue(new SimpleByLabel('thing')), 'a');
        $this->assertTrue($form->setField(new SimpleByLabel('thing'), 'b'));
        $this->assertIdentical($form->getValue(new SimpleByLabel('thing')), 'b');
    }
    
    function testSubmitEmpty() {
        $form = &new SimpleForm(new SimpleFormTag(array()), $this->page('htp://host'));
        $this->assertIdentical($form->submit(), new SimpleGetEncoding());
    }
    
    function testSubmitButton() {
        $form = &new SimpleForm(new SimpleFormTag(array()), $this->page('http://host'));
        $form->addWidget(new SimpleSubmitTag(
                array('type' => 'submit', 'name' => 'go', 'value' => 'Go!', 'id' => '9')));
        $this->assertTrue($form->hasSubmit(new SimpleByName('go')));
        $this->assertEqual($form->getValue(new SimpleByName('go')), 'Go!');
        $this->assertEqual($form->getValue(new SimpleById(9)), 'Go!');
        $this->assertEqual(
                $form->submitButton(new SimpleByName('go')),
                new SimpleGetEncoding(array('go' => 'Go!')));            
        $this->assertEqual(
                $form->submitButton(new SimpleByLabel('Go!')),
                new SimpleGetEncoding(array('go' => 'Go!')));
        $this->assertEqual(
                $form->submitButton(new SimpleById(9)),
                new SimpleGetEncoding(array('go' => 'Go!')));            
    }
    
    function testSubmitWithAdditionalParameters() {
        $form = &new SimpleForm(new SimpleFormTag(array()), $this->page('http://host'));
        $form->addWidget(new SimpleSubmitTag(
                array('type' => 'submit', 'name' => 'go', 'value' => 'Go!')));
        $this->assertEqual(
                $form->submitButton(new SimpleByLabel('Go!'), array('a' => 'A')),
                new SimpleGetEncoding(array('go' => 'Go!', 'a' => 'A')));            
    }
    
    function testSubmitButtonWithLabelOfSubmit() {
        $form = &new SimpleForm(new SimpleFormTag(array()), $this->page('http://host'));
        $form->addWidget(new SimpleSubmitTag(
                array('type' => 'submit', 'name' => 'test', 'value' => 'Submit')));
        $this->assertEqual(
                $form->submitButton(new SimpleByName('test')),
                new SimpleGetEncoding(array('test' => 'Submit')));            
        $this->assertEqual(
                $form->submitButton(new SimpleByLabel('Submit')),
                new SimpleGetEncoding(array('test' => 'Submit')));            
    }
    
    function testSubmitButtonWithWhitespacePaddedLabelOfSubmit() {
        $form = &new SimpleForm(new SimpleFormTag(array()), $this->page('http://host'));
        $form->addWidget(new SimpleSubmitTag(
                array('type' => 'submit', 'name' => 'test', 'value' => ' Submit ')));
        $this->assertEqual(
                $form->submitButton(new SimpleByLabel('Submit')),
                new SimpleGetEncoding(array('test' => ' Submit ')));            
    }
    
    function testImageSubmitButton() {
        $form = &new SimpleForm(new SimpleFormTag(array()),  $this->page('htp://host'));
        $form->addWidget(new SimpleImageSubmitTag(array(
                'type' => 'image',
                'src' => 'source.jpg',

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?