<?php /** * AnimeDb package. * * @author Peter Gribanov <*****@*****.**> * @copyright Copyright (c) 2011, 'Peter Gribanov */ use AnimeDb\SmartSleep\Rule\HolidayRule; use AnimeDb\SmartSleep\Rule\WeekdayRule; use AnimeDb\SmartSleep\RuleCollection; use AnimeDb\SmartSleep\ScheduleBuilder; use AnimeDb\SmartSleep\SmartSleep; require __DIR__ . '/../bootstrap.php'; echo 'Functional test: Build schedule.' . PHP_EOL; $schedule = [['rule' => 'weekday', 'start' => 0, 'end' => 2, 'seconds' => 600], ['rule' => 'weekday', 'start' => 1, 'end' => 7, 'seconds' => 800], ['rule' => 'weekday', 'start' => 7, 'end' => 10, 'seconds' => 100], ['rule' => 'weekday', 'start' => 10, 'end' => 19, 'seconds' => 160], ['rule' => 'weekday', 'start' => 19, 'end' => 22, 'seconds' => 70], ['rule' => 'weekday', 'start' => 22, 'end' => 24, 'seconds' => 260], ['rule' => 'holiday', 'start' => 0, 'end' => 3, 'seconds' => 260], ['rule' => 'holiday', 'start' => 3, 'end' => 9, 'seconds' => 900], ['rule' => 'holiday', 'start' => 9, 'end' => 19, 'seconds' => 160], ['rule' => 'holiday', 'start' => 19, 'end' => 23, 'seconds' => 70], ['rule' => 'holiday', 'start' => 23, 'end' => 24, 'seconds' => 260]]; $collection = new RuleCollection(); $collection->set('weekday', new WeekdayRule()); $collection->set('holiday', new HolidayRule()); $builder = new ScheduleBuilder($collection); $smart = new SmartSleep($builder->buildSchedule($schedule)); $seconds = $smart->getSleepSeconds(new \DateTime()); echo sprintf('Sleep %s s.' . PHP_EOL, $seconds);
public function testGetSleepSeconds() { $this->schedule->expects($this->once())->method('getMatchedRule')->with($this->time)->will($this->returnValue($this->rule)); $this->rule->expects($this->once())->method('getSeconds')->will($this->returnValue(10)); $this->assertEquals(10, $this->smart_sleep->getSleepSeconds($this->time)); }