2018-03-18 04:48:31 +01:00
|
|
|
// Copyright (C) 2018 Peter Wong. All rights reserved.
|
|
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
|
|
description: Compare the values of an iterator with an array of expected values
|
2019-09-25 02:22:26 +02:00
|
|
|
defines: [assert.compareIterator]
|
2018-03-18 04:48:31 +01:00
|
|
|
---*/
|
|
|
|
|
|
|
|
// Example:
|
|
|
|
//
|
|
|
|
// function* numbers() {
|
|
|
|
// yield 1;
|
|
|
|
// yield 2;
|
|
|
|
// yield 3;
|
|
|
|
// }
|
|
|
|
//
|
2022-11-04 10:20:45 +01:00
|
|
|
// assert.compareIterator(numbers(), [
|
2018-03-18 04:48:31 +01:00
|
|
|
// v => assert.sameValue(v, 1),
|
|
|
|
// v => assert.sameValue(v, 2),
|
|
|
|
// v => assert.sameValue(v, 3),
|
|
|
|
// ]);
|
|
|
|
//
|
|
|
|
assert.compareIterator = function(iter, validators, message) {
|
|
|
|
message = message || '';
|
|
|
|
|
|
|
|
var i, result;
|
|
|
|
for (i = 0; i < validators.length; i++) {
|
|
|
|
result = iter.next();
|
|
|
|
assert(!result.done, 'Expected ' + i + ' values(s). Instead iterator only produced ' + (i - 1) + ' value(s). ' + message);
|
|
|
|
validators[i](result.value);
|
|
|
|
}
|
|
|
|
|
|
|
|
result = iter.next();
|
|
|
|
assert(result.done, 'Expected only ' + i + ' values(s). Instead iterator produced more. ' + message);
|
|
|
|
assert.sameValue(result.value, undefined, 'Expected value of `undefined` when iterator completes. ' + message);
|
|
|
|
}
|