@@ -96,20 +96,53 @@ public function testPrepend() {
96
96
}
97
97
98
98
public function testSlice () {
99
- $ name = new Name ('foo\bar ' );
100
- $ this ->assertEquals (new Name ('foo\bar ' ), $ name ->slice (0 ));
101
- $ this ->assertEquals (new Name ('bar ' ), $ name ->slice (1 ));
102
- $ this ->assertEquals (new Name ([]), $ name ->slice (2 ));
99
+ $ name = new Name ('foo\bar\baz ' );
100
+ $ this ->assertEquals (new Name ('foo\bar\baz ' ), $ name ->slice (0 ));
101
+ $ this ->assertEquals (new Name ('bar\baz ' ), $ name ->slice (1 ));
102
+ $ this ->assertEquals (new Name ([]), $ name ->slice (3 ));
103
+ $ this ->assertEquals (new Name ('foo\bar\baz ' ), $ name ->slice (-3 ));
104
+ $ this ->assertEquals (new Name ('bar\baz ' ), $ name ->slice (-2 ));
105
+ $ this ->assertEquals (new Name ('foo\bar ' ), $ name ->slice (0 , -1 ));
106
+ $ this ->assertEquals (new Name ([]), $ name ->slice (0 , -3 ));
107
+ $ this ->assertEquals (new Name ('bar ' ), $ name ->slice (1 , -1 ));
108
+ $ this ->assertEquals (new Name ([]), $ name ->slice (1 , -2 ));
109
+ $ this ->assertEquals (new Name ('bar ' ), $ name ->slice (-2 , 1 ));
110
+ $ this ->assertEquals (new Name ('bar ' ), $ name ->slice (-2 , -1 ));
111
+ $ this ->assertEquals (new Name ([]), $ name ->slice (-2 , -2 ));
103
112
}
104
113
105
114
/**
106
115
* @expectedException \OutOfBoundsException
107
116
* @expectedExceptionMessage Offset 4 is out of bounds
108
117
*/
109
- public function testSliceException () {
118
+ public function testSliceOffsetTooLarge () {
110
119
(new Name ('foo\bar\baz ' ))->slice (4 );
111
120
}
112
121
122
+ /**
123
+ * @expectedException \OutOfBoundsException
124
+ * @expectedExceptionMessage Offset -4 is out of bounds
125
+ */
126
+ public function testSliceOffsetTooSmall () {
127
+ (new Name ('foo\bar\baz ' ))->slice (-4 );
128
+ }
129
+
130
+ /**
131
+ * @expectedException \OutOfBoundsException
132
+ * @expectedExceptionMessage Length 4 is out of bounds
133
+ */
134
+ public function testSliceLengthTooLarge () {
135
+ (new Name ('foo\bar\baz ' ))->slice (0 , 4 );
136
+ }
137
+
138
+ /**
139
+ * @expectedException \OutOfBoundsException
140
+ * @expectedExceptionMessage Length -4 is out of bounds
141
+ */
142
+ public function testSliceLengthTooSmall () {
143
+ (new Name ('foo\bar\baz ' ))->slice (0 , -4 );
144
+ }
145
+
113
146
public function testConcat () {
114
147
$ this ->assertEquals (new Name ('foo\bar\baz ' ), Name::concat ('foo ' , 'bar\baz ' ));
115
148
$ this ->assertEquals (
0 commit comments