public function testCollection()
 {
     $obj = new Collection('http://www.website.com/api/1.0/item/1');
     $control = '{"collection":{"version":"1.0","href":"http:\\/\\/www.website.com\\/api\\/1.0\\/item\\/1"}}';
     $this->assertSame($control, (string) $obj);
     $obj->addLink(new Link('http://www.website.com/api/1.0/item/1', 'alternate', 'view', 'link', 'View on website'));
     $obj->addLink(new Link('http://alt.website.com/api/1.0/item/17', 'alternate', 'view', 'link', 'View on website2'));
     $control = '{"collection":{"version":"1.0","href":"http:\\/\\/www.website.com\\/api\\/1.0\\/item\\/1","links":[{"href":"http:\\/\\/www.website.com\\/api\\/1.0\\/item\\/1","rel":"alternate","name":"view","render":"link","prompt":"View on website"},{"href":"http:\\/\\/alt.website.com\\/api\\/1.0\\/item\\/17","rel":"alternate","name":"view","render":"link","prompt":"View on website2"}]}}';
     $this->assertSame($control, (string) $obj);
     $obj->addItem(new Item('http://www.website.com/api/1.0/person/1', array(new Data('first', 'Clark', 'First Name'), new Data('last', 'Kent', 'Last Name'), new Data('age', 39, 'Age'), new Data('color', 'black'))));
     $obj->addItem(new Item('http://www.website.com/api/1.0/person/2', array(new Data('first', 'Louis', 'First Name'), new Data('last', 'Lane', 'Last Name'), new Data('age', 36, 'Age'), new Data('color', 'brown'))));
     $control = '{"collection":{"version":"1.0","href":"http:\\/\\/www.website.com\\/api\\/1.0\\/item\\/1","links":[{"href":"http:\\/\\/www.website.com\\/api\\/1.0\\/item\\/1","rel":"alternate","name":"view","render":"link","prompt":"View on website"},{"href":"http:\\/\\/alt.website.com\\/api\\/1.0\\/item\\/17","rel":"alternate","name":"view","render":"link","prompt":"View on website2"}],"items":[{"href":"http:\\/\\/www.website.com\\/api\\/1.0\\/person\\/1","data":[{"name":"first","prompt":"First Name","value":"Clark"},{"name":"last","prompt":"Last Name","value":"Kent"},{"name":"age","prompt":"Age","value":39},{"name":"color","value":"black"}]},{"href":"http:\\/\\/www.website.com\\/api\\/1.0\\/person\\/2","data":[{"name":"first","prompt":"First Name","value":"Louis"},{"name":"last","prompt":"Last Name","value":"Lane"},{"name":"age","prompt":"Age","value":36},{"name":"color","value":"brown"}]}]}}';
     $this->assertSame($control, (string) $obj);
     $obj->setQueries(array(new Query('http://example.org/search', array(new Data('search', '')), 'search', 'Enter search string'), new Query('http://example.org/find', array(new Data('find', '')), 'find', 'Enter find string')));
     $control = '{"collection":{"version":"1.0","href":"http:\\/\\/www.website.com\\/api\\/1.0\\/item\\/1","links":[{"href":"http:\\/\\/www.website.com\\/api\\/1.0\\/item\\/1","rel":"alternate","name":"view","render":"link","prompt":"View on website"},{"href":"http:\\/\\/alt.website.com\\/api\\/1.0\\/item\\/17","rel":"alternate","name":"view","render":"link","prompt":"View on website2"}],"items":[{"href":"http:\\/\\/www.website.com\\/api\\/1.0\\/person\\/1","data":[{"name":"first","prompt":"First Name","value":"Clark"},{"name":"last","prompt":"Last Name","value":"Kent"},{"name":"age","prompt":"Age","value":39},{"name":"color","value":"black"}]},{"href":"http:\\/\\/www.website.com\\/api\\/1.0\\/person\\/2","data":[{"name":"first","prompt":"First Name","value":"Louis"},{"name":"last","prompt":"Last Name","value":"Lane"},{"name":"age","prompt":"Age","value":36},{"name":"color","value":"brown"}]}],"queries":[{"href":"http:\\/\\/example.org\\/search","rel":"search","prompt":"Enter search string","data":[{"name":"search","value":""}]},{"href":"http:\\/\\/example.org\\/find","rel":"find","prompt":"Enter find string","data":[{"name":"find","value":""}]}]}}';
     $this->assertSame($control, (string) $obj);
     $obj->setTemplate(new Template(array(new Data('first', '', 'First Name'), new Data('last', '', 'Last Name'), new Data('age', '', 'Age'), new Data('color', ''))));
     $control = '{"collection":{"version":"1.0","href":"http:\\/\\/www.website.com\\/api\\/1.0\\/item\\/1","links":[{"href":"http:\\/\\/www.website.com\\/api\\/1.0\\/item\\/1","rel":"alternate","name":"view","render":"link","prompt":"View on website"},{"href":"http:\\/\\/alt.website.com\\/api\\/1.0\\/item\\/17","rel":"alternate","name":"view","render":"link","prompt":"View on website2"}],"items":[{"href":"http:\\/\\/www.website.com\\/api\\/1.0\\/person\\/1","data":[{"name":"first","prompt":"First Name","value":"Clark"},{"name":"last","prompt":"Last Name","value":"Kent"},{"name":"age","prompt":"Age","value":39},{"name":"color","value":"black"}]},{"href":"http:\\/\\/www.website.com\\/api\\/1.0\\/person\\/2","data":[{"name":"first","prompt":"First Name","value":"Louis"},{"name":"last","prompt":"Last Name","value":"Lane"},{"name":"age","prompt":"Age","value":36},{"name":"color","value":"brown"}]}],"queries":[{"href":"http:\\/\\/example.org\\/search","rel":"search","prompt":"Enter search string","data":[{"name":"search","value":""}]},{"href":"http:\\/\\/example.org\\/find","rel":"find","prompt":"Enter find string","data":[{"name":"find","value":""}]}],"template":{"data":[{"name":"first","prompt":"First Name","value":""},{"name":"last","prompt":"Last Name","value":""},{"name":"age","prompt":"Age","value":""},{"name":"color","value":""}]}}}';
     $this->assertSame($control, (string) $obj);
 }