public function test_scenario4()
 {
     $data = array(array("filename" => "data/iris.csv", "expected_file" => "data/model/data_distribution_iris.txt"), array("filename" => "data/iris_sp_chars.csv", "expected_file" => "data/model/data_distribution_iris_sp_chars.txt"), array("filename" => "data/spam.csv", "expected_file" => "data/model/data_distribution_spam.txt"), array("filename" => "data/grades.csv", "expected_file" => "data/model/data_distribution_grades.txt"), array("filename" => "data/diabetes.csv", "expected_file" => "data/model/data_distribution_diabetes.txt"), array("filename" => "data/iris_missing2.csv", "expected_file" => "data/model/data_distribution_iris_missing2.txt"), array("filename" => "data/tiny_kdd.csv", "expected_file" => "data/model/data_distribution_tiny_kdd.txt"));
     foreach ($data as $item) {
         print "\nSuccessfully creating a model and check its data distribution\n";
         print "Given I create a data source uploading a " . $item["filename"] . " file\n";
         $source = self::$api->create_source($item["filename"], $options = array('name' => 'local_test_source', 'project' => self::$project->resource));
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $source->code);
         $this->assertEquals(1, $source->object->status->code);
         print "And I wait until source is ready\n";
         $resource = self::$api->_check_resource($source->resource, null, 3000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         print "And I create dataset with local source\n";
         $dataset = self::$api->create_dataset($source->resource);
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $dataset->code);
         $this->assertEquals(BigMLRequest::QUEUED, $dataset->object->status->code);
         print "And I wail until the dataset is ready\n";
         $resource = self::$api->_check_resource($dataset->resource, null, 3000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         print "And I create model\n";
         $model = self::$api->create_model($dataset->resource);
         $this->assertEquals(BigMLRequest::HTTP_CREATED, $model->code);
         print "And I wail until the model is ready " . $model->resource . "\n";
         $resource = self::$api->_check_resource($model->resource, null, 3000, 30);
         $this->assertEquals(BigMLRequest::FINISHED, $resource["status"]);
         print "And I create a local model\n";
         $local_model = new Model($model->resource, self::$api);
         $file_distribution = file_get_contents($item["expected_file"]);
         print "And I translate the tree into IF_THEN rules\n";
         $distribution = $local_model->get_data_distribution();
         $distribution_str = '';
         foreach ($distribution as $value) {
             $distribution_str = $distribution_str . "[" . $value[0] . "," . $value[1] . "]\n";
         }
         print " Then I check the output is like " . $item["expected_file"] . " expected file\n";
         $this->assertEquals($distribution_str, $file_distribution);
     }
 }