/**
  * Name a variant based on a format with arbitrary parameters
  *
  * @param string $format The format name.
  * @param mixed $arg,... Additional arguments
  * @return string
  * @throws InvalidArgumentException
  */
 public function variantName($format, $arg = null)
 {
     $args = func_get_args();
     array_shift($args);
     return $format . Convert::base64url_encode($args);
 }
 public function testCacheFilename()
 {
     $image = $this->objFromFixture('SilverStripe\\Assets\\Image', 'imageWithoutTitle');
     $imageFirst = $image->Pad(200, 200, 'CCCCCC');
     $imageFilename = $imageFirst->getURL();
     // Encoding of the arguments is duplicated from cacheFilename
     $neededPart = 'Pad' . Convert::base64url_encode(array(200, 200, 'CCCCCC'));
     $this->assertContains($neededPart, $imageFilename, 'Filename for cached image is correctly generated');
 }
 /**
  * Tests {@link Convert::base64url_encode()} and {@link Convert::base64url_decode()}
  */
 public function testBase64url()
 {
     $data = 'Wëīrð characters ☺ such as ¤Ø¶÷╬';
     // This requires this test file to have UTF-8 character encoding
     $this->assertEquals($data, Convert::base64url_decode(Convert::base64url_encode($data)));
     $data = 654.423;
     $this->assertEquals($data, Convert::base64url_decode(Convert::base64url_encode($data)));
     $data = true;
     $this->assertEquals($data, Convert::base64url_decode(Convert::base64url_encode($data)));
     $data = array('simple', 'array', '¤Ø¶÷╬');
     $this->assertEquals($data, Convert::base64url_decode(Convert::base64url_encode($data)));
     $data = array('a' => 'associative', 4 => 'array', '☺' => '¤Ø¶÷╬');
     $this->assertEquals($data, Convert::base64url_decode(Convert::base64url_encode($data)));
 }