Changeset View
Changeset View
Standalone View
Standalone View
src/parser/__tests__/PhutilEditorConfigTestCase.php
- This file was added.
<?php | |||||
final class PhutilEditorConfigTestCase extends PhutilTestCase { | |||||
public function testGetProperty() { | |||||
$parser = new PhutilEditorConfig($this->getTestFile()); | |||||
$tests = array( | |||||
'default' => array( | |||||
array( | |||||
'indent_style' => 'space', | |||||
'indent_size' => 2, | |||||
'charset' => 'utf-8', | |||||
'trim_trailing_whitespace' => true, | |||||
'insert_final_newline' => true, | |||||
), | |||||
array(), | |||||
), | |||||
'file' => array( | |||||
array( | |||||
'indent_style' => 'space', | |||||
'indent_size' => 3, | |||||
'charset' => 'utf-8', | |||||
'trim_trailing_whitespace' => true, | |||||
'insert_final_newline' => true, | |||||
), | |||||
array(), | |||||
), | |||||
'file.txt' => array( | |||||
array( | |||||
'indent_style' => 'space', | |||||
'indent_size' => 3, | |||||
'charset' => 'latin1', | |||||
'trim_trailing_whitespace' => true, | |||||
'insert_final_newline' => true, | |||||
), | |||||
array(), | |||||
), | |||||
'externals/README' => array( | |||||
array( | |||||
'indent_style' => null, | |||||
'indent_size' => null, | |||||
'charset' => 'utf-8', | |||||
'trim_trailing_whitespace' => false, | |||||
'insert_final_newline' => false, | |||||
), | |||||
array(), | |||||
), | |||||
'subdir/file' => array( | |||||
array( | |||||
'indent_style' => 'tab', | |||||
'indent_size' => 3, | |||||
'charset' => 'utf-8-bom', | |||||
'trim_trailing_whitespace' => true, | |||||
'insert_final_newline' => true, | |||||
), | |||||
array(), | |||||
), | |||||
'empty/file' => array( | |||||
array(), | |||||
array( | |||||
'indent_style' => null, | |||||
'indent_size' => null, | |||||
'charset' => null, | |||||
'trim_trailing_whitespace' => null, | |||||
'insert_final_newline' => null, | |||||
), | |||||
), | |||||
); | |||||
foreach ($tests as $path => $expected) { | |||||
list($properties, $property) = $expected; | |||||
$property = array_merge($properties, $property); | |||||
$this->assertEqual( | |||||
$properties, | |||||
$parser->getProperties($this->getTestFile($path))); | |||||
foreach ($property as $key => $value) { | |||||
$this->assertEqual( | |||||
$value, | |||||
$parser->getProperty($this->getTestFile($path), $key)); | |||||
} | |||||
} | |||||
$invalid_properties = array( | |||||
'invalid', | |||||
); | |||||
foreach ($invalid_properties as $invalid_property) { | |||||
$caught = null; | |||||
try { | |||||
$parser->getProperty('', $invalid_property); | |||||
} catch (Exception $ex) { | |||||
$caught = $ex; | |||||
} | |||||
$this->assertTrue($caught instanceof InvalidArgumentException); | |||||
} | |||||
} | |||||
private function getTestFile($path = null) { | |||||
return dirname(__FILE__).'/editorconfig/'.$path; | |||||
} | |||||
} |