public function testGetAndSet()
{
$data = ['config1' => 1, 'db' => ['dsn' => 'mysql:123', 'user' => 'aoi_miyazaki']];
$obj = new ConcreteResource2($data);
$this->assertEquals(1, $obj->getResource('config1'));
$this->assertSame($data, $obj->getResource(), 'get all');
$this->assertSame($data, $obj->getResourceData(), 'get all');
$this->assertEquals('aoi_miyazaki', $obj->getResource('db.user'));
$this->assertSame(['dsn' => 'mysql:123', 'user' => 'aoi_miyazaki'], $obj->getResource('db'));
$this->assertEquals('aoi-no-password', $obj->getResource('db.password', 'aoi-no-password'), 'default');
$this->assertEquals(null, $obj->getResource('db.user.name'));
// set
$obj->setResource('config1', 2);
$this->assertEquals(2, $obj->getResource('config1'));
$obj->setResource('db.user', 'aya_ueto');
$this->assertEquals('aya_ueto', $obj->getResource('db.user'));
// new value
$obj->setResource('hoge.fuga.piyo', 'hogera');
$this->assertEquals('hogera', $obj->getResource('hoge.fuga.piyo'));
$this->assertSame(['piyo' => 'hogera'], $obj->getResource('hoge.fuga'));
$this->assertSame(['fuga' => ['piyo' => 'hogera']], $obj->getResource('hoge'));
// non array new value
$obj->setResource('non_array.value', 100);
$this->assertEquals(100, $obj->getResource('non_array.value'));
// clear
$obj->clearResource();
$this->assertSame([], $obj->getResourceData());
$this->assertEquals(null, $obj->getResource('config1'));
}