public function testCheckboxGroup() { // Setup some country codes, and whether they should be checked. $countries = ['US' => false, 'GB' => true, 'FR' => true]; $form = new Form(); $countryCheckboxes = $form->addCheckboxGroup('countries'); foreach ($countries as $code => $checked) { $countryCheckboxes->addCheckbox()->setValue($code); } try { $form->populate(['countries' => 'US']); $this->fail('Should complain that CheckboxGroup does not accept a string'); } catch (\InvalidArgumentException $e) { // Works as expected! } $this->assertTrue($form->populate(['countries' => array_keys($countries, true)])->isValid()); foreach ($countryCheckboxes->getElements() as $checkbox) { $shouldBeChecked = $countries[$checkbox->getValue()]; $this->assertEquals($checkbox->isChecked(), $shouldBeChecked); } }