Source: eval/expected/ExpectedMatching.js

import {AbstractExpected} from './AbstractExpected.js';

/**
 * A set of rules that define the expected result of a match test case.
 * All nodes are addressed by their ID, i.e. their position in the pre-order
 * traversal of a process tree.
 */
export class ExpectedMatching extends AbstractExpected {
  /**
   * A list of required matches.
   * @type {Array<[Number, Number]>}
   * @const
   */
  matches;
  /**
   * A list of forbidden matches.
   * @type {Array<[Number, Number]>}
   * @const
   */
  notMatches;
  /**
   * A list of old nodes that should be matched.
   * @type {Array<Number>}
   * @const
   */
  oldMatched;
  /**
   * A list of old nodes that should not be matched.
   * @type {Array<Number>}
   * @const
   */
  notOldMatched;
  /**
   * A list of new nodes that should be matched.
   * @type {Array<Number>}
   * @const
   */
  newMatched;
  /**
   * A list of new nodes that should not be matched.
   * @type {Array<Number>}
   * @const
   */
  notNewMatched;

  /**
   * Create an empty ExpectedMatch instance.
   * The properties are are set through Object.assign() using an
   * expected.json file found in a match test case directory.
   */
  constructor() {
    super();
    this.matches = [];
    this.notMatches = [];
    this.oldMatched = [];
    this.notOldMatched = [];
    this.newMatched = [];
    this.notNewMatched = [];
  }
}