Files
jasmine/src/core/asymmetric_equality/SetContaining.js
Steve Gravrock f12f4395f0 Redesigned moudule system
* Top level private APIs (e.g. jasmine.private.whatever) are no longer
  exposed
* jasmineRequire is no longer exposed
* core is self-booting
* Globals are automatically created in browsers. (They can subsequently
  be removed by user code if desired.)
* Globals are *not* automatically created in Node. An installGlobals
  function is exported instead. The jasmine package calls installGlobals
  unless configured not to do so.
* In Node, the same instance is returned each time jasmine-core is
  imported. A reset function is exported. It effectively resets all state
  by discarding the env and creating a new one. This allows mulitple
  sequential runs within the same process to be independent of each
  other, but does not allow multiple concurrent runs. (That probably never
  worked anyway.)

Fixes #2094
2026-02-15 20:16:45 -08:00

46 lines
1.1 KiB
JavaScript

getJasmineRequireObj().SetContaining = function(j$, private$) {
'use strict';
function SetContaining(sample) {
if (!private$.isSet(sample)) {
throw new Error(
'You must provide a set to `setContaining`, not ' +
private$.basicPrettyPrinter(sample)
);
}
this.sample = sample;
}
SetContaining.prototype.asymmetricMatch = function(other, matchersUtil) {
if (!private$.isSet(other)) {
return false;
}
for (const item of this.sample) {
// for each item in `sample` there should be at least one matching item in `other`
// (not using `matchersUtil.contains` because it compares set members by reference,
// not by deep value equality)
let hasMatch = false;
for (const oItem of other) {
if (matchersUtil.equals(oItem, item)) {
hasMatch = true;
break;
}
}
if (!hasMatch) {
return false;
}
}
return true;
};
SetContaining.prototype.jasmineToString = function(pp) {
return '<jasmine.setContaining(' + pp(this.sample) + ')>';
};
return SetContaining;
};