public function notifyObservers()
 {
     for ($i = 0; $i < $this->observers->size(); $i++) {
         $observer = $this->observers->get($i);
         $observer->update($this->temperature, $this->humidity, $this->pressure);
     }
 }
예제 #2
0
 public function testUpdateElementCheckChanged()
 {
     $list = new ArrayList("SomePojo");
     $list->add(new SomePojo(5));
     $list->add(new SomePojo(8));
     $list->get(1)->setField(7);
     $this->assertEqual(5, $list->get(0)->getField());
     $this->assertEqual(7, $list->get(1)->getField());
 }
예제 #3
0
 function testSortObjectsComparator()
 {
     $oList = new ArrayList("SampleSortableObject");
     $oList->add(new SampleSortableObject(new String("b")));
     $oList->add(new SampleSortableObject(new String("a")));
     $oList->add(new SampleSortableObject(new String("c")));
     $oList->sort(new SampleSortableObjectComparator());
     $this->assertEqual(new String("c"), $oList->get(0)->getField());
     $this->assertEqual(new String("b"), $oList->get(1)->getField());
     $this->assertEqual(new String("a"), $oList->get(2)->getField());
 }
예제 #4
0
 public function testSet()
 {
     // Remove the following lines when you implement this test.
     $this->assertTrue($this->object->set(2, 69)->toNative() == 2);
     $this->assertTrue($this->object->get(2)->toNative() == 69);
     $this->assertTrue($this->object->indexOf(69) == 2);
 }
예제 #5
0
 /**
  * Se este objeto foi alterado, como indicado pelo método hasChanged, em seguida, 
  * notificar todos os seus observadores e, em seguida, chamar o método clearChanged 
  * para indicar que este objeto não mudou.
  * @param \Prime\util\Object $arg
  */
 public function notifyObservers()
 {
     for ($index = 0; $index < count($this->observers->size()); $index++) {
         $observer = $this->observers->get($index);
         /* @var $observer IObserver */
         $observer->update($this);
     }
     $this->clearChanged();
 }
예제 #6
0
 /**
  * This method tests the add and the get method
  * of the ArrayList.
  *
  * @return void
  */
 public function testAddAndGetAndIsEmptyAndClear()
 {
     // initialize a new ArrayList
     $list = new ArrayList();
     // check that the ArrayList is empty
     $this->assertTrue($list->isEmpty());
     // add a new element
     $list->add("Test");
     // get the element
     $this->assertEquals("Test", $list->get(0));
     // check that the ArrayList is not empty
     $this->assertFalse($list->isEmpty());
     // remove all elements
     $list->clear();
     // check that the ArrayList is empty
     $this->assertTrue($list->isEmpty());
 }
예제 #7
0
 public function calculate($infix)
 {
     $postfix = new ArrayList();
     $stack = new ArrayList();
     $i = 0;
     $temp = "";
     $type = $this->getType($infix[0]);
     $lasttype = TType::OPERATION;
     $infix = trim($infix);
     while ($i < strlen($infix)) {
         $type = $this->getType($infix[$i]);
         $temp = "";
         //Get Token name
         while ($type == $this->getType($infix[$i])) {
             $temp .= $infix[$i];
             $i++;
             if ($i == strlen($infix) || $type == TType::OPERATION || $infix[$i - 1] == '(') {
                 break;
             }
         }
         //Negatives Vorzeichen zu -1* umgeschrieben (Bsp.: -3 => (-1)*3
         if ($lasttype == TType::OPERATION && $type == TType::OPERATION) {
             if ($temp == '-') {
                 $postfix->add(new Token("-1", TType::NUMBER));
                 $temp = "*";
             } else {
                 $postfix->add(new Token("1", TType::NUMBER));
                 $temp = "*";
             }
         }
         //Fehlender Operator vor Funktionen wird ergänzt
         if ($type == TType::NUMBER && $lasttype == TType::FUNC || $type == TType::FUNC && $lasttype == TType::NUMBER) {
             $i -= strlen($temp);
             $type = TType::OPERATION;
             $temp = "*";
         }
         //Add Token to Tokenlist
         switch ($type) {
             case TType::NUMBER:
                 $postfix->add(new Token($temp, $type));
                 break;
             case TType::OPERATION:
                 for ($j = $stack->size() - 1; $j > -1; $j--) {
                     if ($this->getValue($temp) > $this->getValue($stack->get($j))) {
                         $stack->add($temp);
                         break;
                     } else {
                         $postfix->add(new Token($stack->get($j), TType::OPERATION));
                         $stack->remove($j);
                     }
                 }
                 if ($stack->size() == 0) {
                     $stack->add($temp);
                 }
                 break;
             case TType::FUNC:
                 if (in_array($temp, $this->availableFunc)) {
                     $func = new FunctionC($temp);
                     $sub = substr($infix, $i);
                     $pos = $this->getLastBracket($sub);
                     $sub = substr($sub, 0, $pos);
                     while (strpos($sub, ',') !== false) {
                         $pos2 = strpos($sub, ',');
                         if (strlen($func->term) === false && $temp == "integral(") {
                             $func->term = substr($sub, 0, $pos2);
                         } else {
                             $func->parameters->add($this->calculate(substr($sub, 0, $pos2)));
                         }
                         $sub = substr($sub, $pos2 + 1);
                     }
                     $func->parameters->add($this->calculate($sub));
                     $i += $pos + 1;
                     $postfix->add(new Token(strval($func->calculate()), TType::NUMBER));
                     $type = TType::NUMBER;
                 }
                 if ($this->variable->size() != 0) {
                     foreach ($this->variable->arrayList as $v) {
                         if ($temp == $v->name) {
                             $postfix->add(new Token(strval($v->wert), TType::NUMBER));
                             $temp = "";
                             $type = TType::NUMBER;
                         }
                     }
                 }
                 break;
         }
         $lasttype = $type;
     }
     //Add operation stack to postfix
     for ($j = $stack->size() - 1; $j > -1; $j--) {
         $postfix->add(new Token($stack->get($j), TType::OPERATION));
         $stack->remove($j);
     }
     //Calculate postfix--> result
     /* Lese alle Tokens der postfix Liste nacheinander ein.
      * Schreibe alle Zahlen in einen Stack, wird eine Operation gelesen, so führe die Operation mit den letzten
      * beiden hinzugefügten Zahlen aus, lösche die beiden Zahlen und ersetze sie mit ihrem Ergebnis
      */
     $result = 0.0;
     for ($i = 0; $i < $postfix->size(); $i++) {
         switch ($postfix->get($i)->type) {
             case TType::NUMBER:
                 $stack->add($postfix->get($i)->name);
                 break;
             case TType::OPERATION:
                 switch ($postfix->get($i)->name) {
                     case "+":
                         $result = doubleval($stack->get($stack->size() - 2)) + doubleval($stack->get($stack->size() - 1));
                         break;
                     case "-":
                         $result = doubleval($stack->get($stack->size() - 2)) - doubleval($stack->get($stack->size() - 1));
                         break;
                     case "*":
                         $result = doubleval($stack->get($stack->size() - 2)) * doubleval($stack->get($stack->size() - 1));
                         break;
                     case "/":
                         $result = doubleval($stack->get($stack->size() - 2)) / doubleval($stack->get($stack->size() - 1));
                         break;
                     case "%":
                         $result = doubleval($stack->get($stack->size() - 2)) % doubleval($stack->get($stack->size() - 1));
                         break;
                     case "^":
                         $result = pow(doubleval($stack->get($stack->size() - 2)), doubleval($stack->get($stack->size() - 1)));
                         break;
                 }
                 $stack->remove($stack->size() - 2);
                 $stack->remove($stack->size() - 1);
                 $stack->add(strval($result));
                 break;
         }
     }
     return doubleval($stack->get(0));
 }
 public function next()
 {
     $object = $this->items->get($this->position);
     $this->position = $this->position + 1;
     return $object;
 }
 public function getChild($i)
 {
     return $this->menuComponents->get($i);
 }