Path: blob/master/src/infrastructure/util/__tests__/PhabricatorSlugTestCase.php
12242 views
<?php12final class PhabricatorSlugTestCase extends PhabricatorTestCase {34public function testSlugNormalization() {5$slugs = array(6'' => '/',7'/' => '/',8'//' => '/',9'&&&' => '_/',10'/derp/' => 'derp/',11'derp' => 'derp/',12'derp//derp' => 'derp/derp/',13'DERP//DERP' => 'derp/derp/',14'a B c' => 'a_b_c/',15'-1~2.3abcd' => '-1~2.3abcd/',16"T\x00O\x00D\x00O" => 't_o_d_o/',17'x#%&+=\\?<> y' => 'x_y/',18"\xE2\x98\x83" => "\xE2\x98\x83/",19'..' => 'dotdot/',20'../' => 'dotdot/',21'/../' => 'dotdot/',22'a/b' => 'a/b/',23'a//b' => 'a/b/',24'a/../b/' => 'a/dotdot/b/',25'/../a' => 'dotdot/a/',26'../a' => 'dotdot/a/',27'a/..' => 'a/dotdot/',28'a/../' => 'a/dotdot/',29'a?' => 'a/',30'??' => '_/',31'a/?' => 'a/_/',32'??/a/??' => '_/a/_/',33'a/??/c' => 'a/_/c/',34'a/?b/c' => 'a/b/c/',35'a/b?/c' => 'a/b/c/',36'a - b' => 'a_-_b/',37'a[b]' => 'a_b/',38'ab!' => 'ab!/',39);4041foreach ($slugs as $slug => $normal) {42$this->assertEqual(43$normal,44PhabricatorSlug::normalize($slug),45pht("Normalization of '%s'", $slug));46}47}4849public function testProjectSlugs() {50$slugs = array(51'a:b' => 'a_b',52'a!b' => 'a_b',53'a - b' => 'a_-_b',54'' => '',55'Demonology: HSA (Hexes, Signs, Alchemy)' =>56'demonology_hsa_hexes_signs_alchemy',57);5859foreach ($slugs as $slug => $normal) {60$this->assertEqual(61$normal,62PhabricatorSlug::normalizeProjectSlug($slug),63pht('Hashtag normalization of "%s"', $slug));64}65}6667public function testSlugAncestry() {68$slugs = array(69'/' => array(),70'pokemon/' => array('/'),71'pokemon/squirtle/' => array('/', 'pokemon/'),72);7374foreach ($slugs as $slug => $ancestry) {75$this->assertEqual(76$ancestry,77PhabricatorSlug::getAncestry($slug),78pht("Ancestry of '%s'", $slug));79}80}8182public function testSlugDepth() {83$slugs = array(84'/' => 0,85'a/' => 1,86'a/b/' => 2,87'a////b/' => 2,88);8990foreach ($slugs as $slug => $depth) {91$this->assertEqual(92$depth,93PhabricatorSlug::getDepth($slug),94pht("Depth of '%s'", $slug));95}96}97}9899100