<?php

namespace Sabre\VObject\Component;

use DateTimeImmutable;
use DateTimeZone;
use Sabre\VObject\Reader;

/**
 * We use `RFCxxx` has a placeholder for the
 * https://tools.ietf.org/html/draft-daboo-calendar-availability-05 name.
 */
class AvailableTest extends \PHPUnit_Framework_TestCase {

    function testAvailableComponent() {

        $vcal = <<<VCAL
BEGIN:VCALENDAR
BEGIN:AVAILABLE
END:AVAILABLE
END:VCALENDAR
VCAL;
        $document = Reader::read($vcal);
        $this->assertInstanceOf(__NAMESPACE__ . '\Available', $document->AVAILABLE);

    }

    function testGetEffectiveStartEnd() {

        $vcal = <<<VCAL
BEGIN:VCALENDAR
BEGIN:AVAILABLE
DTSTART:20150717T162200Z
DTEND:20150717T172200Z
END:AVAILABLE
END:VCALENDAR
VCAL;

        $document = Reader::read($vcal);
        $tz = new DateTimeZone('UTC');
        $this->assertEquals(
            [
                new DateTimeImmutable('2015-07-17 16:22:00', $tz),
                new DateTimeImmutable('2015-07-17 17:22:00', $tz),
            ],
            $document->AVAILABLE->getEffectiveStartEnd()
        );

    }

    function testGetEffectiveStartEndDuration() {

        $vcal = <<<VCAL
BEGIN:VCALENDAR
BEGIN:AVAILABLE
DTSTART:20150717T162200Z
DURATION:PT1H
END:AVAILABLE
END:VCALENDAR
VCAL;

        $document = Reader::read($vcal);
        $tz = new DateTimeZone('UTC');
        $this->assertEquals(
            [
                new DateTimeImmutable('2015-07-17 16:22:00', $tz),
                new DateTimeImmutable('2015-07-17 17:22:00', $tz),
            ],
            $document->AVAILABLE->getEffectiveStartEnd()
        );

    }
}