public function testRegisteringTypeDataModules()
{
if ($this->typeSystem instanceof PhpTypeSystem) {
$typeDataModule = new TypeDataModule([__CLASS__ => ['methods' => ['assertEquals' => INativeType::TYPE_NULL]]], ['get_defined_functions' => INativeType::TYPE_INT]);
$this->assertNotContains($typeDataModule, $this->typeSystem->getTypeDataModules());
$this->typeSystem->registerTypeDataModule($typeDataModule);
$this->assertContains($typeDataModule, $this->typeSystem->getTypeDataModules());
$this->assertEqualsNativeType(INativeType::TYPE_NULL, $this->typeSystem->getObjectType(__CLASS__)->getMethod(O\Expression::methodCall(O\Expression::value($this), O\Expression::value('assertEquals')))->getReturnType());
$this->assertEqualsNativeType(INativeType::TYPE_INT, $this->typeSystem->getFunction('get_defined_functions')->getReturnType());
}
}