public function testFindBinary() { $array = CArray::fromElements("oua", "vnf", "fnf", "aod", "tvi", "nbt", "jny", "vor", "rfd", "cvm", "hyh", "kng", "ggo", "uea", "hkb", "qbk", "xla", "uod", "jzi", "chw", "ssy", "olr", "bzl", "oux", "ltk", "bah", "khu", "msr", "pqv", "npb", "mtb", "eku", "vcv", "vbv", "wuo", "lrw", "bkw", "ezz", "jtc", "dwk", "dsq", "kzu", "oey", "vbi", "seh", "klz", "asj", "gzg", "ccs", "qop"); $arrayOrig = CArray::makeCopy($array); $len = CArray::length($arrayOrig); // Sort the array first. CArray::sort($array, CComparator::ORDER_ASC); // Using the default comparators. for ($i = 0; $i < $len; $i += 3) { $string = $arrayOrig[$i]; $foundAtPos0; CArray::find($array, $string, CComparator::EQUALITY, $foundAtPos0); $foundAtPos1; $found = CArray::findBinary($array, $string, CComparator::ORDER_ASC, $foundAtPos1); $this->assertTrue($found); $this->assertTrue($foundAtPos1 == $foundAtPos0); } // Using custom comparators. $comparatorEquality = function ($string0, $string1) { return CString::toLowerCase($string0) === CString::toLowerCase($string1); }; $comparatorOrderAsc = function ($string0, $string1) { return CString::compare(CString::toLowerCase($string0), CString::toLowerCase($string1)); }; for ($i = 0; $i < $len; $i += 5) { $string = CString::toUpperCase($arrayOrig[$i]); $foundAtPos0; CArray::find($array, $string, $comparatorEquality, $foundAtPos0); $foundAtPos1; $found = CArray::findBinary($array, $string, $comparatorOrderAsc, $foundAtPos1); $this->assertTrue($found); $this->assertTrue($foundAtPos1 == $foundAtPos0); } // Special cases. $array = CArray::fromElements("a", "b"); $found = CArray::findBinary($array, "a"); $this->assertTrue($found); $found = CArray::findBinary($array, "b"); $this->assertTrue($found); $found = CArray::findBinary($array, "c"); $this->assertFalse($found); $array = CArray::fromElements("a"); $found = CArray::findBinary($array, "a"); $this->assertTrue($found); $array = CArray::make(); $found = CArray::findBinary($array, "a"); $this->assertFalse($found); }