compareIterator.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. // Copyright (C) 2018 Peter Wong. All rights reserved.
  2. // This code is governed by the BSD license found in the LICENSE file.
  3. /*---
  4. description: Compare the values of an iterator with an array of expected values
  5. ---*/
  6. // Example:
  7. //
  8. // function* numbers() {
  9. // yield 1;
  10. // yield 2;
  11. // yield 3;
  12. // }
  13. //
  14. // compareIterator(numbers(), [
  15. // v => assert.sameValue(v, 1),
  16. // v => assert.sameValue(v, 2),
  17. // v => assert.sameValue(v, 3),
  18. // ]);
  19. //
  20. assert.compareIterator = function(iter, validators, message) {
  21. message = message || '';
  22. var i, result;
  23. for (i = 0; i < validators.length; i++) {
  24. result = iter.next();
  25. assert(!result.done, 'Expected ' + i + ' values(s). Instead iterator only produced ' + (i - 1) + ' value(s). ' + message);
  26. validators[i](result.value);
  27. }
  28. result = iter.next();
  29. assert(result.done, 'Expected only ' + i + ' values(s). Instead iterator produced more. ' + message);
  30. assert.sameValue(result.value, undefined, 'Expected value of `undefined` when iterator completes. ' + message);
  31. }