1<?php
2/**
3 * @category   Horde
4 * @package    Icalendar
5 * @subpackage UnitTests
6 */
7
8/**
9 * @category   Horde
10 * @package    Icalendar
11 * @subpackage UnitTests
12 */
13class Horde_Icalendar_AttributeTest extends Horde_Test_Case
14{
15    public function testDates()
16    {
17        $ical = new Horde_Icalendar();
18        $ical->parsevCalendar(file_get_contents(__DIR__ . '/fixtures/date.ics'));
19        $this->assertEquals(
20            0,
21            $ical->getComponent(0)->getAttribute('DTSTART')
22        );
23        $this->assertEquals(
24            'BORKED',
25            $ical->getComponent(0)->getAttribute('DTEND')
26        );
27    }
28
29    public function testOrg()
30    {
31        $ical = new Horde_Icalendar();
32        $ical->parsevCalendar(file_get_contents(__DIR__ . '/fixtures/org.vcf'));
33        $this->assertEquals(
34            array(
35                'My Organization',
36                'My Unit'
37            ),
38            $ical->getComponent(0)->getAttributeValues('ORG')
39        );
40    }
41
42    public function testGeo()
43    {
44        $ical = new Horde_Icalendar();
45        $ical->parsevCalendar(file_get_contents(__DIR__ . '/fixtures/geo1.vcf'));
46        $this->assertEquals(
47            array(
48                'latitude' => -17.87,
49                'longitude' => 37.24,
50            ),
51            $ical->getComponent(0)->getAttribute('GEO')
52        );
53        $ical->parsevCalendar(file_get_contents(__DIR__ . '/fixtures/geo2.vcf'));
54        $this->assertEquals(
55            array(
56                'latitude' => 37.386013,
57                'longitude' => -122.082932,
58            ),
59            $ical->getComponent(0)->getAttribute('GEO')
60        );
61    }
62
63    public function testAddress()
64    {
65        $ical = new Horde_Icalendar();
66        $ical->parsevCalendar(file_get_contents(__DIR__ . '/fixtures/contact.vcf'));
67        $this->assertEquals(array(
68                '',
69                '',
70                '123 Main St',
71                'Smallville',
72                'NJ',
73                '08111',
74                'United States'
75            ),
76            $ical->getComponent(0)->getAttributeValues('ADR')
77        );
78        $this->assertEquals(
79            "123 Main St\nSmallville, NJ 08111",
80            $ical->getComponent(0)->getAttribute('LABEL')
81        );
82    }
83
84    public function testIgnoringMultipleAttributeValues()
85    {
86        $ical = new Horde_Icalendar();
87        $ical->parsevCalendar(
88            file_get_contents(__DIR__ . '/fixtures/multiple-summary.ics')
89        );
90
91        $result = $ical->getComponent(0)->getAttributeSingle('SUMMARY');
92
93        $this->assertInternalType('string', $result);
94
95        $this->assertEquals(
96            'Summary 1',
97            $result
98        );
99    }
100
101}
102