interleave-contexts.tap.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. 'use strict';
  2. var cls = require('../context.js')
  3. , test = require('tap').test
  4. ;
  5. function cleanNamespace(name){
  6. if (cls.getNamespace(name)) cls.destroyNamespace(name);
  7. return cls.createNamespace(name);
  8. }
  9. test("interleaved contexts", function (t) {
  10. t.plan(3);
  11. t.test("interleaving with run", function (t) {
  12. t.plan(2);
  13. var ns = cleanNamespace('test');
  14. var ctx = ns.createContext();
  15. ns.enter(ctx);
  16. ns.run(function () {
  17. t.equal(ns._set.length, 2, "2 contexts in the active set");
  18. t.doesNotThrow(function () { ns.exit(ctx); });
  19. });
  20. });
  21. t.test("entering and exiting staggered", function (t) {
  22. t.plan(4);
  23. var ns = cleanNamespace('test');
  24. var ctx1 = ns.createContext();
  25. var ctx2 = ns.createContext();
  26. t.doesNotThrow(function () { ns.enter(ctx1); });
  27. t.doesNotThrow(function () { ns.enter(ctx2); });
  28. t.doesNotThrow(function () { ns.exit(ctx1); });
  29. t.doesNotThrow(function () { ns.exit(ctx2); });
  30. });
  31. t.test("creating, entering and exiting staggered", function (t) {
  32. t.plan(4);
  33. var ns = cleanNamespace('test');
  34. var ctx1 = ns.createContext();
  35. t.doesNotThrow(function () { ns.enter(ctx1); });
  36. var ctx2 = ns.createContext();
  37. t.doesNotThrow(function () { ns.enter(ctx2); });
  38. t.doesNotThrow(function () { ns.exit(ctx1); });
  39. t.doesNotThrow(function () { ns.exit(ctx2); });
  40. });
  41. });