2015-04-06 17:54:04 +02:00
|
|
|
class TestSequence is Sequence {
|
|
|
|
|
construct new() {}
|
|
|
|
|
|
|
|
|
|
iterate(iterator) {
|
|
|
|
|
if (iterator == null) return 1
|
|
|
|
|
if (iterator == 3) return false
|
|
|
|
|
return iterator + 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
iteratorValue(iterator) { iterator }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var test = TestSequence.new().take(3)
|
|
|
|
|
|
|
|
|
|
System.print(test is Sequence) // expect: true
|
|
|
|
|
System.print(test) // expect: instance of TakeSequence
|
|
|
|
|
|
2017-03-15 07:22:44 -07:00
|
|
|
// Taking 0 produces empty list.
|
2015-04-06 17:54:04 +02:00
|
|
|
System.print(test.take(0).isEmpty) // expect: true
|
|
|
|
|
|
2017-03-15 07:22:44 -07:00
|
|
|
// Taking 1 works.
|
2015-04-06 17:54:04 +02:00
|
|
|
System.print(test.take(1).toList) // expect: [1]
|
|
|
|
|
|
2017-03-15 07:22:44 -07:00
|
|
|
// Taking more than length of sequence produces whole sequence.
|
2015-04-06 17:54:04 +02:00
|
|
|
System.print(test.take(4).toList) // expect: [1, 2, 3]
|