Beispiel #1
0
 public function testWootDocument()
 {
     $alice = new WootDocument(self::$SITE_ID, 'Alice');
     $bob = new WootDocument(self::$SITE_ID + 1, 'Bob');
     $carol = new WootDocument(self::$SITE_ID + 2, 'Carol');
     function doMessageLoops($clients)
     {
         foreach ($clients as $client) {
             while ($client->hasMessages()) {
                 $client->doMessageLoop();
             }
         }
     }
     $msgsABC = $alice->generateInsertMessagesFromString('abc', 0);
     $this->assertEquals('abc', $alice->value());
     $bob->addMessages($msgsABC);
     $carol->addMessages($msgsABC);
     doMessageLoops(array($alice, $bob, $carol));
     $this->assertThreequals($alice->value(), $bob->value(), $carol->value());
     $msgX = $bob->generateInsertMessage('x', 0);
     $msgY = $alice->generateInsertMessage('y', 1);
     $this->assertEquals('xabc', $bob->value());
     $this->assertEquals('aybc', $alice->value());
     $msgsDel = $carol->generateDeleteMessages(0, 2, true);
     $this->assertEquals('c', $carol->value());
     $bob->addMessages($msgsDel);
     $alice->addMessages($msgsDel);
     $bob->addMessage($msgY);
     $alice->addMessage($msgX);
     $carol->addMessages(array($msgX, $msgY));
     doMessageLoops(array($alice, $bob, $carol));
     $this->assertThreequals($alice->value(), $bob->value(), $carol->value());
 }