fix inconsistent response from twig_slice
authorRhodri Pugh <rod@pu-gh.com>
Mon, 8 Sep 2014 18:35:00 +0000 (19:35 +0100)
committerFabien Potencier <fabien.potencier@gmail.com>
Tue, 30 Sep 2014 17:40:27 +0000 (19:40 +0200)
lib/Twig/Extension/Core.php
test/Twig/Tests/Extension/CoreTest.php

index ef36576..876d5c6 100644 (file)
@@ -705,7 +705,7 @@ function twig_slice(Twig_Environment $env, $item, $start, $length = null, $prese
         return (string) mb_substr($item, $start, null === $length ? mb_strlen($item, $charset) - $start : $length, $charset);
     }
 
-    return null === $length ? substr($item, $start) : substr($item, $start, $length);
+    return (string) (null === $length ? substr($item, $start) : substr($item, $start, $length));
 }
 
 /**
index 5f3da18..15a5de4 100644 (file)
@@ -130,6 +130,24 @@ class Twig_Tests_Extension_CoreTest extends PHPUnit_Framework_TestCase
     {
         twig_escape_filter(new Twig_Environment(), 'foo', 'bar');
     }
+
+    public function testTwigFirst()
+    {
+        $twig = new Twig_Environment();
+        $this->assertEquals('a',  twig_first($twig, 'abc'));
+        $this->assertEquals(1,  twig_first($twig, array(1, 2, 3)));
+        $this->assertEquals('', twig_first($twig, null));
+        $this->assertEquals('', twig_first($twig, ''));
+    }
+
+    public function testTwigLast()
+    {
+        $twig = new Twig_Environment();
+        $this->assertEquals('c',  twig_last($twig, 'abc'));
+        $this->assertEquals(3,  twig_last($twig, array(1, 2, 3)));
+        $this->assertEquals('', twig_last($twig, null));
+        $this->assertEquals('', twig_last($twig, ''));
+    }
 }
 
 function foo_escaper_for_test(Twig_Environment $env, $string, $charset)