for-of.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. 'use strict';
  2. var ArrayIterator = require('../array')
  3. , slice = Array.prototype.slice;
  4. module.exports = function (t, a) {
  5. var i = 0, x = ['raz', 'dwa', 'trzy'], y = {}, called = 0;
  6. t(x, function () {
  7. a.deep(slice.call(arguments, 0, 1), [x[i]], "Array " + i + "#");
  8. a(this, y, "Array: context: " + (i++) + "#");
  9. }, y);
  10. i = 0;
  11. t((function () { return arguments; }('raz', 'dwa', 'trzy')), function () {
  12. a.deep(slice.call(arguments, 0, 1), [x[i]], "Arguments" + i + "#");
  13. a(this, y, "Arguments: context: " + (i++) + "#");
  14. }, y);
  15. i = 0;
  16. t(x = 'foo', function () {
  17. a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
  18. a(this, y, "Regular String: context: " + (i++) + "#");
  19. }, y);
  20. i = 0;
  21. x = ['r', '💩', 'z'];
  22. t('r💩z', function () {
  23. a.deep(slice.call(arguments, 0, 1), [x[i]], "String " + i + "#");
  24. a(this, y, "Unicode String: context: " + (i++) + "#");
  25. }, y);
  26. i = 0;
  27. t(new ArrayIterator(x), function () {
  28. a.deep(slice.call(arguments, 0, 1), [x[i]], "Iterator " + i + "#");
  29. a(this, y, "Iterator: context: " + (i++) + "#");
  30. }, y);
  31. t(x = ['raz', 'dwa', 'trzy'], function (value, doBreak) {
  32. ++called;
  33. return doBreak();
  34. });
  35. a(called, 1, "Break");
  36. };