public function testMultipleSelect() { // Setup some country codes, and whether they should be checked. $countries = ['US' => false, 'GB' => true, 'FR' => true]; $form = new Form(); $select = $form->addMultipleSelect('countries'); foreach ($countries as $code => $checked) { $select->addOption($code, $code); } try { $form->populate(['countries' => 'US']); $this->fail('Should complain that MultipleSelect does not accept a string'); } catch (\InvalidArgumentException $e) { // Works as expected! } $expected = array_keys($countries, true); sort($expected); $this->assertTrue($form->populate(['countries' => $expected])->isValid()); $actual = $select->getValues(); sort($actual); $this->assertEquals($expected, $actual); }