1<?php 2 3/** 4 * Hoa 5 * 6 * 7 * @license 8 * 9 * New BSD License 10 * 11 * Copyright © 2007-2017, Hoa community. All rights reserved. 12 * 13 * Redistribution and use in source and binary forms, with or without 14 * modification, are permitted provided that the following conditions are met: 15 * * Redistributions of source code must retain the above copyright 16 * notice, this list of conditions and the following disclaimer. 17 * * Redistributions in binary form must reproduce the above copyright 18 * notice, this list of conditions and the following disclaimer in the 19 * documentation and/or other materials provided with the distribution. 20 * * Neither the name of the Hoa nor the names of its contributors may be 21 * used to endorse or promote products derived from this software without 22 * specific prior written permission. 23 * 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE 28 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 29 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 30 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 32 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 33 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34 * POSSIBILITY OF SUCH DAMAGE. 35 */ 36 37namespace Hoa\Event\Test\Unit; 38 39use Hoa\Event as LUT; 40use Hoa\Event\Bucket as SUT; 41use Hoa\Test; 42 43/** 44 * Class \Hoa\Event\Test\Unit\Bucket. 45 * 46 * Test suite of the bucket. 47 * 48 * @copyright Copyright © 2007-2017 Hoa community 49 * @license New BSD License 50 */ 51class Bucket extends Test\Unit\Suite 52{ 53 public function case_constructor() 54 { 55 $this 56 ->when($result = new SUT('foo')) 57 ->then 58 ->object($result) 59 ->isInstanceOf('Hoa\Event\Bucket') 60 ->string($result->getData()) 61 ->isEqualTo('foo'); 62 } 63 64 public function case_send() 65 { 66 $self = $this; 67 68 $this 69 ->given( 70 $eventId = 'hoa://Event/Test', 71 $source = new \Mock\Hoa\Event\Source(), 72 LUT::register($eventId, $source), 73 74 $bucket = new SUT('foo'), 75 76 LUT::getEvent($eventId)->attach( 77 function (SUT $receivedBucket) use ($self, $bucket, &$called) { 78 $called = true; 79 80 $self 81 ->object($receivedBucket) 82 ->isIdenticalTo($bucket); 83 } 84 ) 85 ) 86 ->when($result = $bucket->send($eventId, $source)) 87 ->then 88 ->variable($result) 89 ->isNull() 90 ->boolean($called) 91 ->isTrue(); 92 } 93 94 public function case_set_source() 95 { 96 $this 97 ->given( 98 $bucket = new SUT(), 99 $sourceA = new \Mock\Hoa\Event\Source() 100 ) 101 ->when($result = $bucket->setSource($sourceA)) 102 ->then 103 ->variable($result) 104 ->isNull() 105 ->object($bucket->getSource()) 106 ->isIdenticalTo($sourceA) 107 108 ->given($sourceB = new \Mock\Hoa\Event\Source()) 109 ->when($result = $bucket->setSource($sourceB)) 110 ->then 111 ->object($result) 112 ->isIdenticalTo($sourceA) 113 ->object($bucket->getSource()) 114 ->isIdenticalTo($sourceB); 115 } 116 117 public function case_set_data() 118 { 119 $this 120 ->given( 121 $bucket = new SUT(), 122 $datumA = 'foo' 123 ) 124 ->when($result = $bucket->setData($datumA)) 125 ->then 126 ->variable($result) 127 ->isNull() 128 ->string($bucket->getData()) 129 ->isEqualTo($datumA) 130 131 ->given($datumB = 'bar') 132 ->when($result = $bucket->setData($datumB)) 133 ->then 134 ->string($result) 135 ->isEqualTo($datumA) 136 ->string($bucket->getData()) 137 ->isEqualTo($datumB); 138 } 139} 140